搭建gdb+gdbserver远程调试环境

1,下载链接:ftp://sourceware.org/pub/gdb/releases/

搭建gdb+gdbserver远程调试环境_第1张图片

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+gdbserver远程调试环境_第2张图片

修改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;
      }
   }

搭建gdb+gdbserver远程调试环境_第3张图片

(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

 

 

你可能感兴趣的:(搭建gdb+gdbserver远程调试环境)