为了避免以后还装,可以把自己容器打包为镜像,下次用。
以Debug模式:
bash展开代码# 使用 Debug 模式构建
catkin_make -DCMAKE_BUILD_TYPE=Debug
点这里:
然后点击创建 launch.json
Select debugger 选 C++ (GDB/LLDB)
在launch.json写上自己想调试的东西:
bash展开代码{
// 配置文件版本号
"version": "0.2.0",
// 调试配置数组
"configurations": [
// 调试 ROS mockamap 节点
{
// 配置名称,启动时显示
"name": "调试 ROS mockamap 节点",
// 调试类型,C++ 选择 cppdbg
"type": "cppdbg",
// 启动方式,launch 表示启动新进程
"request": "launch",
// 可执行文件路径 - 指向编译后的 ROS 节点
"program": "${workspaceFolder}/devel/lib/mockamap/mockamap_node",
// 传递给程序的命令行参数
"args": [],
// 是否在程序入口处暂停
"stopAtEntry": false,
// 调试时的工作目录
"cwd": "${workspaceFolder}",
// 传递给程序的环境变量 - 设置 ROS 环境
"environment": [
{
"name": "ROS_MASTER_URI",
"value": "http://localhost:11312"
},
{
"name": "ROS_PACKAGE_PATH",
"value": "${workspaceFolder}/src:${env:ROS_PACKAGE_PATH}"
}
],
// 是否使用外部终端
"externalConsole": false,
// 调试器类型,Linux 下用 gdb
"MIMode": "gdb",
// 调试器启动时的额外命令
"setupCommands": [
{
// 启用 gdb 的漂亮打印,便于查看变量
"description": "为 gdb 启用漂亮打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// 预启动任务 - 确保 ROS master 运行
"preLaunchTask": "启动 ROS master"
}
]
}
新建task.json写入:
bash展开代码{
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make",
"type": "shell",
"command": "catkin_make",
"args": ["-DCMAKE_BUILD_TYPE=Debug"],
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"
},
"problemMatcher": "$msCompile"
},
{
"label": "启动 ROS master",
"type": "shell",
"command": "roscore",
"args": ["-p", "11312"],
"isBackground": true,
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": {
"pattern": {
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
},
"background": {
"activeOnStart": true,
"beginsPattern": ".*ROS Master.*",
"endsPattern": ".*ROS Master.*"
}
}
},
{
"label": "编译 mockamap",
"type": "shell",
"command": "catkin_make",
"args": ["--pkg", "mockamap", "-DCMAKE_BUILD_TYPE=Debug"],
"group": "build",
"presentation": {
"reveal": "always"
},
"problemMatcher": "$msCompile"
}
]
}
// catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
最后样子就是:
打开代码 src/uav_simulator/mockamap/src/mockamap.cpp
点击这种地方加断点:
点击这个地方调试:
bash展开代码1. 点击"调试 ROS mockamap 节点"按钮
↓
2. VS Code 执行 "启动 ROS master" 任务
↓
3. 在后台启动 roscore -p 11312
↓
4. 等待 ROS master 就绪
↓
5. 启动 GDB 调试器
↓
6. 加载 mockamap_node 可执行文件
↓
7. 设置 ROS 环境变量
↓
8. 开始调试程序
程序在断点位置停止后,观察变量:
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!