Coco-LIC基于ubuntu的vscode进行断点调试

1、下vscode和插件

参考这个也行

https://zhuanlan.zhihu.com/p/704522656

2、编译debug版本并修改json

要在 Visual Studio Code (VSCode) 中进行断点调试 ROS 任务,你需要进行以下几个步骤:

1. 安装所需插件

  • **C/C++ 插件**: 提供对 C++ 代码的调试支持。

  • **ROS 插件**: 提供对 ROS 工作空间的集成支持(可选,但对 ROS 开发有帮助)。

2. 配置 CMake 和编译

确保你的 ROS 包和工作空间已经使用 `catkin_make` 或 `catkin build` 编译成功,并且包含了调试信息。在 `CMakeLists.txt` 文件中,确保添加了以下行来启用调试信息:

```cmake

set(CMAKE_BUILD_TYPE Debug)

```

然后,重新编译你的工作空间:

```bash

cd ~/catkin_ws

catkin_make

```

3. 配置调试环境

创建一个 `launch.json` 文件来配置 VSCode 的调试设置:

  1. 打开 VSCode,进入你的工作空间目录。

  2. 在左侧活动栏中点击调试图标(一个播放按钮和一个错误标记的图标),然后点击"创建一个 `launch.json` 文件"。

  3. 选择"C++ (GDB/LLDB)"作为环境。

  4. 编辑生成的 `launch.json` 文件,添加适用于 ROS 的配置。下面是一个示例配置:

```json

{

"version": "0.2.0",

"configurations": [

{

"name": "ROS Debug",

"type": "cppdbg",

"request": "launch",

"program": "${workspaceFolder}/devel/lib/your_package/your_node",

"args": \[\],

"stopAtEntry": false,

"cwd": "${workspaceFolder}",

"environment": \[\],

"externalConsole": false,

"MIMode": "gdb",

"setupCommands": [

{

"description": "Enable pretty-printing for gdb",

"text": "-enable-pretty-printing",

"ignoreFailures": true

}

],

"preLaunchTask": "build",

"miDebuggerPath": "/usr/bin/gdb",

"internalConsoleOptions": "openOnSessionStart",

"logging": {

"moduleLoad": true

}

}

]

}

```

确保将 `"program"` 字段设置为你的 ROS 节点的实际可执行文件路径(可以在 `devel/lib/your_package/` 目录下找到)。

4. 配置任务

创建一个 `tasks.json` 文件来配置构建任务:

  1. 在 `.vscode` 目录下创建一个 `tasks.json` 文件(如果尚未存在)。

  2. 添加以下内容以构建你的 ROS 包:

```json

{

"version": "2.0.0",

"tasks": [

{

"label": "build",

"type": "shell",

"command": "catkin_make",

"args": [

"--this"

],

"group": {

"kind": "build",

"isDefault": true

},

"problemMatcher": "$gcc",

"detail": "Generated task by VSCode."

}

]

}

```

5. 设置断点

在 VSCode 的编辑器中打开你的源代码文件,点击行号左侧的空白区域来设置断点。

6. 启动调试

  1. 确保 ROS 节点没有运行。

  2. 在 VSCode 中,点击左侧的调试图标,然后选择刚才创建的 `ROS Debug` 配置。

  3. 点击绿色的播放按钮开始调试。调试器将启动你的节点,并在设置的断点处暂停。

7. 运行 ROS Launch

如果你需要通过 `roslaunch` 启动整个 ROS 系统并调试其中的节点,可以在 VSCode 外部先启动 `roslaunch`,然后使用 VSCode 调试单个节点。

小提示

  • 确保 GDB 和其他调试工具已正确安装,并在系统路径中。

  • 如果调试过程中出现问题,可以查看 VSCode 的调试控制台和终端输出,获取更多的调试信息。

通过这些步骤,你应该能够在 VSCode 中进行 ROS 任务的断点调试。如果遇到具体问题,可以进一步调整配置或提供更多细节以获得帮助。

复制代码
比如这是我的launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "ROS Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/kj/catkin_ws/devel/lib/cocolic/odometry_node",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb",
            "internalConsoleOptions": "openOnSessionStart",
            "logging": {
                "moduleLoad": true
            }
        }
    ]
}

这是我的tasks.json


{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "catkin_make",
            "args": [
                "--directory",
                "/home/kj/catkin_ws",
                "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
            ],
            "problemMatcher": [
                "$catkin-gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Build ROS workspace using catkin_make"
        }
    ]
}

3、调试遇见include找不到的问题

{ "resource": "/home/kj/catkin_ws/src/Coco-LIC/src/odometry_node.cpp", "owner": "C/C++: IntelliSense", "code": "1696", "severity": 8, "message": "无法打开 源 文件 \\"odom/odometry_manager.h\\"", "source": "C/C++", "startLineNumber": 22, "startColumn": 1, "endLineNumber": 22, "endColumn": 35 }

解决方案是,增加一条IncludePath

4、ERROR 1722929440.191555478: registerPublisher Failed to contact master at localhost:11311. Retrying... 断点调试遇到这种问题

错误通常是因为 ROS master 没有运行或是环境变量 ROS_MASTER_URI 没有正确设置。在终端中你通常会手动运行 roscore 来启动 ROS master,但在调试时可能没有这样做。

比如控制台的命令是:roslaunch cocolic odometry.launch config_path:=config/ct_odometry_r3live.yaml

解决方案:

第一:在非vscode中的控制台下输入(起到一个类似监视的作用)

roscore

第二:确保正确设置 ROS_MASTER_URIROS_IP : 确保在调试环境中设置了正确的环境变量。可以在 launch.json 中设置环境变量。

然后就可以进行断点调试了

5、断点调试中,发现需要输入参数

原始命令行:roslaunch cocolic odometry.launch config_path:=config/ct_odometry_r3live.yaml

需要在aunch.json中增加args的信息

相关推荐
我要见SA姐13 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
我本善良ab6 小时前
PVE使用GRUB如何复位ubuntu的管理员密码?
ubuntu·忘记密码
ι:7 小时前
NUC12 Pro 安装 Ubuntu 24.04 LTS 详细教程
linux·windows·ubuntu·nuc
00后程序员张9 小时前
Xcode vs KXApp,体积差几十G,选轻量方案还是完整工具链?
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
虚无的纽扣11 小时前
【Linux】一篇文章带你吃透进程控制:fork、wait、exit到底在做什么
linux·ubuntu
别动我齐刘海13 小时前
ROS2 Jazzy + C++ 实战路线——基础学习1
c++·vscode·python·ubuntu·机器学习·自动驾驶·github
浪淘沙jkp14 小时前
全程无人值守完成ubuntu22.04到xubuntu 24.04.5的升级
ubuntu
sean90814 小时前
Ubuntu 26.04 终端显示冗余信息
ubuntu·终端·异常
小小的木头人1 天前
Ubuntu Samba修改端口绕过445封禁挂载
运维·ubuntu
lifewange1 天前
VSCode怎么运行java
java·ide·vscode