使用gdb调试jni的方法
Charles Chan @ 2014-06-20 #GDB @Android
Contents:
cd codes/prebuilts/misc/android-arm/gdbserver
mm
2、在调试版的环境下运行gdbserver。假定测试程序的名称是test:
gdbserver :[调试端口] test
成功的话会显示类似下面的提示:
Process /system/bin/test created; pid = xxx
Listening on port yyyy
3、在linux机器上运行gdb进行调试:
1)命令类似如下,具体的路径请自行调整。注意,后面的可执行文件要使用LINKED目录下面的。只有这个是附带debug信息的。
codes/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-gdb out/target/product/
2)进入dbg环境之后,设置环境参数。同上,具体路径请自行调整(安全起见,建议适用绝对路径):
set sysroot out/target/product/
set solib-search-path out/target/product/
3)运行程序,命令如下:
(gdb)target remote [调试机IP]:[调试端口]
如果成功,则gdb会停在下面的提示状态:
__dl__start () at bionic/linker/arch/arm/begin.S:35
35 mov r0, sp
此时,输入Continue命令:
(gdb) c
至此,如果一切顺利,程序就会开始执行了。