gdbserver 移植

1、http://ftp.gnu.org/gnu/gdb/  下载gdb。gdb-7.6.2.tar.gz

2、编译gdb

$ tar   xzvf  gdb-7.6.2.tar.gz    

   $ cd  gdb-7.6.2

   $ ./configure  --target=arm-linux  --prefix=$PWD/bin

   $ mkdir bin

   $ make

   $ make install

安装成功后主要是会在/tianpei/share/arm-gdb/bin下生成三个工具分别是:

arm-linux-gdb arm-linux-gdbtui  arm-linux-run

这几个工具是在PC端运行。


3、编译gdbserver

   $cd gdb/gdbserver/

   $./configure  --target=arm-linux  --host=arm-linux-gnueabihf  --prefix=$PWD/bin

   $ mkdir bin

   $make 

   $make install  

   安装成功后会生成文件:

   $PWD/bin/arm-linux-gdbserver

   注意:gdbserver 是在板子上运行的,注意设置--host为交叉编译工具

4、调试

 1  arm-linux-gdbserver工具下载到开发板的/bin

 2、PC编译实例

  编译: $arm-linux-gcc -g hello.c -o hello

 1、 配制gdbserver

 设置主机IP地址为:192.168.1.10,开发板系统IP地址为:192.168.1.230
  在开发板中:

  #gdbserver 192.168.1.230:1234 hello
  Process test created:pid=80   //使gdbserver在1234端口监听。

  在PC中运行 arm-linux-gdb

  #arm-linux-gdb
  (gdb) target remote 192.168.1.230:1234    //若链接成功,开发板的串口终端会显示如下:
  Remote debugging from host 192.168.1.10
  (gdb) symbol file hello                              //此处的hello是PC机上的所在路径的hello
  (gdb) list
  (gdb) break 5

 

  //==================================
  如果gdb提示:GDB7.6 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;
      }
   }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值