这里指的是通过PC机端通过GDB可以远程调试目标板(android设备,如手机等)。在4.0版本的android下都会有gdbserver,可以再prebuilt或者out目录下能够找到。而gdb client是在prebuilt中的。

Android下对目标板的GDB调试是基于linux下GDB的调试,其步骤如下。

1 在目标板上启动gdb server,目标板和宿主机是通过TCP协议通信的。而ADB是可以实现这种通信的。利用adbshell进入目标板的shell,然后gdbserver :5039 /system/bin/mediaserver,这个的意思是通过5039端口来监听/system/bin/mediaserver可执行文件。如果成功的话,会显示Process mediaserver created; pid = 4216 Listening on port 5039。这时目标板已经就绪,等待宿主机的连接和控制调试。

gdbserver :5039 /system/bin/mediaserver

2 利用adb打开TCP连接,命令如下:

adb forward tcp:5039 tcp:5039

将宿主机的端口5039和目标板的端口5039相连,实现通信。

3 然后就是利用gdb调试了。注意在宿主机上的可执行程序和目标机上的可执行程序要保持一致,并且在编译的时候利用-g选项参数进行编译,如果想跟踪静态库或者动态库中的执行情况,必须打开所有的调试,将整个工程进行编译。在执行以下命令的时候,注意是在ICS的目录下。

prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb out/target/product/product-name/symbols/system/bin/mediaserver

4 设置参数,solib-absolute-path是设置符号的搜索路径,如果有些库在搜索路径还是找不到的话,有必要设置solib-search-path。

set solib-absolute-prefix /absolute-source-path/out/target/product/product-name/symbols
set solib-search-path /absolute-source-path/out/target/product/product-name/symbols/system/lib

5 连接目标板,当连接成功后,在adb shell下回显示Remote debugging from host 127.0.0.1。此时连接成功,就可以像普通的GDB一样,用continue,next ,step ,list,break等进行调试。

target remote :5039

6 android gdb debug 参考见

http://www.kandroid.org/online-pdk/guide/debugging_gdb.html

更多相关文章

  1. android默认开启adb调试方法分析
  2. Android(安卓)无线调试
  3. Android(安卓)AIDL Service调试方法
  4. Android(安卓)so注入( inject)和Hook(挂钩)的实现思路讨论
  5. Android的内存泄漏和调试
  6. Android可视化调试工具Hierarchy Viewer的使用
  7. 《Android(安卓)串口驱动回眸:andriod虚拟机与串口调试精灵通讯》
  8. Android(安卓)内存泄漏调试
  9. android常见错误-Installation error: INSTALL_FAILED_INSUFFICI

随机推荐

  1. android 蓝牙搜索、配对连接通信总结
  2. React Native---手势响应系统
  3. Android(安卓)各种第三方轮子
  4. Drawable资源——BitmapDrawable
  5. Android解决大图片内存溢出
  6. 多渠道
  7. android ERROR:Unknown option '--no-cru
  8. Android(安卓)Recovery升级原理
  9. Android(安卓)工具之androidscreencast
  10. ActionBarSherlock使用教程