一直觉得gdb调试起来麻烦,宁愿用ROS_INFO来输出调试信息。后来发现很多时候靠ROS_INFO并不能解决问题。熟悉了GDB后发现用GDB来调试ros节点还是很快捷的。下面是在ROS中用GDB调试的方法:
采用roslaunch方式运行roscpp节点程序,调出gdb的调试界面。ros wiki里有说明。
主要步骤如下:
(1) 修改.launch文件。在.launch文件中加入:launch-prefix=”xterm -e gdb –args” 属性来启动node。如下图是启动stixel_world_main结点的launch文件,在单独的xterm窗口中通过gdb执行node程序。
(2) 修改CMakelist.txt。ros wiki里面并没有说明,这一步需要注意。要添加以下代码,让cmake以debug模式编译,不然在gdb调试的时候不能跳转到源代码,只能进入断点。
|
|
(3) 用roslaunch运行.launch文件(roslaunch xxx.launch)即可出现GDB的调试界面。
(4) GDB调试。下图是用GDB调试ROS结点的界面,包括设置断点,运行,查看源码。网上有很多关于gdb调试的资料这儿就不累述了。