GDBserver远程调试(汇总)

原创 2012年03月25日 22:19:26


目标平台: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

相关文章推荐

gdb+gdbserver远程调试技术

首先声明,原创只是jiand

GDB远程调试技术---基于mini2440

GDB调试器提供了两种不同的调试代理用于支持远程调试,即gdbserver方式和stub(插桩)方式。    这两种远程调试方式是有区别的。gdbserver本身的体积很小,能够在具有很少存储容量的...
  • j6915819
  • j6915819
  • 2011年08月09日 16:55
  • 15410

gdb调试及gdbserver远程调试

     gdb调试器是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具,具有强大的功能,足有与Visual Stido媲美,当然友好的界面是没法相比的,呵呵。     开始编译程序将调...

GDB错误:Cannot find bounds of current function

编译应用程序的gcc与调试程序的gdb不匹配将导致GDB错误:Cannot find bounds of current function,使用匹配的gcc和gdb就可以解决这个问题。...
  • zoomdy
  • zoomdy
  • 2013年12月10日 19:38
  • 7140

GDB调试错误(运行异常): Cannot find bounds of current function

Cannot find bounds of current function ??? 堆栈溢出的锅...
  • Kiritow
  • Kiritow
  • 2016年08月13日 12:19
  • 1166

linux内核调试指南

 本文档由大家一起自由编写,修改和扩充,sniper负责维护。引用外来的文章要注明作者和来处。本文档所有命令都是在ubuntu/debian下的操作。选取的内核源码是文档开始编写时最新的内核版本–2....
  • adcxf
  • adcxf
  • 2008年09月13日 21:24
  • 12126

GDB Tracepoint

IntroductionIn some applications, it is not feasible for the debugger to interrupt the program's exe...

openwrt下使用gdbserver远程调试

硬件:7620n,openwrt  :BB版本 首先给出参考链接  :https://wiki.openwrt.org/doc/devel/gdb    点击打开链接              ...

用Eclipse和GDB构建ARM交叉编译和在线调试环境

[-] 搭建应用开发环境 安装 JRE安装 Eclipse 和 CDT创建交叉应用工程运行调试 搭建在线调试环境 gdbgdbserver总体介绍源代码下载配置编译及安装命令行远程...

GDBserver远程调试(汇总)

目标平台:LOONGSON-1B(mips32指令集) 编译环境:ubuntu10.04 编译工具:君正mipseltools-gcc412-gclibc261编译器 编译器下载地址:http:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GDBserver远程调试(汇总)
举报原因:
原因补充:

(最多只允许输入30个字)