Ubuntu vscode GDB调试ROS代码

本文详细介绍了如何在Visual Studio Code(VSCode)中设置和调试ROS项目,包括安装必要的扩展、配置launch.json文件、编译代码以及如何通过launch文件进行调试。在调试过程中,可以设置断点,查看程序输出,并有效定位和解决错误。通过VSCode的ROS扩展,开发者能够高效地调试多节点ROS应用。
摘要由CSDN通过智能技术生成

整合自

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,上面这个红框框多点几次可以关掉所有开起来的节点,同理你可以在下拉菜单中关掉某个特定的节点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值