我正在尝试调试并逐步浏览段落错误的Android应用程序。我试过ndk-gdb
,但运气不好。我也提到Android NDK Debugging而不能调试我的应用程序。调试Android NDK本地应用程序
当我尝试ndk-gdb --start
,我也得到:
$ ndk-gdb --start --verbose
Android NDK installation path: /opt/android-ndk-r7
Using default adb command: /opt/android-sdk-linux/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using final ADB command: '/opt/android-sdk-linux/platform-tools/adb'
Using auto-detected project path: .
Found package name: com.example.native_plasma
ABIs targetted by application: armeabi armeabi-v7a
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi-v7a
Found debuggable flag: true
Found device gdbserver: /data/data/com.example.native_plasma/lib/gdbserver
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain prefix: /opt/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi-v7a
Found data directory: '/data/data/com.example.native_plasma'
Found first launchable activity: android.app.NativeActivity
Launching activity: com.example.native_plasma/android.app.NativeActivity
## COMMAND: /opt/android-sdk-linux/platform-tools/adb shell am start -n com.example.native_plasma/android.app.NativeActivity
Starting: Intent { cmp=com.example.native_plasma/android.app.NativeActivity }
## COMMAND: /opt/android-sdk-linux/platform-tools/adb shell sleep 2
Found running PID: 0
ERROR: Could not extract PID of application on device/emulator.
Weird, this probably means one of these:
- The installed package does not match your current manifest.
- The application process was terminated.
Try using the --verbose option and look at its output for details.
这表明应用程序segfaulted更少,但我不知道怎么在这里设置一个断点,因为GDB从来没有真正给出一个提示。
我也试过这个命令:
我相信$ ../../toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-addr2line -f -e libs/armeabi/libnative-plasma.so
bedb2330
??
??:0
我有调试符号。
ndk-build -B V=1 APP_OPTIM=debug
Android.mk
在jni/
有LOCAL_CFLAGS := -g
ant debug
我也已经ndk-build NDK_DEBUG=1
但我仍然得到它看起来像我没有调试符号。
下面是堆栈跟踪的图像。到真正需要
我不知道这是否会帮助,但如果你正在寻找一些文档(这是过时的,心,因为它谈到了NDK r5b),然后几个月前我写了一篇指南,你可以在这里找到(http://www.doc.ic.ac.uk/~cb908/AndroidNDK.html)。恐怕我不能提供有关问题的更多见解,除了检查该日志中输出的软件包名称与清单中的输出名称相同外(但我认为它是,因为它找到了数据目录和内容) –
谢谢。看起来你使用Eclipse。我正在使用命令行。我希望我不必使用Eclipse。 :\ – Scott
啊,是的,我没有想到这一点。原理应该是相同的 - 据我所知,Eclipse只显示gdb输出,并给gdb提供正确的命令(例如,当你点击step按钮时) - 所以不需要,你不需要使用它。你可以尝试关闭LOCAL_CFLAGS中的优化(-O0我认为),但我怀疑它会做很多事情。第一个断点到应用程序有多远? –