嵌入式linux远程gdb调试(基于x86架构)

基于x86的板子

下载gdb源码

http://ftp.gnu.org/gnu/gdb/


一般linux发行版中都有一个可以运行的gdb,但开发人员不能直接使用该发行版中的gdb来做远程调试
远程调试中,目标机需要包含两个程序 gdbserver和需要调试的程序(例如gdbtest)
#tar -zxvf gdb-7.9.tar.gz

编译GDB Server

#cd gdb-7.9
    #./configure --target=arm-linux --prefix=/usr/local/arm-gdb
    #make


#cd ./gdb/gdbserver
   
    #./configure
    #make

因为目标机是x86架构的可以使用默认配置文件,无需交叉编译(至少我实验时不需要。。总有特殊情况。。)

编译调试程序
若目标机包含的库全面则
gcc -g gdbtest.c -o gdbtest
若库不全,可以静态编译程序
gcc -g gdbtest.c -static -o gdbtest

("ldd 程序名"可以查看程序所要用到的库文件)

把编译好的gdbserver和gdbtest通过ftp,nfs等方法下载到目标机的嵌入式linux系统

并且放在/home目录下(因为pc宿主机的gdbtest在/home目录下)

假设目标机ip为192.168.0.16
宿主机ip为192.168.0.4

先在目标机/home下运行命令:./gdbserver 192.168.0.4:1234 gdbtest
注:1234是用于通信端口号,一般不要用1024一下的端口,因为这些端口有特殊作用
gdbtest是需要调试的程序
当出现
Process wpa_cli created; pid = 730
Listening on port 1234

表明目标机已经准备好正在监听1234端口

再在宿主机下的/home目录下运行命令gdb gdbtest
进入gdb调试命令行
再输入命令target remote 192.168.0.16:1234回车
这时目标机会出现
Remote debugging from host 192.168.100.1

表示gdbserver成功运行并且建立连接关系,等待客户端的调试信息

之后就可以在宿主机上和本地gdb调试一样调试程序了。

注意事项:目标机运行gdbserver前要确保网络通常。

若联接成功后调试中出现某些gdb调试命令无法使用(例如list命令),可能是目标机包含的运行库不全

可在宿主机运行ldd+程序名 查看程序运行所需的库。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值