GDBserver远程调试(汇总)

目标平台:LOONGSON-1B(mips32指令集)
编译环境:ubuntu10.04
编译工具:君正mipseltools-gcc412-gclibc261编译器
编译器下载地址:http://www.ingenic.cn/product.aspx?ID=62

简介
GDBserver远程调试由宿主机GDB和目标机GDBserver共同构成,两者通过TCP连接,使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核或上层应用的监控和调试功能。
进行GDBserver远程调试,目标系统必须包括适合平台的gdbserver程序,宿主机也必须安装gdb程序。一般linux发行版中都有一个可以运行的gdb,但开发人员不能直接使用该发行版中的gdb来进行远程调试,而要获取gdb的源码包,针对目标平台重新编译得到相应的gdb工具。

GDBserver远程调试环境搭建
1、下载gdb源码包
进入网址下载gdb源码包,这里使用gdb-7.3.tar.gz:

http://ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/


2、交叉编译gdb
#tar zxf gdb-7.3.tar.gz
#cd gdb-7.3
#./configure --prefix=/home/Debug_tools/GDB_install --target=mipsel-linux
#make
#make install
#export PATH=/home/Debug_tools/GDB_install/bin:$PATH (可选,设置PATH变量)
在指定目录下生成使用于宿主机的gdb工具mipsel-linux-gdb
#cd ./gdb/gdbserver
#./configure --prefix=/home/Debug_tools/GDB_install --host=mipsel-linux
#make
#make install
#mipsel-linux-strip /home/Debug_tools/GDB_install/bin/gdbserver  (可选,压缩gdbserver体积)
在指定目录下生成使用于目标平台的gdbserver工具。

3、搭建调试环境
这里通过nfs搭建gdb远程调试环境,确保配置好nfs后,搭建gdb远程调试环境具体步骤如下:
(1).gdbserver放到目标平台,mipse-linux-gdb则放在宿主机使用。

(2).在宿主机,把交叉编译后需要调试的程序(test-app)置于nfs共享目录(/home/xxx/nfsrootfs)下。

(3).在目标平台,挂载宿主机的nfs共享目录:
#mount -o nolock 192.168.x.x:/home/xxx/nfsrootfs /mnt
[192.168.x.x为宿主机ip]

(4).在目标平台,执行gdbserver
#./gdbserver 192.168.x.x:9000 /mnt/test-app
[192.168.x.x为宿主机ip9000为监听端口号]
在目标平台可看到如下提示信息:
Process wpa_cli created; pid = 819
Listening on port 9000
表示gdbserver成功运行等待客户端的连接。

(5).在宿主机执行mips-linux-gdb
#mips-linux-gdb
(gdb)target remote 192.168.x.x:9000
(gdb)symbol-file /home/xxx/nfsrootfs/test-app
(gdb)set solib-absolute-prefix /opt/mipseltool-gcc412-glibc261/mipsel-linux/
(gdb)set solib-search-path /opt/mipseltool-gcc412-glibc261/mipsel-linux/lib/
[192.168.x.x为目标平台ip9000为目标平台监听端口号]
[/opt/mipseltool-gcc412-glibc261/为编译器路径]
连接成功后在目标平台可看到如下提示信息:
Remote debugging from host 192.168.x.x
此时gdbserver成功运行并与宿主机建立连接关系,等待宿主机的调试信息。

    若要避免每次执行mips-linux-gdb都需配置gdb环境,可在宿主机要调试代码目录下,新建.gdbinit文件,该文件在执行mipsel-linux-gdb会自动读取,.gdbinit内容如下:
target remote 192.168.x.x:9000
symbol-file test-app
set solib-absolute-prefix /opt/mipseltool-gcc412-glibc261/mipsel-linux/
set solib-search-path /opt/mipseltool-gcc412-glibc261/mipsel-linux/lib/

备注:
远程调试环境搭建完成后,目标平台gdbserver已处于run状态,宿主机调试不需再执行run,直接continue可运行程序。
共享库在很多交叉和远程调试配置中也是支持的。目标库的一份拷贝需要出现在宿主系统上;他们需要和目标库一样,在这里,目标上的拷贝可以被 strip,而宿主机上的不被 strip
    set solib-absolute-prefixset solib-search-path命令分别用于设置GDB共享库查找路径前缀与共享库查找路径,以阻止GDB查找宿主机上的库。若不指定这些路径,远程调试过程中GDB加载了宿主机的库,会出现诸如“warning: GDB can't find the start of the function at 0x******”与“Cannot find bounds of current function”等错误提示。

参考资料:
http://www.linuxidc.com/Linux/2011-10/44743.htm
http://wiki.chinaunix.net/GDB_Manual_15_1
http://blog.csdn.net/j6915819/article/details/6673127
http://blog.csdn.net/lwsogood/article/details/3509400
http://blog.csdn.net/wzwind/article/details/6332879


转自skyilne的专栏:http://blog.csdn.net/water_cow/article/details/7393125

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值