嵌入式 gdb gdbserver 终极总结

本文介绍了如何在Linux系统上使用gdb进行远程调试嵌入式程序。首先,需要在PC端编译gdb和gdbserver,然后将gdbserver移植到开发板上。在开发板上启动gdbserver并通过网络连接到PC的gdb。通过gdb,可以实现单步执行、设置断点、查看变量等调试操作。调试过程中,gdbserver和gdb通过指定的IP地址和端口号进行通信,确保了PC与开发板之间的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gdb 
IAR MDK VS 
gdb 来一行行的 运行程序、单步执行、跳入/跳出函数、设置断点、查看变量
强大的程序调试工具

 Linux 系统,比如 ubuntu、  直接运行 gdb 来调试程序 
 直接在嵌入式系统中运行 gdb 不太现实(性能强大的嵌入式芯片可以这么做)。


嵌入式系统中一般在 PC 端运行 gdb 工具,源码也是在 PC 端,源码对应的可执行文件放到开发板中运行。
我们需要在开发板中运行 gdbserver 

通过网络与 PC 端 的 gdb 进行通信。
要想在 PC 上通过 gdb 调试嵌入式程序,那么需要两个东西:gdb 和gdbserver,其中 gdb 是运行在 PC 上的,gdbserver 需要我们移植到开发板上。

一般交叉编译已经自带了 gdb 和 gdbserver,因此可以不用移植,直接使用交叉编译器自带的即可。
果交叉编译器自带了 gdb 和 gdbserver 的话只需要将 gdbserver 拷贝到开发板根文件系统的/bin 目录下

gdb 官网上获取源码

首先编译 gdb,gdb 是运行在 PC 端的程序,gdb 编译的时候需要进行配置

植 gdbserver,gdbserver 是在开发板上运行的,因此要交叉编译。

gdbserver 软件  /usr/bin 目录下 gdbserver –version //查看版本号

arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g //编译测试程序,注意-g 选项
完成以后将得到的 gdbtest 可执行文件发送到开发板中。 

gdbserver 192.168.1.253:2001 gdbtest // 启动开发板上的 gdbserver

192.168.1.253 为调试机的 IP 地址,也就是 ubuntu 的 IP 地址,2001 是端口号,
可以任意给一个端口号,gdbtest 是要调试的可执行文件。

上位机
arm-linux-gdb gdbtest
target remote 192.168.1.251:2001 //连接到开发板上

l l出所有程序源码
b b main 或 break main  第 11 行设置断点
c c 命令用于运行到断点处,输入 c 命令程序就会运行,直到下一个断点处
s s 命令(step)是单步运行执行,此函数会进入到函数里面。
n n 命令(next)也是单步运行,但是 n 命令不会进入到函数里面
p 命令(print)用于打印某个变量值。 
q 命令(quit)用于退出调试,开发板上的 gdbserver 也会停止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幽风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值