前言
这是必须学习的技能,但是不需要精通,应该利用更高层的工具
在ROS项目开发过程中应用,在使用roslaunch过程中应用gdb
在CLion,VSCode使用过程中应用调试功能
目录
参考
《ROS机器人程序开发》
《嵌入式Linux开发基础知识》
gdb学习
是一个用来调试C/C++程序的强力调试器,常用功能有:监视程序中变量的值;设置断点;单步执行
为了使gdb正常工作,你必须使你的程序在编译时包含调试信息。
-g```调试信息包括你程序里的每一个变量的类型和在可执行文件里的地址映射以及源代码的行号。 1
2
* 你可以使用gdb调试一个可执行文件,也可以用gdb检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。更多请参考```gdb -h命令支持tab补齐特性
使用要点
1 | gdb #打开调试器 |
ROS node debug with gdb(使用gdb调试ROS节点)
- 从调试任意C/C++可执行文件的标准方法开始
1 |
|
- ros节点启动时调用gdb调试器
需要在launch文件中添加
1 | launch-prefix="xterm-egdb--args" |
该语句意思是:加载节点并等待运行。注意,因为是在xterm中创建gdb绘画,所以还有一个调试窗口。
launch-prefix
其实是一个前置启动工具,我们同样可以使用launch-prefix="valgrind"
来在启动节点之前启动valgrind工具检测内存泄露,并执行性能分析。valgrind.org
- 更多请见
roslaunch 学习和调试
- launch文件:功能包名传递给pkg属性,节点名传递给type属性,由于同一个节点可以运行多个实例,因此需要给每个实例一个节点名以作区分,即name属性,最好将这些属性配置输出到屏幕,这样就会在启动节点的shell窗口中输出相应调试信息,output=screen。