gdb+gdbserver 是调试目标板的常用方法.

gdb+gdbserver 是调试目标板的常用方法.
看了网上的一些资料,加上我自己的一些体会, 写个完整的记录吧:
我的环境如下:HOST 192.168.0.33  Target: 192.168.0.34
NFS共享目录:  mount -t nfs -o nolock /home/itlanger/work /mnt
  1. 编译arm-gdb:
    • 下载gdb源代码:
      • $ cd downloads
      • $ wget -t 0 -w 30 -c http://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.gz
    • tar zxvf gdb-6.6.tar.gz
    • cd  gdb-6.6
    • ./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v
    • make
    • sudo make install
    • export PATH=$PATH:/usr/local/arm-gdb
  2. 编译arm-gdb-server
    • cd ~/downloads/gdb-6.6/gdb/gdbserver
    • ./configure --target=arm-linux --host=arm-linux
    • make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc   ##这里是交叉编译器的路径
    • cp gdbserver ~/work  ##gdbserver是编译生成的
    • export PATH=$PATH:/usr/local/arm-gdb/bin (最好加到.bashrc中)
  3. 拷贝libthread库(这一步不做的话,运行gdbserver会出错!)
    • $ cd  /usr/local/arm/3.4.1/arm-linux/lib
      $ ls -l libthread_db*
        -rwxr-xr-x 1 2619 man 29151 2004-07-28 23:08 libthread_db-1.0.so
        lrwxrwxrwx 1 2619 man    17 2008-05-25 12:00 libthread_db.so -> libthread_db.so.1
        lrwxrwxrwx 1 2619 man    19 2008-05-25 12:00 libthread_db.so.1 -> libthread_db-1.0.so

      $ cp libthread_db-1.0.so ~/work

      minicom下:
      # cd /lib/
      # cp /mnt/libthread_db-1.0.so /lib/
      # ln -s libthread_db-1.0.so libthread_db.so.1
      # ln -s libthread_db-1.0.so libthread_db.so
  4. 测试
    • 以上的环境变量都写到~/.profile中吧
    • 写一个程序, 用arm-linux-gcc -g 编译, 放到work目录下, (我的为third)
    • minicom下:  
      • cd /mnt
      • ./gdbserver 192.168.0.33:6666 third
        Process third created; pid = 356
        Listening on port 6666
    • 终端下:
      • export PATH=$PATH:/usr/local/arm-gdb/bin
      • cd ~/work
      • arm-linux-gdb third
        GNU gdb 6.6
        Copyright (C) 2006 Free Software Foundation, Inc.
        GDB is free software, covered by the GNU General Public License, and you are
        welcome to change it and/or distribute copies of it under certain conditions.
        Type "show copying" to see the conditions.
        There is absolutely no warranty for GDB.  Type "show warranty" for details.
        This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"...
        (gdb)
      • (gdb) target remote 192.168.0.34:6666       ##(连接目标)
        Remote debugging using 192.168.0.34:6666
        0x40000dd0 in ?? () from /lib/ld-linux.so.2
      • 现在可以通过l, b 设置断点了
      • 运行: 用命令c    ##记住这里不是用run, 因为程序已在Target Board上面由gdbserver启动了。结果输出是在Target Board端


  5. 这样就可以用emacs方便地远程调试了。 
    • M-x gdba  ##(我已经绑定到F10了)
    • Run gdba (like this): arm-linux-gdb -annotate=3 third
    • 效果如下图:

 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gdbgdbserver远程调试技术的意义在于提供了一种方便有效的方式来调试运行在远程目标设备上的程序。这对于嵌入式系统或远程服务器等分布式系统的开发和调试非常有用。 首先,gdbgdbserver远程调试技术允许开发人员在不在本地环境下的目标设备上进行调试。这意味着开发人员可以通过网络连接到远程设备,并使用本地的gdb客户端来远程控制和调试目标设备上的程序。这样,不再需要将全部的代码和调试环境放在开发人员的本地机器上,大大节省了开发人员的时间和资源。 其次,远程调试技术提供了实时调试的能力。开发人员可以监控目标设备上的程序执行过程,并在运行时观察程序的状态和变量的值。这对于发现和解决运行时错误和异常非常重要。通过远程调试,开发人员可以更直接地了解程序在实际环境下的行为,从而更有效地修复问题。 此外,远程调试技术还提供了一个更加安全且可靠的调试方法。使用gdbgdbserver进行远程调试,可以避免将敏感的代码或数据复制到本地环境中,减少了潜在的安全风险。同时,由于远程调试是通过网络进行的,即使目标设备处于远程位置,也能够进行调试,减少了物理上接触设备的需求,提高了效率。 总而言之,gdbgdbserver远程调试技术的意义在于提供了一种方便、实时、安全的方法来远程控制和调试目标设备上的程序,使开发人员能够更有效地进行嵌入式系统和分布式系统的开发和调试工作。 ### 回答2: gdb gdbserver远程调试技术是一种用于在线调试嵌入式系统的工具。它的意义在于提供了一种便捷和高效的方式来调试远程的嵌入式设备。 首先,gdb gdbserver远程调试技术可以节省时间和资源。在传统的调试方式中,如果想要调试远程的嵌入式设备,通常需要将设备连接到开发服务器并使用串口进行调试。这种方式不仅繁琐,还占用了宝贵的硬件资源。而gdb gdbserver远程调试技术可以直接在目标设备上运行gdbserver,并通过网络连接到开发服务器上的gdb,使得调试变得更加方便快捷。 其次,gdb gdbserver远程调试技术可以提高团队协作效率。在实际的嵌入式系统项目中,通常会有多个开发人员同时开展工作。使用gdb gdbserver远程调试技术,不同的开发人员可以同时连接到同一个目标设备上进行调试,而不会相互干扰。这样可以提高团队成员之间的协作效率,加快问题解决和软件开发的速度。 此外,gdb gdbserver远程调试技术还提供了更灵活的调试方式。通过gdb gdbserver的支持,开发人员可以在目标设备上进行远程程序的调试,包括断点设置、变量查看、程序运行控制等。这种方式可以更加直观地观察到程序的实际执行情况,帮助开发人员更好地理解和解决问题。 总之,gdb gdbserver远程调试技术的意义在于提供了一种便捷、高效和灵活的嵌入式系统调试方式,节省了时间和资源,提高了团队协作效率,同时也方便开发人员更好地理解和解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值