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

### 配置 VSCode 支持 C/C++ 开发 为了使 Visual Studio Code (VSCode) 能够支持在 Ubuntu 20.04 上进行高效的 C/C++ 开发,需安装必要的编译工具并设置合适的扩展。 #### 安装编译器和其他开发工具 对于编译环境而言,在终端执行命令来安装 Clang 编译器以及 ROS 开发所需的一系列工具集可以满足需求: ```bash sudo apt update && sudo apt upgrade -y sudo apt install clang ros-dev-tools -y ``` 上述操作不仅提供了基础的编译能力还包含了构建 ROS 包所需的组件[^1][^2]。 #### 安装 VSCode 及其插件 确保已安装最新版本的 VSCode 后,通过 Extensions 视图(快捷键 `Ctrl+Shift+X`),搜索 "C/C++" 并点击安装由 Microsoft 提供的那个官方扩展程序。此扩展包内含 IntelliSense 功能用于代码补全、调试等功能的支持。 #### 创建工作区文件夹结构 创建一个新的项目目录,并初始化 git 或者其他版本控制系统以便于管理源码变更历史。同时建立 `.vscode/launch.json`,`.vscode/tasks.json` 文件用来定义启动配置项与任务脚本。 #### 配置 launch.json 和 tasks.json 编辑 `.vscode/launch.json` 来指定调试参数;而 `.vscode/tasks.json` 则负责描述预处理指令如编译过程中的选项设定等。以下是两个 JSON 文件的一个简单例子: **launch.json** ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb" } ] } ``` **tasks.json** ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "/usr/bin/clang++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to build a single file." } ] } ``` 以上配置允许用户直接从 IDE 中触发构建流程,并且能够方便地利用断点来进行单步跟踪式的调试体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值