gdbclient调试Android源码

  由于工作需要,最近重新开始接触C/C++开发和调试,自然离不开gdb的使用,很久之前使用过的一些gdb命令都忘的差不多了,重新温习了相关操作,顺便写篇文章记录一下。
  gdb是C/C++常用的开发调试工具,但是调试时需要配置symbol路径等参数,对于C/C++调试经验较少的人来说上手还是略麻烦,好在Google在Android6.0和7.0相继加入了gdbclientgdbclient.py,封装了gdb的一些命令,可以更方便的进行调试。
  PS: Google在Android 8.1上开始正式转入gdbclient.pygdbclient已经不再建议使用。

  1. 下载编译source code
  2. 保证手机是root且remount过的,否则没法push编译的lib/bin文件到system目录,symbol对不上的话debug也没法进行
  3. 编译OK后把需要debug的lib/bin文件push到对应目录,然后reboot并root手机
  4. adb forward tcp:5039 tcp:50391
  5. adb shell ps -A | grep "processname"找到需要调试的进程id
  6. adb shell进入手机命令行,gdbserver/gdbserver64 :5039 --attach "processpid"2
  7. 打开一个新的终端,进入源码根目录,执行. build/envsetup.sh配置好环境变量
  8. 在新终端中执行gdbclient.py就可以连上gdb进行调试了
    待更新:gdb中常用命令

  1. 执行gdbserver和gdbclient.py时要配置和adb forward一致的端口号,gdbclient.py中默认5039 ↩︎

  2. 用gdbserver和gdbserver64取决于对应的进程是32位还是64位的,可以通过cat /proc/processpid/maps | grep system/lib看link的是lib还是lib64的so确定 ↩︎

猜你喜欢

转载自blog.csdn.net/Neuuranus/article/details/87978626