【ROS】ROS使用GDB调试

本文详细介绍了如何在ROS环境中设置编译模式为Debug,并通过GDB进行程序调试。首先,可以通过在`catkin_make`时添加参数或修改`CMakeLists.txt`来确保程序以Debug模式编译。接着,讲解了两种调试方法:使用`rosrun`启动时添加`launch-prefix`进行调试,以及直接在`devel/lib`目录下用GDB运行程序。最后,列举了一些常用的GDB调试指令。
摘要由CSDN通过智能技术生成

一、引言

  在程序开发过程中难免遇到一些bug,Linux系统中通常使用ROS进行程序调试。这里推荐大佬的博文ROS在线调试(使用GDB)
  ROS官方列出了许多可用的IDE:如VScode, Qtcreator, Ecllipse, Clion等,而这些不方便快速的调试。

二、ROS设置编译模式为Debug

  ROS程序进行catkin_make时默认不是以debug模式进行编译的,这就导致程序在进行gdb调试的时候不能跳转到源代码,只能进入断点。
  普通的非ROS程序用gdb怎么调试呢?可以有两种方法~

  1. 使用catkin_make时添加
catkin_make -DCMAKE_BUILD_TYPE=Debug
  1. 直接修改CMakelist.txt,添加以下代码:
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

三、ROS使用GDB调试

  通常ROS节点程序的启动方法有两个:rosrunroslaunch,下面也针对这两种启动方法介绍对应的调试步骤。

3.1 rosrun启动gdb调试

  修改ROS launch文件,在node标签中添加一句话:

launch-prefix="xterm -e gdb -ex run --args "

例如:

<node pkg="ros_tutorials_topic" type="topic_publisher" name="topic_publisher" launch-prefix="xterm -e gdb -ex run --args "/>
#添加run在gdb调试时会自动开始执行程序

附:roslaunch node前缀
The launch-prefix attribute of the tag that, among other things, makes it easy to debug a ROS node process. Here are some example launch-prefixes you might find useful:
launch-prefix=“xterm -e gdb --args” : run your node in a gdb in a separate xterm window, manually type run to start it
launch-prefix=“gdb -ex run --args” : run your node in gdb in the same xterm as your launch without having to type run to start it
launch-prefix=“stterm -g 200x60 -e gdb -ex run --args” : run your node in gdb in a new stterm window without having to type run to start it
launch-prefix=“valgrind” : run your node in valgrind
这个valgrind工具可以用于检测内存泄露,并执行性能分析
launch-prefix=“xterm -e” : run your node in a separate xterm window
launch-prefix=“nice” : nice your process to lower its CPU usage
launch-prefix=“screen -d -m gdb --args” : useful if the node is being run on another machine; you can then ssh to that machine and do screen -D -R to see the gdb session
launch-prefix=“xterm -e python -m pdb” : run your python node a separate xterm window in pdb for debugging; manually type run to start it

在这里插入图片描述
在这里插入图片描述

3.2 rosrun启动GDB调试

  在使用rosrun执行程序时添加以下选项;

rosrun --prefix 'gdb -ex run --args' [package_name] [node_name] 

在这里插入图片描述

3.2 直接在devel/lib使用gdb运行程序

  在执行catkin_make之后会在devel/lib对应的节点文件下生成可执行文件,在source devel/setup.bash之后可以直接在devel/lib执行以下程序,然后继续使用gdb指令进行调试即可

gdb your_node_name

四、GDB指令

  这里暂时先参考爱编程的大丙的优秀文章,这里暂时不介绍过多。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值