在 vscode 中断点调试 ROS2 C++ 的办法
大部分内容引用自 知乎,不过有一些不同,所以还是单独写一篇博客。
安装ROS插件
在 VSCode 插件市场找到 Robotics Developer Environment 插件并安装。

编译Debug版本
bash
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug --symlink-install
DCMAKE_BUILD_TYPE 一定不能是 Release,否则无法 debug。
创建/修改配置文件
完成编译后,使用 f1 打开指令栏,输入:ROS2: Update C++ Properties 然后确认。

这会帮你在 .vscode 文件夹下生成 c_cpp_properties.json 和 settings.json 文件。这会帮你的 vscode 理解项目依赖的路径。修改 settings.json 文件, 在文件最后一个 } 前添加:
json
"ROS2.distro": "jazzy",
"ROS2.rosSetupScript": "${workspaceFolder}/install/local_setup.bash"
这会让 ros 插件 Source 当前的工作空间。
然后,创建 launch.json 文件 ,并写入以下内容:
json
{
"version": "0.2.0",
"configurations": [
{
"name": "ROS2: Launch my file",
"request": "launch",
"target": "${workspaceFolder}/install/xxx",
"launch": ["rviz", "gz", "gzserver", "gzclient"],
"type": "ros"
}
]
}
target 指向实际的 launch 文件。
如果只想对一个节点进行 debug,则应该向 launch.json 文件中加入:
json
{
"name": "ROS2 C++ Debug",
"request": "launch",
"type": "cppdbg",
"MIMode": "gdb",
"cwd": "${workspaceFolder}",
"program": "${workspaceFolder}/install/xxx/.../your_node"
}
program 指向实际的的可执行文件。
调试
在 Run and debug 栏,选择相应的配置项目,然后点击 F5 就可以对程序进行断点调试了。
一些问题处理
xxx.so: cannot open shared object file: No such file or directory
使用 vscode 调试 ROS 程序时出现 error while loading shared libraries: liblibstatistics_collector.so: cannot open shared object file: No such file or directory。重新 ldconfig 一下就好了:
bash
sudo ldconfig /opt/ros/<distro>/lib/.