调试工具 - 嵌入式平台GDB调试

说明

  • gdb是C/C++编程中常用的调试工具,在嵌入式平台也是一样,但是大部分嵌入式设备内存空间都不充裕,运行gdb程序比较吃力,在嵌入式平台常采用GDB + GDB Server的方式。
  • GDB + GDB Server方式是C/S结构,通过网络进行调试,以减少设备端的内存占用。

环境搭建

  • 平台:
SOC: ssc323
交叉编译链:arm-buildroot-linux-uclibcgnueabihf

gdb移植

  1. GDB源码下载
地址:http://www.gnu.org/software/gdb/download/
* 个人测试使用的版本是:gdb-9.1
  1. GDB编译
mkdir gdbBuild
cd gdbBuild
../gdb-9.1/configure --target=arm-buildroot-linux-uclibcgnueabihf --prefix=/home/xxx/ssc323/gdbBuild/install -v
make
make install
  • gdb-9.1不能在gdb源码目录进行编译,会提示错误,需要在源码目录外新建目录作为编译目录。
  1. GDB Server编译
mkdir gdbServerBuild
cd gdbServerBuild
../gdb-9.1/gdb/gdbserver/configure --target=arm-buildroot-linux-uclibcgnueabihf --host=arm-buildroot-linux-uclibcgnueabihf --prefix=/home/xxx/ssc323/gdbBuild/install -v
make
make install
  • 注意:GDB Server和GDB的编译目录不要为同一个,不然编译时会出错。
  1. 目标文件
bin
include
lib
share
* bin目录下主要文件
arm-buildroot-linux-uclibcgnueabihf-gdbserver
arm-buildroot-linux-uclibcgnueabihf-gdb

使用

  1. 测试程序
  • 编译设备程序时候,需要在编译命令中加上-g或-ggdb选项,同时注意不要使用strip命令来strip编译好的设备端程序。
  1. 设备端
  • 可以通过strip减小gdbserver文件的大小,将gdbserver程序和测试程序拷贝至设备内,执行以下命令:
./xxx-gdbserver 192.168.22.100:2345 demo
./xxx-gdbserver *:2345 demo
* 192.168.22.100 是PC端ip地址,可以使用通配符*代替,表示接受所有ip的连接
* 2345 是gdbserver的服务端口
* demo 是测试程序
  1. PC端
  • 确保PC和设备在同一个局域网内,执行以下命令:
./xxx-gdb 
(gdb) target remote 192.168.22.101:2345
(gdb) c
* target remote 192.168.22.101:2345 表示连接远程gdbserver服务器,ip地址为192.168.22.101,端口号为2345
* c 表示运行程序
  • 连上远程gdbserver后即可使用gdb其它调试命令。

注意

  • gdb安装目录有多个文件,如果移动或者只拷贝单个文件xxx-gdb,运行可能会出现异常,例如:
* 每执行一条命令,gdb都会输出
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
  • 解决办法:整体移动或拷贝gdb的安装目录,或者将gdb安装到默认的/usr目录下。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值