我正在尝试调试使用ndk-r6编译的本机应用程序。当我尝试运行ndk-gdb将调试器附加到进程时,应用程序退出设备。我很难过。有人可以为我解释一下吗?
以下是gdb进程运行的日志:http://pastebin.com/qTCR7mF2
这是我从logcat中获得的全部内容:
I/ActivityManager(10006): Process com.gmail.whittock.tom.clockwork (pid 11460) has died.
I/WindowManager(10006): WIN DEATH: Window{4083aa18 com.gmail.whittock.tom.clockwork/com.gmail.whittock.tom.Util.NativeActivity paused=false}
I/WindowManager(10006): WIN DEATH: Window{4085d8d0 SurfaceView paused=false}
I/WindowManager(10006): Setting rotation to 0, animFlags=1
I/ActivityManager(10006): Config changed: { scale=1.0 imsi=234/10 loc=en_GB touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=31 themeResource=null}
编辑:
这是我的gdb.setup文件:
$ cat libs/armeabi-v7a/gdb.setup
set solib-search-path C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a
directory C:/Users/Tom/dev/android/ANDROI~2/platforms/android-5/arch-arm/usr/include C:/Users/Tom/dev/android/ANDROI~2/sources/cxx-stl/stlport/stlport C:/Users/Tom/dev/android/ANDROI~2/sources/cxx-stl/system/include C:/Users/Tom/dev/android/modules/box2d C:/Users/Tom/dev/android/Clockwork/jni
那里的所有路径对我来说都是正确的,但也许这是使用导致问题的文件名的dos兼容版本?!
EDIT2:这是其他 gdb.setup文件:
$ cat obj/local/armeabi-v7a/gdb.setup
file C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a/app_process
target remote :5039
file C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a/app_process
target remote :5039
file C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a/app_process
target remote :5039
答案 0 :(得分:1)
我终于找到了这个问题。
ndk-gdb我必须设置NDK_DEBUG=1
环境变量,否则NDK_APP_GDBSETUP变量将被设置为空白,因为它相信应用程序不可调试(因为它自己的好处太聪明了) )
这会导致gdb.setup文件被破坏,因为复制命令失败,我们开始追加已经存在的任何内容的末尾。这就是为什么在obj / local ... / gdb.setup中重复使用相同的命令对3次。
你不知道这给我带来了多少痛苦。希望其他人在阅读本文时能有更轻松的时间。
答案 1 :(得分:0)
Step by step instructions to setting up GDB on eclipse您的GDB配置可能已经过时了。而不是尝试诊断问题,尝试按照这些步骤,看看是否能解决您的问题。