vscode ROS c++代码调试

本文详细介绍了如何在VSCode中配置launch.json进行ROS节点调试,包括设置debug配置、cmakelist文件调整及实际操作步骤,适合解决coredump问题的开发者使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用vscode调试代码主要步骤包括两步:debug配置和设置断点调试。
在ros节点能编译运行的前提下,对出现的core dump等问题进行调试。
一、debug配置
debug配置包括vscode配置以及ros功能包的cmakelist文件配置。
vscode配置:

1.创建并配置launch.json文件

VSCode中是以workspace的概念处理文件关联的,每个workspace文件夹下会有一个.vscode文件夹,该文件夹下放置的是关于该workspace的路径配置、任务配置、运行配置等文件,我们正是通过编辑这些配置文件实现对工程的管理。

一般没有launch.json文件,需要自己手动生成。生成方法:
Ctrl + Shift + D弹出调试窗口,点击create a launch.json file, 一般选择gdb模式。
请添加图片描述
创建出来的launch文件中:
修改“name"为调试的节点名(随便自己定都行,只是方便在调试多个程序的时候有区分)
修改"program"为可执行文件的位置,在ros中一般是在devel/lib/包名/路径下

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "send_node",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/track_ws/devel/lib/mot_tracking/data_send_node",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

2.设置编译文件cmakelist文件为编译模式

在cmakelist文件中添加:

SET(CMAKE_BUILD_TYPE Debug)

或者是catkin_make在编译功能包时,添加catkin_make的参数

catkin_make -DCMAKE_BUILD_TYPE=Debug

如果工作空间下由多个功能包,可以在编译时添加-DCATKIN_WHITELIST_PACKAGES编译指定功能包

catkin_make -DCMAKE_BUILD_TYPE=Debug -DCATKIN_WHITELIST_PACKAGES="package1;package2"

3.最后重新编译,就可以设置断点进行调试了

Ctrl + Shift + D弹出调试窗口
点击绿色小三角进行调试,然后就可以正常的像一般调试一样单步运行查看中间变量了。
请添加图片描述
参考:https://blog.csdn.net/u013834525/article/details/106003959
https://blog.csdn.net/u012254599/article/details/106143540/?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242.1

### 配置 ROS2 C++ 项目在 VSCode 的单步调试 #### 创建并配置 launch.json 文件 为了实现单步调试,需创建 `.vscode` 文件夹下的 `launch.json` 文件。此文件用于定义启动配置,允许开发者指定调试器的行为。对于 ROS2 节点而言,一个典型的配置如下所示: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/install/<package_name>/lib/<package_name>/<node_executable>", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: cmake build active file", "miDebuggerPath": "/usr/bin/gdb" } ] } ``` 上述 JSON 片段展示了如何通过修改 `"program"` 字段来指向具体的可执行文件位置[^1]。 #### 修改 CMakeLists.txt 支持调试信息 确保 CMakeLists.txt 中包含了 `-DCMAKE_BUILD_TYPE=Debug` 参数,以便编译过程中加入必要的调试符号。这有助于提高调试效率和准确性[^3]。 #### 编辑 c_cpp_properties.json 文件 当遇到头文件路径无法解析的情况时,可以通过编辑 `c_cpp_properties.json` 来解决这个问题。通常情况下,VSCode 提供了一个便捷的方式——即点击带有波浪线的错误提示旁的小灯泡图标,并选择相应的修复建议。这样可以自动生成或更新现有的 `c_cpp_properties.json` 文件,从而正确识别包含路径和其他编译选项[^2]。 #### 添加 compile_commands.json 到工作区 为了让 IntelliSense 更加智能地理解代码结构,推荐向 `.vscode/settings.json` 或者直接在根目录下添加 `"compileCommands": "${workspaceFolder}/build/compile_commands.json"` 这样的键值对。这样做可以让工具更好地支持代码补全等功能[^5]。 完成以上步骤之后,就可以按下 F5 键开始调试会话了。此时应该能够顺利进入断点并逐步跟踪程序逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值