Tom*_*ock 5 android gdb android-ndk
我正在尝试调试使用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}
Run Code Online (Sandbox Code Playgroud)
编辑:
这是我的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
Run Code Online (Sandbox Code Playgroud)
那里的所有路径对我来说都是正确的,但也许这是使用导致问题的文件名的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
Run Code Online (Sandbox Code Playgroud)
我终于找到问题了。
ndk-gdb 必须设置NDK_DEBUG=1
环境变量,否则 NDK_APP_GDBSETUP 变量会被设置为空白,因为人们相信该应用程序不可调试(为了自己的利益而太聪明了)
这会导致 gdb.setup 文件损坏,因为复制命令失败,我们开始附加到已存在的任何内容的末尾。这就是为什么相同的命令对在 obj/local.../gdb.setup 中重复 3 次。
你不知道这给我带来了多少痛苦。希望其他人读到这篇文章后会更轻松。
归档时间: |
|
查看次数: |
1053 次 |
最近记录: |