使用gdb远程调试开发板内程序

背景,开发主机是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-multiarch ./myprogram
target remote 192.168.1.230:666
b main
c

注意以上两个步骤内的./myprogram是同一个二进制文件的两份拷贝(交叉编译生成/带调试信息)。
target remote 192.168.1.230:666用于连接gdbserver所监听的IP地址和端口。
后面的操作跟使用本机GDB调试几乎没有区别。

你可能感兴趣的:(C/C++,编译和链接,liigo,linux,gdb,gdbserver,gdb-multiarch,liigo)