GDB远程调试(ARM平台的二进制)
最近接到一个使用C++写的二进制程序,运行于Arm平台,文档比较少,于是想到这样子的情况下最简单的理解代码方式就是使用GDB去调试一下,看看实际它都运行得怎么样。
笔者的环境是Mac环境,Mac环境下直接使用gdb远程调试不好配置,于是我的环境主要在docker环境下进行的。
编译选项
需要在编译的时候加上-g -O0
选项,才可以方便地进行调试。
假定编译出来的二进制名字叫做test
远程调试
在docker环境下进行调试
|
|
提示:
/work
是我存放代码的位置
然后在客户端上执行:
|
|
提示:这样子就启动了
gdbserver
,监听端口是1234
随后在Docker的环境上依次执行:
# cgdb -d gdb-multiarch
> target remote 192.168.113.210:1234
> file /work/test
> b main # 对main()函数进行断点
> c
提示:
192.168.113.210:1234
是我目标机器上gdbserver
监听的IP和端口
效果展示:
接下来,我就可以逐行地看程序的运行到底如何了,结合输出的信息,以便分析其中的逻辑。
彩蛋
一些有用的GDB配置
|
|