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的信息 

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江河地笑

实践是检验真理的唯一标准

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值