整合自
vscode下调试ROS项目,节点调试,多节点调试,roslauch调试 - 知乎
VScode下对ROS launch文件进行调试_向南而行灬的博客-CSDN博客_roslaunch 调试
1.事前准备
打开vscode,安装扩展
ROS (选那个微软的)
C/C++
C++ intellisense
Txt Syntax (CMakeLists.txt文件语法高亮)
Msg Language Support (msg, srv, action语法高亮)
2.配置
打开你的代码工作空间(本文以比较有名的vins-mono为例)
创建一个launch.json
选GDB Debug就行
在.vscode文件夹下出现了个下面这么个玩意(该文件夹是隐藏的,可用ctrl+h来显示)
改成以下这样:configurations里面开几个launch就写几个大括号,用逗号隔开,name改一下,或者把所有node都放到一个launch里面开也行
{
"version": "0.2.0",
"configurations": [
{
"name": "ROS: Launch 1",
"type": "ros",
"request": "launch",
"target": "launch文件路径"
},
{
"name": "ROS: Launch 2",
"type": "ros",
"request": "launch",
"target": "launch文件路径"
},
... ...
{
"name": "ROS: Launch n",
"type": "ros",
"request": "launch",
"target": "launch文件路径"
}
]
}
以vins-mono为例也就是
{
"version": "0.2.0",
"configurations": [
{
"name": "ROS: Launch",
"type": "ros",
"request": "launch",
"target": "/home/mwy/vins-mono/src/VINS-Mono/vins_estimator/launch/euroc.launch"
}
]
}
3.编译代码
在CMakeLists.txt中添加 SET(CMAKE_BUILD_TYPE Debug) 注意不要用Release
在某些地方打上断点(比如我在optimization()函数里面打了断点)
catkin_make编译
4.launch文件运行
运行(我在外面的终端跑的数据集)
在程序里事先打几个断点,下面的DEBUG CONSOLE会告诉你hit到了哪个断点 按F5的话会继续运行到下一个断点
TERMINAL里面会输出代码里的ROS_INFO cout之类的东西,右边选择不同的节点可以看不同的输出。
假如程序里面出错的话,也会显示在哪里出的错
比如我随便加两句话,访问一个100个int的vector的不存在的数据。
跑起来就会报错
终端:
CALL STACK:
在里面耐心找找报错的地方,同时也会跳转到报错语句:
最后假如想停下DEBUG,上面这个红框框多点几次可以关掉所有开起来的节点,同理你可以在下拉菜单中关掉某个特定的节点。