嵌入式Linux的GDB调试环境搭建
2023-03-07 09:49:47 时间
GDB是一个工具,可以像MDK IAR之类的一样一步步的执行程序,查看变量的值,设置断点,查看运行结果。
移植嵌入式linux的板子可能资源不够,性能不强,因此在板子上使用gdbserver通过网络与PC通信,在PC中运行gdb。
具体步骤如下:
获取GDB和gdb server
可以官网下载,也可以从虚拟机中已经安装的交叉编译环境中获取
电路板和ubuntu通信
通过nfs挂载虚拟机下的ubuntu
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调试信息的文件
arm-linux-gnueabihf-gcc -g test.c -o test
将文件放nfs挂载的文件夹。此过程需要在root权限下运行
放置gdb server并运行
将gdb server拷贝入开发板的/bin/目录下
在/bin/目录下运行
gdbserver 192.168.1.10:2001 test
192.168.1.10为ubuntu的ip地址,端口号可随便填写一个,保证不重复,没和已经用的冲突就可。test就是编译好后的文件名字。
注意一定要在gdb server文件所在的目录下运行。
上位机运行GDB
在ubuntu中运行gdb
arm-linux-gnueabihf-gdb test
然后就进入了gdb模式,使用gdb的命令就可以运行了
GDB命令
gdb的命令非常多,列举几个常用的
list命令
list <linenum> 显示linenum行周围的源程序list <function> 显示function行周围的源程序list 显示当前行后面的源程序list - 显示当前行前面的源程序
break命令
break <linenum> 在指定行号停住
break <function> 在进入指定行号时停住
break *address 在程序运行的内存地址处停住
break 在下一条指令处停住
continue命令
continue命令恢复运行知道程序结束或下一个断点
print命令
此命令打印变量值
print <expr> <expr>是表达式,也是被调试程序中的表达式print /<f> <expr> <f>是输出格式,按16进制输出就是/x
quit命令
命令(quit)用于退出调试,开发板上的 gdbserver 也会停止
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的