ROS2 调试 & 性能分析

📘 30 章 · 工具箱
调试的重要性 常见调试场景 调试工具链概览
rclcpp日志宏 日志级别设置 日志输出格式定制
条件日志 一次性日志 节流日志 日志文件持久化
ros2 topic echo/bw/hz ros2 service call ros2 param get/set
节点与话题关系图 调试通信拓扑 隐藏/过滤节点
实时日志过滤 日志严重级别高亮 日志导出与分析
实时曲线绘制 多话题叠加 数据导出为CSV
ros2 bag record/play bag信息查看 bag文件压缩与分割
动态参数配置 实时调参 参数保存与加载
TF树可视化 坐标变换查看 TF广播频率检测
编译调试模式 GDB附加到运行节点 断点设置与堆栈查看
内存泄漏检测 内存越界检查 性能分析工具Callgrind
编译时启用ASan 运行时错误定位 与GDB结合使用
CPU Profiling概念 性能瓶颈识别 Profiling工具选择
perf stat/record/report 热点函数定位 调用图生成
集成到ROS2节点 Profiler启动与停止 分析报告解读
堆内存分析 内存增长追踪 内存泄漏定位
Tracy集成到ROS2 实时帧率监控 多线程性能分析
htop/iotop/nmon使用 CPU/内存/IO瓶颈定位 系统资源与ROS2关联分析
rclcpp::Clock与时间测量 回调函数执行时间统计 发布/订阅延迟测量
在代码中插入测量点 使用std::chrono高精度计时 测量数据发布为话题
端到端延迟测量 吞吐量基准测试 使用ros2 topic delay工具
实时内核配置 线程优先级设置 锁竞争分析与优化
死锁检测工具 ThreadSanitizer使用 常见并发问题模式
DDS发现协议调试 网络流量分析 多机通信延迟优化
QoS不匹配检测 Reliability/History/Durability调试 QoS兼容性测试
生命周期状态转换 状态机调试 生命周期与调试工具结合
组件加载与卸载 组件间通信调试 组件容器性能分析
Launch参数调试 事件处理调试 Launch文件性能分析
机器人导航系统调试 多传感器融合性能分析 完整调试工作流总结