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

2023-05-16

背景

打断点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或者点击”运行调试”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode给docker内部的的ros工程代码打断点 的相关文章

  • centos安装软件失败

    错误 xff1a 为仓库 appstream 下载元数据失败 Cannot prepare internal mirrorlist No URLs in mirrorlist 问题参考 CentOS Linux 8 AppStream 错误
  • Docker容器安装ssh

    Docker 容器里安装ssh和连接ssh 在服务器创建容器中安装了anaconda xff0c 为了方便敲代码 xff0c 用pycharm连接容器中的anaconda xff0c 我们需要安装ssh服务 前提 创建好docker容器 x
  • 阿里云创始人王坚正式回归阿里云

    5 月 11 日消息 xff0c 阿里云创始人王坚正式回归阿里云 据多名知情人士透露 xff0c 早在 2022 年底 xff0c 王坚其实就已经应张勇等人邀请 xff0c 以幕后顾问的角色进行考察和指导阿里云的工作 经过几个月的磨合和协商
  • random.seed()的用法

    random random 可以用来生成一个随机数 xff0c 如果在生成随机数之前 xff0c 先调用random seed x xff0c x可以是一个随机整数 xff0c 这时候在调用random random xff0c 则种子x和
  • PRGC: Potential Relation and Global Correspondence Based Joint Relational Triple Extraction

    标题 xff1a PRGC xff1a 基于潜在关系和全局对应的联合关系三元组抽取 摘要 联合抽取实体和关系的局限性 xff1a 关系预测的冗余性 xff0c 基于span抽取泛化能力差和效率低 本文从新角度将此任务分解为三个子任务 xff
  • 查看显存使用情况:nvidia-smi

    在装有nvidia驱动的机器终端输入nvidia smi xff0c 可以查看显卡的状况 xff0c 其输出界面如下 xff1a NVIDIA 系统管理接口 xff08 nvidia smi xff09 是一个命令行实用程序 xff0c 基
  • Docker更换Docker Root Dir目录

    原因 xff1a 我在加载自己的镜像时 xff0c 发现root空间不足 xff0c 无法加载 xff0c 所以需要更改Docker Root Dir目录 xff0c 才能放下我的镜像文件 具体方法 一 查看默认目录 执行docker in
  • PHP关于时间的整理

    year 61 date 34 Y 34 month 61 date 34 m 34 day 61 date 34 d 34 dayBegin 61 mktime 0 0 0 month day year 当天开始时间戳 dayEnd 61
  • 制作.sens数据集跑通bundlefusion

    1 主要参考这篇博客实现 https blog csdn net Wuzebiao2016 article details 94426905 2 首先就是将自己采集的RGBD图像的保存格式向Bundlefusion需要的格式对齐 xff0c
  • python之moviepy库的安装与使用

    目的 xff1a 因为需要保存一个大大的 mp4视频 xff0c 以防过程中设备出现异常导致整个长长的视频无法正常保存 xff0c 所以采用分段保存视频的方式 xff0c 每500帧保存一段 xff0c 然后再将视频合到一起 xff0e 最
  • 使用iai_kinect2标定kinectV2相机

    实验背景 xff1a 因为需要制作bundlefusion需要的数据集 xff0c 所以需要使用kinectV2相机获取rgbd图像 xff0c 年前的时候在我的笔记本上安装了libfreenect2库和iai kinect2 xff0c
  • python中将四元数转换为旋转矩阵

    在制作bundlefusion时 想测试TUM数据集 并且将groundtruth写入到数据集中 TUM中给定的groundtruth中的旋转是使用四元数表示的 而bundlefusion中需要SE3的形式 所以我需要首先将四元数转换为旋转
  • 做了8年游戏开发的程序员对未来的忧虑

    编者按 xff1a 这位做了8年游戏开发的程序员的忧虑或许不是个例 xff0c 也可能是我们许多人正在经历或者将要经历的一个人生迷茫期 鉴于此 xff0c 希望他的忧虑和对未来的思考也能对你在现在或者将来的选择上有所帮助 我 22 岁毕业
  • BundleFusion那些事儿

    背景 xff1a 前面几篇博客中写了很多关于BundleFusion的东西 xff0c 主要包括bundlefusion的论文阅读笔记 xff0c sens数据集的生成等 xff0c 经过最近几天的工作 xff0c 我对bundlefusi
  • BundleFusion代码框架讲解

    背景 xff1a 前面用了几篇文章来记录和总结了 xff0c 我在研究bundlefusion过程中遇到的一些问题以及解决方法 xff0c 本来想实现给bundlefusion输入先验轨迹 xff0c 然后让其根据给定的轨迹进行重建 xff
  • 相机和镜头选型需要注意哪些问题

    背景 xff1a 最近需要优于项目需求需要对工业相机和镜头进行选型 xff0c 于是我就开启的学习相机之旅 xff0c 虽然我一直在做机器视觉方向 xff0c 但是我对相机的了解还是很少 xff0c 我想正好趁这次机会好好学习一下 如果有错
  • Ubuntu18.04上下载安装使用sogou输入法

    下载地址 xff1a 搜狗输入法Linux官网 首页 安装设置网址 xff1a 搜狗输入法Linux官网 安装指导 这样Ubuntu下工作就更加方便了
  • ros rviz显示rosbag中的图像和imu数据

    一 rosbag相关的指令 1 rostopic list 列举出系统中正在发布的ros 话题 2 rosbag record a 录制系统中所有正在发布的ros 话题 3 rosbag record topic1 topic2 o bag
  • 双目测距误差评估

    我修完产假回来上班了 xff0c 被分到了割草机项目组 xff0c 机遇与挑战并存 xff0c 我啥也不会 xff0c 但是这次扛下来也许就蜕变了呢 xff0c 也许我是想多了 xff0c 管他呢 xff0c 有问题咱就解决 xff0c 有
  • ORB-SLAM2中四叉树管理特征点

    当从图像金字塔中的每一层图像上提取特征点之后 xff0c 都要先用四叉树技术对这些特征点进行管理 该类中定义了四叉树创建的函数以及树中结点的属性 bool bNoMore xff1a 根据该结点中被分配的特征点的数目来决定是否继续对其进行分

随机推荐

  • 在Ubuntu 16.04 上安装和卸载matlab 2018b(Install and uninstall matlab 2018b on ubuntu)

    1 安装2018b可以参考下面两篇文章 https www ph0en1x space 2018 04 23 ubuntu matlab https blog csdn net qq 32892383 article details 796
  • 研究相机和IMU坐标系变换

    刚开始录制的数据时没有考虑相机和IMU之间的坐标变换 xff0c 但是后来发现跟踪效果不好 xff0c 去查验imu数据时 xff0c 发现 xff0c 我采集保存的imu数据格式没有和euroc数据集中的imu数据保存格式统一 xff0c
  • 飞控简析-从入门到跑路序章

    一 序言 茫茫天数此中求 xff0c 世道兴衰不自由 万万千千说不尽 xff0c 不如推背去归休 本人搞飞控差不多两年了 xff0c 从一开始什么都不懂的真 小白 xff0c 到现在的高级小白 xff0c 我已经经历了太多太多 因为感觉飞控
  • 新手到黑客的最全入门路径图(附全部学习资料下载)!

    点击上方 程序人生 xff0c 选择 置顶公众号 第一时间关注程序猿 xff08 媛 xff09 身边的故事 01 入门介绍
  • 飞控简析-从入门到跑路 第二章PX4的位置控制(2)

    1 control auto 说完control manual xff0c 接下来我们在看看control auto control auto是用来处理自动控制的函数 xff0c 即把航线任务转换为期望位置 函数位于Mc pos contr
  • 嵌入式项目研发到量产的流程

    本篇文章讨论嵌入式产品的设计到量产的一个完成流程 xff0c 以车联平台TBox设计为例 流程简述 1 xff09 需求方提需求 xff0c 项目组对需求进行分析 2 xff09 项目组给出设计草案和产品概念模型 3 xff09 设计产品原
  • 我的三种时间对齐方法

    要对齐一段时间内两组时间密度不一样的数据 xff0c S组是4000个时间节点 xff0c G组是20000多个时间节点 xff0c 这里展示了三种方法 xff1a 1 快速扫描算法 xff0c 设置时间精度为0 005s xff0c n的
  • postman后置脚本编写

    参数关联 xff1a 上一个接口返回token xff0c 如何传到下个接口中 xff1f 则需要写后置脚本来获取 1 打开登录接口 xff0c 在Tests区域编写javasscript脚本解析返回response对象 xff0c 从js
  • vscode代码拉取、提交

  • Docker“Got permission denied while trying to connect to the Docker daemon socket“

    问题 我在进行docker pull bestwu qq操作的时候报了错误 xff1a Got permission denied while trying to connect to the Docker daemon socket at
  • USB接口如何检测到设备的插入

    当插座上没有接设备时 xff0c D 43 和D 被15K的电阻下拉到低电平 xff0c 当有设备接入时 xff0c 例如一个U盘设备插入usb接口 xff0c vbus如果是3 3V xff0c 那么对于D 43 的点平则是一个高电平 x
  • 1.gazebo启动与界面介绍

    gazebo启动与界面介绍 1 启动gazebo ubuntu环境下使用ctrl 43 alt 43 t快捷键打开命令行 xff0c 在命令行中直接输入gazebo即可启动gazebo 2 界面介绍 看图 参考官网介绍
  • 程序媛有话说丨35岁的我是如何成功转型,给职场迷茫的师兄师姐师弟师妹

    点击上方 程序人生 xff0c 选择 置顶公众号 第一时间关注程序猿 xff08 媛 xff09 身边的故事 我 82 年出生在中国的一个二线城市 xff0c 毕业于一个三流大学的计算机专业 父母都是国有企业的一般职工 xff0c 没有什么
  • AI时代的思维方式

    2017年5月23日 xff0c 百度联盟大会在重庆召开 xff0c 李彦宏发表演讲 xff0c 阐释AI 时代的思维方式 xff1a 手机还会长期存在 但移动的机会不多了 From think Mobile to think AI 软硬结
  • dubbo超时重试和异常处理

    dubbo超时重试和异常处理 参考 xff1a https www cnblogs com ASPNET2008 p 7292472 html https www tuicool com articles YfA3Ub https www
  • 语音信号的短时傅里叶分析

    语音信号的短时傅里叶分析 文章目录 语音信号的短时傅里叶分析概述短时傅里叶变换短时傅里叶的取样率时域取样率频域取样率总取样率 语音信号的短时综合滤波器组求和法快速傅里叶变换求和法 语谱图宽带语谱图的典型谱型窄带语谱图的典型谱型窄带语谱图的典
  • 5分钟教你搞定一个超详细超简单的图形化界面(Java图形化界面设计之容器(JFrame))

    第一步 xff1a 创建一个maven项目 第二步 xff1a pom xml文件导入相关依赖 第三步 xff1a 写代码啦 xff0c 写完后直接运行即可 第四步 xff1a 程序运行起来啦 第一步 xff1a 创建一个maven项目 第
  • openMP使用

    openMP使用 项目需要对程序的运行进行加速 xff0c 在不考虑更换硬件的前提下 xff0c 考虑采用多线程对代码进行优化 xff0c 以下记录学习过程 处理器采用大疆秒算2 C xff0c CMakeList配置参考这篇博客 xff1
  • VSCode git工具

    之前都是老老实实用命令行敲命令 xff0c 其实VSCode自带得git工具已经非常方便 命令行提交代码 首先先介绍之前在命令行 ubuntu终端 xff0c windows git bash here 操作 xff1a 工程路径下 xff
  • vscode给docker内部的的ros工程代码打断点

    背景 打断点debug虽然不能直观看到变量在时间轴上的整体变化曲线 xff0c 但是其针对某一帧问题数据 xff0c 暂停后一步步单步执行监视每个变量的变化 xff0c 方便直观的判断每一步逻辑的正确性 xff0c 即使这个变量结构再复杂也