Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78696
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 161
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-04 17:48
文章分类

全部博文(24)

文章存档

2015年(24)

我的朋友

分类: Android平台

2015-08-11 18:00:31

上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了。有几个关键点:
1 gdb和gdbserver
因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver
gdbserver的是在 android-ndk-r9\prebuilt\android-arm\gdbserver 这个目录下
gdb 是在 android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin 目录下,名称是arm-linux-androideabi-gdb.exe
2 然后把gdbserver安装到设备的 /system/bin下
adb push gdbserver /system/bin/
adb shell chmod u+x /system/bin/gdbserver
3 以DEBUG方式编译程序
具体来说,就是 ndk-build NDK_DEBUG=1
可以调试的程序在 ..\obj\local\armeabi目录下,相对于jni目录
4 启动程序
adb push hello /data/local/tmp/
adb shell chmod u+x /data/local/tmp/hello
gdbserver  :8123 /data/local/tmp/hello
5 启动GDB开始调试
adb forward tcp:1234 tcp:8123
设置adb的转发

arm-linux-androideabi-gdb
(gdb) file ../obj/local/armeabi/sum
加载调试程序
(gdb) target remote  localhost:1234
说明远程调试对象
(gdb)list
显示代码
(gdb) break main
设置断点
(gdb) cont
继续运行
6 总结
因为gdb本来就支持远程调试,在启动gdbserver的时候,指定本地调试端口,但是由于设备是通过adb来连接的,所以指定adb来做转接,在设备启动调试后,就等待gdb来连接调试,所以gdb启动后,指定本地的端口,加载代码,然后就可以调试了
阅读(1041) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~