gdb 远程调试android进程
什么是gdb
GDB远程调试原理图
远程调试实战
$ adb shell# ps #查看要调试进程的PID# gdbserver :1234 --attach 96 #:1234是端口号,96 是进程ID
$ adb forward tcp:1234 tcp:1234 #端口映射,将pc机的1234端口映射到手机的1234端口
android_project_root/prebuilt/linux-x86/arm-eabi-4.4.3/$ ./arm-eabi-gdb #使用项目下的gdb客户端去连接gdbserver,gdb的类型要选择针对手机平台的, 版本要和gdbserver一致。
<gdb> target remote :1234 #连接本地的:1234端口,此端口已经和手机的1234端口做好映射。<gdb> file xxx/out/target/xx...xx/symbols/system/bin/mediaserver #加载可执行程序,注意选择symbols下的,如果调试的进程是app进程, 这里选择app_process。<gdb> set solib-search-path xxx/out/target/xx...xx/symbols/system/lib #加载所有的动态连接库,注意选择symbols下的。<gdb> bt #查看调用堆栈<gdb> list xxx/xxx..xxx/xxx.cpp #查看相关文件<gdb> b 100 #在文件的第100行打断点<gdb> c #继续执行程序
使用gdbclient简化调试流程