android - 无法将 ndk-gdb 附加到 android 应用程序

标签 android gdb android-ndk

我正在尝试将 ndk-gdb 附加到我的 Android 应用程序。

我使用的是 Android-ndk-r6b,设备是 Android 2.3,Samsung Galaxy S II。

我遵循了这个例子中的所有步骤 Click here for the example

而且我还尝试了一个应用程序,当我尝试将 gdb 与另一个应用程序连接时,但冗长的显示它总是连接到第一个应用程序本身

Found package name: <1st attached package name>

我第一次尝试使用此命令启动 ndk-gdb:

 ndk-gdb --start --force --verbose

我尝试使用以下命令附加到另一个应用程序但无法成功:

ndk-gdb --launch=com.example.hellogdbserver.HelloGdbServer --force --verbose

我在第一次申请时总是遇到以下错误:

ERROR: Non-debuggable application installed on the target device.Please re-install the debuggable version!

这是我得到的完整 shell 日志

    sh-4.1$ ndk-gdb --verbose --start --force
    Android NDK installation path: /cygdrive/c/Android/android-ndk
    Using default adb command: /cygdrive/c/Android/android-sdk-windows/platform-tools/adb
    ADB version found: Android Debug Bridge version 1.0.26
    Using final ADB command: '/cygdrive/c/Android/android-sdk-windows/platform-tools/adb'
    Using auto-detected project path: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver
    Found package name: com.example.hellogdbserver
    ABIs targetted by application: armeabi
    Device API Level: 10
    Device CPU ABIs: armeabi-v7a armeabi
    Compatible device ABI: armeabi
    Found debuggable flag: true
    Found device gdbserver: /data/data/com.example.hellogdbserver/lib/gdbserver
    Using gdb setup init: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver/libs/armeabi/gdb.setup
    Using toolchain prefix: /cygdrive/c/Android/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-
    Using app out directory: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver/obj/local/armeabi
    ERROR: Could not extract package's data directory. Are you sure that
           your installed application is debuggable?
    sh-4.1$

请告诉我如何解决上述错误以及如何附加到新包。

我的手机没有root。希望这不会影响 gdb。

这也没有帮助 Link to similar problem .因为我的手机是新手机,除了当前正在开发的应用程序之外没有任何应用程序。 (只有三星手机自带的包,没有从市场上下载应用。)

感谢和问候,
S苏曼185


请通过链接Debugging native code in android app using the android ndk gdb

最佳答案

请首先确保您构建的是应用程序的可调试版本。 AndroidManifest.xml 文件应包含 android:debuggable="true"标记。

您还可以通过在 bin 目录中找到 APK 文件,解压缩它(它只是一个重命名的 ZIP 文件)并确保 lib\armeabi 文件夹包含 gdbserver 文件来检查它。

如果以上两个条件都满足,尝试在设备上手动安装包:

<android-sdk>\platform-tools\adb.exe install -r <your-package-file.APK>

请仔细观察adb.exe的输出。如果它显示错误,则可能会解释您的问题。

关于android - 无法将 ndk-gdb 附加到 android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266852/

相关文章:

linux - 当另一个库具有相同的符号时,gdb 不显示来自共享库的符号

linux - 如何在 Linux 上使用核心转储和 gdb 使用一个近似虚拟内存 (VSZ)?

process - 如何知道哪个进程(stat : T) is attached by gdb?

android - 从 SurfaceComposerClient 获取屏幕截图

java - libGDX/roboVM : How to fix "Native Library libhfscompressor.dylib already loaded in another classloader"?

java - 我可以让 SQLiteDatabase 提示缺少参数吗?

javascript - 如何在使用 manifest.json 时允许方向旋转?

android - ListView 仅显示 10 项

java - 在 Android 中从 C++ 调用 getUnicodeChar 方法

android - 如何从 Android 应用调用 OpenSSL SRP API?