我正在尝试将 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/