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

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

老戚的黑科技之SSH隧道技术

隧道顾名思义让不通的地方变通。SSH隧道技术也是同样的道理,借用SSH这个工具,通过SSHClient和SSHServer之间建立一条TCP通道,从而打通二台设备,于此同时分别监听各自的一个端口号,如...

GDB+GdbServer: ARM程序调试

内容摘要 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式...
  • ce123
  • ce123
  • 2011-07-22 12:59
  • 22731

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

gdb+gdbserver实践笔记

原理:在主机上远程调试运行在开发板上的程序。gdb客户端运行在主机上,gdbserver运行在开发板上。 准备工作: 1.从http: //ftp.cs.pu.edu.tw/Linux/sourc...

Android平台dalvik模式下java Hook框架ddi的分析(1)

一、前 言在前面的博客中已经学习了作者crmulliner编写的,针对Android系统的跨进程 inline Hook的实现即Android native Hook框架adbi的实现。Android...

在嵌入式中使用gdbserver

一:准备PC机:172.16.7.153broad:172.16.7.155# ifconfigeth0      Link encap:Ethernet  HWaddr 00:07:63:00:00...

Linux下交叉编译gdb和gdbserver

俗话说:工欲善其事,先必利其器。 在对嵌入式进行调试之前,必须要生成调试器。经典地,Linux平台下的调试器为gdb。 本文仅讲述如何生成调试器,不涉及其中的论理——要找理论,找老师或者课本。 ...

GDB+GdbServer: ARM程序调试

内容摘要 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式...

建立ARM平台上的交叉调试器gdb和gdbserver

建立ARM平台上的交叉调试器gdb和gdbserverhansel@163.com2007.10.18gdb-6.6使用了autoconf/automake,因此通过设置configure脚本的--t...
  • hansel
  • hansel
  • 2007-10-18 11:08
  • 10673
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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