前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式Linux的GDB调试环境搭建

嵌入式Linux的GDB调试环境搭建

作者头像
用户9736681
发布2023-02-20 16:37:56
1.2K0
发布2023-02-20 16:37:56
举报
文章被收录于专栏:嵌入式随笔嵌入式随笔

GDB是一个工具,可以像MDK IAR之类的一样一步步的执行程序,查看变量的值,设置断点,查看运行结果。

移植嵌入式linux的板子可能资源不够,性能不强,因此在板子上使用gdbserver通过网络与PC通信,在PC中运行gdb。

具体步骤如下:

获取GDB和gdb server

可以官网下载,也可以从虚拟机中已经安装的交叉编译环境中获取

电路板和ubuntu通信

通过nfs挂载虚拟机下的ubuntu

代码语言:javascript
复制
ifconfig eth0 192.168.1.20mount -t nfs -o nolock,vers=3 192.168.1.10:/linux/nfs/mnt

配置设备IP为192.168.1.20 虚拟机内的ubuntu地址为192.168.1.10

在ubuntu中编译出带gdb调试信息的文件

代码语言:javascript
复制
arm-linux-gnueabihf-gcc  -g test.c -o test

将文件放nfs挂载的文件夹。此过程需要在root权限下运行

放置gdb server并运行

将gdb server拷贝入开发板的/bin/目录下

在/bin/目录下运行

代码语言:javascript
复制
gdbserver 192.168.1.10:2001 test

192.168.1.10为ubuntu的ip地址,端口号可随便填写一个,保证不重复,没和已经用的冲突就可。test就是编译好后的文件名字。

注意一定要在gdb server文件所在的目录下运行。

上位机运行GDB

在ubuntu中运行gdb

代码语言:javascript
复制
arm-linux-gnueabihf-gdb test

然后就进入了gdb模式,使用gdb的命令就可以运行了

GDB命令

gdb的命令非常多,列举几个常用的

list命令

代码语言:javascript
复制
list <linenum>   显示linenum行周围的源程序list <function>  显示function行周围的源程序list             显示当前行后面的源程序list -           显示当前行前面的源程序

break命令

代码语言:javascript
复制
break <linenum>   在指定行号停住
break <function>  在进入指定行号时停住
break *address    在程序运行的内存地址处停住
break             在下一条指令处停住

continue命令

continue命令恢复运行知道程序结束或下一个断点

print命令

此命令打印变量值

代码语言:javascript
复制
print <expr>            <expr>是表达式,也是被调试程序中的表达式print /<f> <expr>         <f>是输出格式,按16进制输出就是/x

quit命令

命令(quit)用于退出调试,开发板上的 gdbserver 也会停止

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取GDB和gdb server
  • 电路板和ubuntu通信
  • 在ubuntu中编译出带gdb调试信息的文件
  • 放置gdb server并运行
  • 上位机运行GDB
  • GDB命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档