ros 程序断点调试_ROS下如何Debug?5分钟快速入门

2023-10-27

更受欢迎的开源机器人操作系统ROS已经九岁了。ROS给机器人系统的进程间通讯提供了一个统一的,跨平台的框架,这给经常连接几十个各种各样设备的机器人应用带来了非常大的便利。我也很喜欢使用ROS,以前打Robocup的时候,整个人形机器人的上层控制系统就是全部基于ROS Groovy写的。那时候开发和Debug主要靠Qt,反正队里有大神搞定编译的问题。

但如果不能用Qt之类的IDE呢?其实和其他Linux编程一样,用命令行有很方便而且很轻便的工具,只是上手未必容易。今天这篇文章我们把命令行下Debug ROS程序的流程整个梳理一遍,看完你会发现,其实并不复杂!

我们使用的主要工具是GDB。这是Linux诸多c/c++ debug工具中最流行的一种。只要你装了gcc(这是大多数Linux系统的默认c/c++编译器),GDB一般都捆绑安装过了。本文只讨论使用c++的 ROS程序。Python有PDB,我还不了解。

如果有更好的方法欢迎留言讨论!

步骤一  Build with debug label

编译器有些优化会让debug无法进行。为了避免这种情况,程序编译时要加上debug选项。

如果你用Catkin,用catkin_make 时加上一个参数:

catkin_make -DCMAKE_BUILD_TYPE=Debug

如果你想给Release版本Debug,就这样

catkin_make -DCMAKE_BUILD_TYPE=RelWithDebInfo

如果你用Rosbuild,在你的CMakeLists.txt靠近顶部的位置加上这样一句即可:

set(ROS_B

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

ros 程序断点调试_ROS下如何Debug?5分钟快速入门 的相关文章

  • elk笔记13--Query DSL

    elk笔记13 Query DSL 1 基础介绍 2 常见查询类型 2 1 Query and filter context 2 2 Compound queries 2 3 Full text queries 2 4 Geo querie
  • leptonica源码编译

    leptonica源码编译 原创作品 转载请说明出处 谢谢 原创作品 转载请说明出处 谢谢 原创作品 转载请说明出处 谢谢 环境软件 a leptonica1 78 0 b cppan c cmake d VS2015 e 操作系统Wind
  • python挖掘时间特征信息,计算日期是当年的第几周、当月的第几周

    需要使用的主要有两个工具包 from datetime import datetime from calendar import monthrange 分别计算当前的日期对应的 所在年份 所在月份 当前月的第几日 星期几 当月的天数 当年的
  • 手机厂商竞相推“新品牌”,想明白了吗?

    2013年 国产智能手机 新品 市场可谓热闹非凡 9月28日 联想发布高端子品牌VIBE 11月20日 金立发布全新互联网品牌INUI 华为也有意将荣耀品牌从华为分离出来 使其成为独立互联网手机品牌 11月17日 OPPO手机副总经理刘作虎
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 2022年网络安全比赛--压缩包文件暴力破解中职组(超详细)

    2022年比赛压缩包文件暴力破解解析 一 竞赛时间 180分钟 共计3小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1 通过本地PC中渗透测试平台Kali使用Nmap扫描目标靶机服务版本信息 将 Telnet 版本信息字
  • Angular学习笔记29:事件绑定

    事件绑定 前面的绑定都是按照 元素到组件的方式 但是在一个页面不可能只是数据展示给用户 而用户对页面没有任何操作 不能进行和页面的交互操作 在与用的交互操作时 怎么才能知道用户进行了怎么样的操作和交互呢 这个时候 就用到了各种事件 如按下键
  • stm32f103c8t6+dht11测量温湿度(单总线协议)

    核心问题 如何根据电路和时序来写程序 接口协议 单总线 意味着一根数据线实现接收和发送 所以相应的GPIO口要设置为2种模式 输入 输出 电路 如果没有在电路中作5k上拉 可以把GPIO模式设置成GPIO Mode IPU实现软件上拉的效果
  • 创建一个有返回值的线程,实现Callable接口

    背景 模拟创建3000条Json格式的数据用于测试 创建定长线程池 启动10个线程 同时 增加模拟数据 记录生成程序的总时间消耗 最后打印在控制台 或输出到目录文件中 1 创建启动方法 读取服务器目录json文件 import java i
  • 使用cygwin和ndk生成so库供android使用(jni,交叉编译,opencv,neon)

    1 cygwin 安装 参考 https www cnblogs com webapplee p 3774047 html http www docin com p 1005446599 f6 html 2 下载ndk和依赖opencv 我
  • mysql中根据表格中的某个字段的值关联不同的表

    SELECT a CASE WHEN a in out in THEN bp purchase num END AS purchase num FROM psom stock detail info a LEFT JOIN psom sto
  • iOS开发者必备:六大图片、图标处理类工具(转载)

    摘要 在新发布的iOS 7正式版中 采用了扁平化和极简化设计风格取代传统的真实拟物风格 使的整个界面变得非常简单 干净 并以此基础重新设计了iOS外观 本文就为iOS设计师介绍6个简约而不简单的iOS图像和图标处理工具 人们常常将简约等同于
  • Ubuntu 18.04 2080ti 安装显卡驱动

    buntu 18 04 2080ti 安装显卡驱动 个人记录 仅供参考 安装的方法有很多种 这里采用的是从官网上下载显卡对应的包 然后进行本地安装 第一步 去 VIDIA官网上找到合适的包 第二步骤 第三步 选择使用 我在安装的时候跳过了第
  • 绝地求生 压枪 Python 版!

    仅做学习交流 非盈利 一 概述 1 1 效果 总的来说 这种方式是通过图像识别来完成的 不侵入游戏 不读取内存 安全不被检测 1 2 前置知识 1 游戏中有各种不同的枪械 不同的枪械后坐力不一样 射速也不同 相同的枪械 装上不同的配件后 后
  • Depth-wise Convolution 和 Point-wise Convolution 以及 Depth-wise Separable Convolution

    文章目录 一 Depth wise Convolution 二 Point wise Convolution 三 Depth wise Separable Convolution 参考 一 Depth wise Convolution 普通
  • file.exists(),file.isFile()和file.isDirectory()的区别

    file exists file isFile 和file isDirectory 的区别 作为一个java小白 嘻嘻 最近在学习File类的时候遇到了疑惑 分不清这三个方法 查询了一下还是不大明白 然后 还是自己动手实验吧 好嗨哟 在这记
  • C++中stof函数数字转换问题

    C 中stof函数可将string类型的函数转换为double类型 在项目中碰到一个问题 23 8 stof 23 8 判断出来的结果是false 我最终使用的解决办法是将string转换称char后再转换为double类型 但是产生这个问
  • 【机器学习】算法 之 决策树

    参考 https blog csdn net jiaoyangwm article details 79525237 一 基本原理 决策树 decision tree 是一种基本的分类与回归方法 此处主要讨论分类的决策树 在分类问题中 表示
  • 左程云算法课堂笔记(初级1)

    排序算法1 插入排序 基础知识 核心 遍历扫描数组 将每一步所得的最小值放入相应的位置 对于同样时间复杂度的算法 比较其速度 执行代码比较时间即可 时间复杂度 空间复杂度 空间复杂度 解释 若出执行算法时 需要另外开辟与原数组等规模的空间

随机推荐

  • ISP和IAP介绍

    ISP 和 IAP 介绍 ISP 简介 In System Programable 是指在系统编程 通俗的讲 就是芯片已经焊板子上 不用取下 就可以简单而方便地对其进行编程 比如我们通过电脑给 STC 单片机下载程序 或给 AT89S51
  • 四种扩展ping命令

    ping t 长ping命令 该命令如果不手动终止ping的话 会在后台一直ping下去 手动终止 Ctrl c ping l 指定数据包的大小 一般ping命令的数据包都在32字节 使用该命令可以更改数据包的字节大小 ping n 确定p
  • 如何搭建测试环境

    记第一次搭建测试环境的经历 准备工作 环境部署文档 开发提供 xftp 上传 下载文件到Linux xshell 远程连接Linux用 查看哪些端口被打开 netstat an 查看某端口是否被打开 netstat an grep 3306
  • 初中32个元素符号_初中化学常考元素,一定要背过!

    初中必背前20号元素序号 元素 拼音 符号 相对原子质量数 第一周期元素 1 氢 q ng H 1 0079 12 氦 h i He 4 0026 4第二周期元素 3 锂 l Li 6 941 74 铍 p Be 9 0122 95 硼 p
  • 微服务,BFF,API gateway 学习笔记

    一 微服务 微服务是什么 微服务模式的一般设计见下图 如上图所示 把业务分块 做了垂直切分 切成一个个独立的系统 每个系统各自衍化 有自己的数据库 缓存等辅助系统 各个微服务共同完成整个系统功能 对于单机数据库写请求量大量增加 导致数据库压
  • Tomcat调优参数

    tomcat的整体结构 tomcat主要有两个核心的功能 1 处理socket连接 字节流的request responese转换 2 加载管理servlet 所以 tomcat设计了两个组件 connector和container 容器在
  • python列表元组和字典课后练习

    1 根据下述要求 编写一个程序 用户输入一个字符串 将下标为偶数的字符提出来合并成一个新的字符串A 再将下标为奇数的字符提出来合并成一个新的字符串B 再将字符串A和B连接起来并输出 通常一个切片操作要提供三个参数 start index s
  • 基于Pytorch深度学习垃圾分类系统设计与实现

    使用的设备主要是树莓派 单片机 C8T6 蓝牙HC 05 红外传感器 舵机 两个 高清广角摄像头等 采用深度学习技术为Pytorch 学习的课程是沈福利 Pytorch项目实战 垃圾分类 深度学习 如果有需要 课程 源码 训练模型结果 论文
  • 《神经网络与深度学习》第一章(使用神经网络识别手写数字)读书笔记

    说明 神经网络与深度学习 中文版可在网上免费获取 是浙江科技学院开放实验课程 Python与深度学习入门 的课外推荐读物 本读书笔记大部分为摘抄 本文章目前处于暂停更新状态 恢复更新时间待定 文章中的灰色引用块与手写数字识别有关 1 1 感
  • 手撸代码-HADOOP-RPC

    4个类就可体验HADOOP RPC的简单 实用 一 writable rpc 一 协议 所谓协议 实际是一个接口 用来定义该RPC提供的功能 package rpc writeable public interface MyProtocol
  • 攻克哈希的基本概念与实现

    基本定义 哈希表的定义简介 散列表 Hash table 也叫哈希表 是根据关键码值 Key value 而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 这个映射函数叫做散列函数 存放记录
  • 多标签分类怎么做?(Python)

    一 基本介绍 首先简单介绍下 多标签分类与多分类 多任务学习的关系 多分类学习 Multi class 分类器去划分的类别是多个的 但对于每一个样本只能有一个类别 类别间是互斥的 例如 分类器判断这只动物是猫 狗 猪 每个样本只能有一种类别
  • [R可视化]数据探索可视化:棘状图和箱线图(以信用卡违约率数据为例)

    以信用卡违约率数据为例 一 客户年龄和信用卡违约的关系 1 不同违约状态下的年龄箱线图 2 不同年龄组 因为年龄的取值过多 的违约率 3 rcode 违约率对年龄的分组箱线图 boxplot X5 Y data dta0 col c lig
  • Python 环境下下载并安装NLTK说明

    我第一次直接用的是pip install nltk 命令告诉我网络超时 后来我用下面的步骤进执行就下载成功了 1 在cmd窗口中 进入到python的文件夹内的 Scripts内 我的目录地址是 D Python Scripts 命令行输入
  • java 连多个 oracle,在一个Java应用程序中使用多个Oracle JDBC驱动程序?

    我想通过JDBC连接到两个不同的Oracle数据库 一个8 0 5 0 0和一个12c 我有两个JDBC驱动程序 可以通过简单的 hello world 应用程序单独成功连接到相应的DB 下面 我将它们放在一个Java应用程序中 遗憾的是它
  • vi中 wq 、wq!、x、q、q!区别

    上面的命令只是在vi编辑命令中使用 wq 表示保存退出 wq 表示强制保存退出 x 表示保存退出 wq和wq 的区别如下 有些文件设置了只读 一般不是修改文件的 但是如果你是文件的owner或者root的话 通过wq 还是能保存文件退出 如
  • Mybatis如何查询数据部分字段显示为null,转成空串(““)呢?

    转自 Mybatis如何查询数据部分字段显示为null 转成空串 quot quot 呢 Mybatis查询数据时 字段为null 转换为空串的方法分享 实现思路 1 定义handler实现字段中的null转换为空串 2 Mapper xm
  • MFC中Picture Control控件的使用

    项目源码下载 http download csdn net download zhuzemin45 12005643 所有需要的文件都打包在项目中 下载解压即可 MFC中红绿指示灯控件的使用 Picture Control控件创建指示灯步骤
  • 【Liunx常用操作】Ubuntu Server系统配置软件源

    提示 为保证文章的正确性和实用性 文章内容可能会不定时优化改进 若您有建议或者文章存在错误请私信留言或评论指正 下面以Ubuntu22 04操作系统为例 介绍具体的操作步骤 如果本文对你有帮助 记得关注加收藏 1 文章前言 本章以Ubunt
  • ros 程序断点调试_ROS下如何Debug?5分钟快速入门

    更受欢迎的开源机器人操作系统ROS已经九岁了 ROS给机器人系统的进程间通讯提供了一个统一的 跨平台的框架 这给经常连接几十个各种各样设备的机器人应用带来了非常大的便利 我也很喜欢使用ROS 以前打Robocup的时候 整个人形机器人的上层