gdbServer编译及使用

GDB调试主要有两种方法:

(1)直接在目标板上通过gdb调试程序

(2)在目标板上通过gdbserver运行程序,在宿主机上通过gdb调试程序

这两种方法中的gdb编译方法是不同的。(1)中的gdb是运行在目标板上,其elf文件应该是目标板芯片架构(如ARM aarch64等);(2)中的gdb运行于宿主机上,其elf文件应该是宿主机架构(如x86-64等)。

其中,(1)的编译方法在gdb源码下载及编译已经有介绍了,本文主要介绍(2)中gdb的编译方法及gdbserver的编译方法

一  gdbServer编译方法

gdbServer的编译方法和gdb相同,但需要先进入gdbserver目录示例如下:

mkdir -p /home/zhoujinlong/gdb/gdb-8.2/bin

cd /home/zhoujinlong/gdb/gdb-8.2/gdb/gdbserver

./configure --prefix=/home/zhoujinlong/gdb/gdb-8.2/bin --host=aarch64-linux-gnu LD=aarch64-linux-gnu-ld CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++

make -j8 && make install

gdbserver生成目录/home/zhoujinlong/gdb/gdb-8.2/bin

二 宿主机gdb编译方法

示例程序如下:

mkdir -p /home/zhoujinlong/gdb/gdb-8.2/bin

cd /home/zhoujinlong/gdb/gdb-8.2/gdb/gdbserver

./configure --target=aarch64-linux --program-prefix=aarch64-linux-gnu- 
--prefix=/home/zhoujinlong/gdb/gdb-8.2/bin

make -j8 && make install

注意:

(1)configure 参数的不同, 这里没有指定CC/CXX/LD,默认使用宿主机编译工具链,故其生成的gdb可在宿主机运行

(2)--program-prefix=aarch64-linux-gnu-是指生成的可执行文件的前缀,比如aarch64-linux-gnu-gdb

(3)用于gdbserver调试的两个工具(gdb/gdbserver)其版本必须保持一致,故这里使用同一源码编译

三 使用方法

(1)将gdbserver和可执行程序拷贝到目标机上,并执行如下代码

#./gdbserver IP:PORT   可执行程序
./gdbserver 192.168.9.20:6666 mv_send_debug

Process /run/media/mmcblk1p1/mv_send_debug created; pid = 1528
Listening on port 6666

(2)在宿主机上运行gdb + 可执行程序

./aarch64-linux-gnu-gdb mv_send_debug 

(3)在宿主机gdb环境下连接目标机

(gdb) target remote 192.168.9.20:6666

(4)连接成功后,宿主机gdb环境下按c运行程序,以及使用其他gdb调试命令,调试目标机程序

注意:

上述方法是通过网络连接的方式,故目标机和宿主机必须保证网络通信正常。

当然gdb/gdbserver也可以通过串口方式连接,其他方法可自行了解,这里不做介绍

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值