我有一个 C++ Android 应用程序,我正在尝试使用 ndk-gdb 进行调试。该应用程序确实使用了多个线程,但据说 ndk 的 r5 支持多个线程。另外,我什至没有达到 gdb 启动的地步。我运行命令:
ndk-gdb --start --force --verbose
然后它会为 ndk 和 sdk(或至少 adb)以及所需的 ABI 等找到正确的路径。
$ ndk-gdb --start --force --verbose
Android NDK installation path: /home/leif/eclipse/android-ndk-r5b
Using default adb command: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.26
Using final ADB command: '/home/leif/eclipse/android-sdk-linux_86/platform-tools/adb'
Using auto-detected project path: .
Found package name: net.leifandersen.mobile.android.marblemachine
ABIs targetted by application: armeabi
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
然后它查找 gdb 服务器,并找到它,包括正确的 PID,然后启动活动。
但是,它告诉我找不到该包:
Setup network redirection
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb shell run-as <package name> lib/gdbserver +debug-socket --attach 16040
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb forward tcp:5039 localfilesystem:run-as: Package '<package name>' is unknown/debug-socket
然后它会吐出如果您不正确地使用 adb(帮助文件)会得到什么,然后是:
ERROR: Could not setup network redirection to gdbserver?
Maybe using --port=<port> to use a different TCP port might help?
run-as: Package '<package name>' is unknown
我查看了 /data/system/packages.list,是的,我的 apk 肯定在其中,并且它指向的位置在文件系统上是正确的。所以这不是问题。
本教程: http: //vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/建议删除并重新安装,以及清理您的 Eclipse 构建。
我没有使用 eclipse 来构建包,但我确实清理了所有内容并从头开始编译、删除并重新安装,但没有成功。
有没有人遇到过类似的问题,你是怎么解决的?谢谢你。
编辑:哦,我尝试了不同的端口无济于事,无论如何,5039(默认端口)上似乎没有任何东西。而且,我没有任何防火墙阻止该连接。我也在 Ubuntu 11.04 上进行开发。
Edit2:嗯......看起来新的ndk(r5c),错误消息现在也发生了变化:
ERROR: Could not extract package's data directory. Are you sure that
your installed application is debuggable?
是的,debuggable 在清单中设置为 true,并且所有本机代码都是使用以下内容构建的:
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map