vscode给docker内部的的ros工程代码打断点

42 篇文章 7 订阅
8 篇文章 2 订阅

背景

打断点debug虽然不能直观看到变量在时间轴上的整体变化曲线,但是其针对某一帧问题数据,暂停后一步步单步执行监视每个变量的变化,方便直观的判断每一步逻辑的正确性,即使这个变量结构再复杂也能直接监视,可以准确定位到是哪一行代码出了问题;
我的本机环境:
Ubuntu18.04 + docker + ROS + VSCode + C++(CMake编译)
ROS节点跑在docker容器内

操作步骤1-插件安装

在vscode安装以下插件
c/c++插件;
ROS插件;
docker插件;
Remote Development;

操作步骤2-启动容器

docker run -it –net=host –-name <容器名> -v <你的要打断点单步调试的ROS工程本机路径>:<你的要打断点单步调试的ROS工程容器内路径>  <镜像名>:<tag名> bash

操作步骤3-配置文件

将下面的两个配置文件按照自己的ROS工程更改后放入工作空间.vscode文件夹:launch.json, tasks.json
在这里插入图片描述

//launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "hello_world_node",  //节点名
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/devel/lib/hello_world/my_hello_world_node", //节点可执行文件
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}", //"${fileDirname}",
"environment": [],
"externalConsole": false,
"preLaunchTask": "prerun",
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb",
"debugStdLib": true
}
]
}
//tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "prerun",
"type": "shell",
"command": "source devel/setup.bash && export ROS_MASTER_URI=http://172.17.0.1:11311/ "  //这里填入你自己的rosmaster ip
},
{
"label": "catkin build",
"type": "shell",
"command": "catkin_make",
"args": [
"-DCMAKE_BUILD_TYPE=Debug",
"-DCATKIN_BLACKLIST_PACKAGES=''",
"-DCATKIN_WHITELIST_PACKAGES=hello_world_node",//这里填入你自己的包名
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always"
},
"problemMatcher": "$msCompile"
},
]
}

操作步骤4-修改挂载的代码CMakeList

在你要debug的节点的CMakeList.txt加入下面一句

add_definitions("-Wall -g") 

操作步骤5-VSCode远程打开容器内的工作空间

安装了vscode的docker和remote development插件后,点击vscode左侧栏的”远程资源管理器”,Attach到你第一步创建的容器

操作步骤6-打断点及进行调试

打断点前,容器内还要安装gdb环境

apt-get install gdb

就在操作5弹出的容器内路径的vscode上,直接按F5或者点击”运行调试”

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wujiangzhu_xjtu

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值