
GDB_ros2
用GDB运行ros2程序
1.安装依赖
本教程参考 GDB-ros2
这里使用 backward_ros 软件包,它是对 backward-cpp 包的 ROS2 封装,可以简单快速地使用 GDB 工具调试 ROS2 程序。
1 |
|
然后在编译 ROS2 程序时,添加 CMAKE_BUILD_TYPE
编译类型选项参数,可以选择 RelWithDebInfo
、Debug
或 Release
。对应 CMake 的三种编译选项,其中 Release
模式主要用于发布代码,会忽略调试信息;Debug
模式主要用于调试代码,因为需要生成调试信息,所以时间较长;RelWithDebInfo
则在 Release
模式下生成调试信息,也可以用于调试代码。通常建议使用 RelWithDebInfo
即可。
colcon 编译命令如下:
1 |
|
这里的引号不是必须的,因此也可以写成这样:
1 |
|
colcon 支持 --symlink-install
选项,作用是工作空间(source)中的文件发生变化时,安装目录(build)的文件也会随着改变。这样在调试的时候会高效一些,命令如下:
1 |
|
在package.xml里面添加
1 |
|
在CMakeLists.txt里面添加
1 |
|
如果你想要加快编译速度,可以使用 --parallel-workers
选项开启多个线程并行编译,例如同时启动 5 个线程:
1 |
|
编译完成后,就可以通过 ros2 run
命令带上 --prefix
参数传入 gdb
指令,在 GDB 调试环境中启动 ROS 节点程序。命令语法如下:
1 |
|
这里的 package_name 是 ROS 包名,executable_name 是节点程序名。
配置 GDB Server
ROS 中的 GDB 调试方法同样支持 GDB Server 远程调试,只需要修改 --prefix
参数即可,例如:
1 |
|