【发布时间】:2012-02-14 14:45:40
【问题描述】:
我正在尝试调试和单步调试一个出现段错误的 Android 应用程序。我试过ndk-gdb,但运气不佳。我还提到了Android NDK Debugging,但无法调试我的应用程序。
当我尝试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.
这表明应用程序段错误更少,但我不知道如何在此处设置断点,因为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),然后我写了一个指南几个月前你可以找到here。恐怕我无法对这个问题提供更多的见解,除了检查该日志中输出的包名称与清单中的相同(但我想是的,因为它找到了数据目录和东西)
-
谢谢。看起来您使用的是 Eclipse。我正在使用命令行。我希望我不必使用 Eclipse。 :\
-
啊,是的,我没想到。原则应该是相同的——据我所知,Eclipse 只显示 gdb 输出,并为 gdb 提供正确的命令(例如,当你单击 step 按钮时)——所以不,你不需要使用它。您可以尝试关闭
LOCAL_CFLAGS中的优化(我认为是-O0),但我怀疑它会起到多大作用。您的第一个断点在应用程序中有多远? -
邪恶总裁,我无法下断点,因为程序在我得到 gdb 提示之前就退出了。
-
我终于让 Eclipse 工作了,但到目前为止还没有更多信息。
标签: android debugging android-ndk