1,下载链接:ftp://sourceware.org/pub/gdb/releases/
2,Linux系统自带gdb工具,可是无法用在ARM调试中,需要单独编译arm-linux-gdb。
tar zxvf gdb-9.1.tar.gz
cd gdb-9.1/
生产makefile
./configure --prefix=$pwd/__install
–target:指定目标平台,–prefix:指定安装路径。
编译make 和 make install
3,可能出现的问题
(1)GDB9.1 Remote ‘g’ packet reply is too long错误
修改gdb/remote.c文件,屏蔽process_g_packet函数中的下列两行:
if (buf_len > 2 * rsa->sizeof_g_packet)
error (_(“Remote ‘g’ packet reply is too long: %s”), rs->buf);
换成如下几行:
if (buf_len > 2 * rsa->sizeof_g_packet)
{
rsa->sizeof_g_packet = buf_len ;
for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
{
if (rsa->regs[i].pnum == -1)
continue;
if (rsa->regs[i].offset >= rsa->sizeof_g_packet)
rsa->regs[i].in_g_packet = 0;
else
rsa->regs[i].in_g_packet = 1;
}
}
(2)arm-linux-gdb在调试的时候会加载目标系统的库文件,如果出错时便无法调试
通过指令[set solib-search-path+库文件路径]来手动加载目标系统库文件
(gdb) set solib-search-path /home/alinx/boot/config/gcc-linaro/arm-linux-gnueabi/libc/lib/
4,调试步骤
arm-linux-gnueabihf-gcc -g tcp_test.c -o transdata
宿主机IP:172.27.226.141
目标板IP:172.27.226.16
(1)目标板上运行gdbserver
./gdbserver 172.27.226.141:5000 transdata
(2)宿主机上运行arm-linux-gdb
arm-linux-gdb test



