ROS2 debug调试节点官方方法

官方教程

https://github.com/ms-iot/vscode-ros/blob/master/doc/debug-support.md

C++与python

C++的需要通过以下步骤进行debug(最近测试直接加断点,然后点debug也行,竟然和python一样,原因未知)
python的不用,python的直接点击IDE中的debug的按钮就行了

步骤1插件里安装ROS

在这里插入图片描述

步骤2 CMake里要设置为debug模式编译,否则无法debug!!!

对于你想调试的节点必须设置为debug模式
set(CMAKE_BUILD_TYPE “Debug”)
总之一定要设置为debug模式编译,不管你是colcon build的时候还是其他时候

步骤3 创建launch文件

在这里插入图片描述

步骤4 Ctrl+空格呼出补全界面,选择ROS ATTACH

在这里插入图片描述
##注意 代码有更新就需要重新colcon build,否则不生效

步骤5 在debug的位置打上断点

在这里插入图片描述

步骤6 启动你想调试的节点

无所谓是用官方教程中的插件启动还是正常的ros2 run启动都可以

步骤7 启动attach,连接你的节点进程

在这里插入图片描述

步骤7.1 输入你要调试的节点的可执行文件的名字

在这里插入图片描述
比如官方教程中给的例子是talker,你也输入你可执行文件的名字,其实也是进程名
如果你是c++的话,名字就是add_executable中的名字
在这里插入图片描述可以通过路径来看是不是你想调试的那个节点

最后,当程序运行到端点位置后,就可以debug了

在这里插入图片描述

### ROS_DEBUG_THROTTLE 宏的功能及用法 `ROS_DEBUG_THROTTLE` 是 ROS 提供的一个调试日志记录工具,用于控制消息的输出频率。其功能类似于 `ROS_INFO_THROTTLE` 和其他带 `_THROTTLE` 的宏[^2]。通过设置时间间隔(单位为秒),可以确保指定的日志消息仅在设定的时间窗口内被输出一次。 #### 使用方法 以下是 `ROS_DEBUG_THROTTLE` 的基本语法: ```cpp ROS_DEBUG_THROTTLE(double frequency_in_hz, const char* fmt, ...); ``` 其中: - **frequency_in_hz**:定义每秒钟最多允许输出多少条该类型的日志消息。例如,如果设为 1,则每隔一秒才会输出一条符合条件的消息。 - **fmt**:格式化字符串,支持 C 风格的占位符(如 `%d`, `%s` 等)。可以通过流式操作符 `<` 进一步扩展内容[^1]。 下面是一个具体的例子来展示如何使用它: ```cpp #include <ros/ros.h> int main(int argc, char **argv){ ros::init(argc, argv, "example_node"); while(ros::ok()){ int value = 5; // 当value大于0时,在两秒内只打印一次debug信息 if(value > 0){ ROS_DEBUG_THROTTLE(2.0, "Value is greater than zero: %d", value); } ros::spinOnce(); } return 0; } ``` 在这个实例中,当变量 `value` 大于零的情况下,即使条件持续满足,程序也只会按照每两秒一次的频率向终端发送对应的 debug 日志。 #### 功能特点 - 节省资源:对于频繁触发但又不需要每次都查看的信息非常有用,能够减少不必要的屏幕刷新和处理开销。 - 易读性增强:防止大量重复性的冗余数据淹没重要事件的通知。 需要注意的是,尽管此函数提供了很好的性能优化手段,但它仍然依赖全局计时器机制来进行速率限制管理,因此可能不适合那些对实时响应有极高需求的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值