背景,开发主机是x86-64平台的Linux系统,开发板是ARM平台的Linux系统。
1. 安装gdb-multiarch作为gdb客户端
apt install gdb-multiarch
2. 编译可在开发板内运行的gdbserver作为gdb服务端
下载gdbserver v7.12源代码,并使用交叉编译工具链编译:
cd gdb-7.12/gdb/gdbserver
./configure --host=arm-linux --target=arm-linux
make
arm-linux-strip ./gdbserver
然后将当前目录下编译生成的gdbserver
复制到开发板内备用。
注意:gdbserver v8.0及以后的版本,需要使用C++11编译器编译。
我当前所用的交叉编译工具链,能编译的gdbserver的最高版本就是v7.12。
经过strip之后的gdbserver v7.12仅有300KB非常小巧,适合在开发板内运行。
3. 在开发板内运行gdbserver启动被调试程序
telnet 192.168.1.230
./gdbserver :6666 ./myprogram
参数:6666
指定TCP监听端口(随意),IP地址当然就是开发板自己的IP(192.168.1.230)。
如果使用串口连接:./gdbserver /dev/ttymxc0 ./myprogram
。
4. 在Linux开发主机内运行gdb-multiarch开始调试
gdb-multiarc