nav2 断点调试流程 attach模式
Nav2 / turtlebot3 断点调试流程Attach 模式推荐方式终端用ros2 launch起完整导航栈再用 IDE Attach 到目标进程。1. 为什么用 Attach而不是 Debug LaunchROS 2 扩展的type: ros2 request: launch不会完整执行ros2 launch而是解析 launch 后只拉起部分进程并挂调试器。对默认composition的 Nav2 bringup 会导致RViz / 地图 / TF / costmap 数据不完整planner、controller 等组件未按正常方式加载源码断点永远进不去因此本仓库调试配置采用cppdbgAttach2. 前置条件2.1 带调试符号编译断点所在功能包需使用Debug编译例如# 整个 navigation2colcon build --packages-up-to navigation2\--cmake-args-DCMAKE_BUILD_TYPEDebug# 或只编关心的包colcon build --packages-select nav2_dwb_controller dwb_critics\--cmake-args-DCMAKE_BUILD_TYPEDebugsourceinstall/setup.bash2.2 IDE 工作空间设置需在.vscode/settings.json中指定ROS2.distro:humble,ROS2.rosSetupScript:/home/rx01109/loong_nav/install/setup.bash2.3 关闭 C 异常断点在 Run and Debug → Breakpoints 面板中取消勾选C: on throwC: on catch否则会停在__cxa_throw汇编界面PAUSED ON EXCEPTION而不是你的源码断点。2.4 Attach 权限若提示无法 attachecho0|sudotee/proc/sys/kernel/yama/ptrace_scope临时生效重启后可能恢复。3. 推荐调试流程逐步步骤 A终端启动完整导航按你平时能正常导航的流程操作。至少保证导航 launch 已起例如exportTURTLEBOT3_MODELwaffle_pi# 按实际模型修改exportROS_DOMAIN_ID0# 仿真等其它 launch 按 README / 日常习惯先起ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:true确认RViz 有地图、机器人、TF 正常能正常发目标并导航步骤 B在源码中打断点示例DWB 局部规划navigation2/nav2_dwb_controller/dwb_critics/src/obstacle_footprint.cppnavigation2/nav2_dwb_controller/dwb_critics/src/path_align.cpp断点应为实心红点。空心灰点表示未绑定到已加载的符号进程未 attach、或库无调试信息、或路径不对。步骤 CIDE Attach打开Run and Debug选择配置见下表按F5或绿色三角在Select the process to attach to中搜索并选择目标进程配置名用途进程选择列表可能截断显示Attach: Nav2 container (DWB/planner)调试 Nav2 规划/控制/BT/代价地图等搜component选component_conta...完整名component_container_isolatedAttach: pick any C (gdb)任意 C 进程自行挑选并注意program路径是否匹配步骤 D触发代码路径Attach 成功后不会立刻跳到断点只有执行流跑到该行才会停下。例如调试 DWB critic在 RViz 中设置位姿如需要→发送导航目标→ 局部规划循环运行后应命中断点。命中后可使用Continue / Step Over / Step Into、查看 Variables / Call Stack。步骤 E结束调试在 IDE 中 Stop 调试会话即可一般不必关掉终端里的ros2 launch除非要重启整栈。4. 进程与断点对应关系默认use_composition:True时Nav2 多数节点装在一个进程里component_container_isolated节点名常见为nav2_container覆盖范围包括不限于controller_server含 DWBobstacle_footprint、path_align等planner_server、bt_navigator、smoother_server、behavior_server等map_server、amcllocalization 侧装入上述 server 的 costmap / controller / planner 插件不在该进程内、需另 Attach 或无需调试的rviz2、Gazebo 相关进程若关闭 compositionuse_composition:False各*_server为独立进程应 Attach 到具体可执行文件如controller_server。5..vscode/launch.json说明当前配置使用type: cppdbgrequest: attachMIMode: gdb明确的program路径 processId: ${command:pickProcess}Nav2 业务逻辑的调试符号来自 workspace 中编译出的.so如libcontroller_server_core.so、DWB critics 库挂到容器进程后 gdb 会加载这些库的符号。6. 常见问题6.1 停在__cxa_throw/ 全是地址汇编关闭C: on throw/C: on catchContinue 后继续操作不要对着系统库单步钻入6.2 Attach 报错either program or pid is required to attach不要用有问题的type: ros2Attach使用本仓库已写好的cppdbg配置6.3 进程列表里只有component_conta界面截断显示选它即可完整名为component_container_isolated6.4 断点不命中按顺序检查是否 Attach 到正确进程包是否Debug编译并已source install/setup.bash后启动业务是否已触发如是否发了 nav goal断点是否在当前配置会执行的代码路径上6.5 RViz 无数据必须用终端完整ros2 launch不要用扩展的 Launch Debug 起半套栈确认 RViz 与 launch 使用同一ROS_DOMAIN_IDuse_sim_time:true时需有/clock仿真在跑6.6use_composition参数turtlebot3_navigation2/launch/navigation2.launch.py当前未把use_composition传给bringup_launch.py默认仍为 composition。调试时按「挂容器」理解即可。7. 流程速查[终端] source ros2 launch navigation2.launch.py ↓ 确认 RViz / 导航正常 [IDE] 源码打断点关闭异常断点 ↓ [IDE] Attach: Nav2 container → 选 component_container_isolated ↓ [RViz] 发导航目标 / 触发对应逻辑 ↓ [IDE] 命中断点 → 单步 / 看变量

相关新闻

Unity游戏引导系统开发指南:从架构设计到性能优化

Unity游戏引导系统开发指南:从架构设计到性能优化

1. 项目概述:为什么游戏引导系统是项目成败的关键在游戏开发领域,尤其是移动端和独立游戏,一个流畅、智能且不令人反感的引导系统,往往是决定玩家留存率的第一道关卡。我见过太多玩法精良、美术出色的项目,因为引导做得…

2026/10/13 17:41:15 阅读更多 →
基于Whisper与FFmpeg的AI双语字幕生成:从原理到实战部署

基于Whisper与FFmpeg的AI双语字幕生成:从原理到实战部署

在追剧、看网课或者学习外语时,你是否也遇到过这样的困扰:视频没有字幕,或者只有听不懂的外语字幕?手动添加字幕耗时耗力,而市面上许多工具要么收费昂贵,要么操作复杂、效果不佳。今天,我将为你…

2026/10/8 11:57:17 阅读更多 →
2023毕业论文AI写作工具全解析与查重降重实战

2023毕业论文AI写作工具全解析与查重降重实战

1. 毕业论文写作AI工具现状解析2023年高校毕业季来临之际,AI写作工具在学术领域的应用呈现爆发式增长。根据教育技术协会最新调研数据显示,87%的本科生在论文写作过程中至少使用过1种AI辅助工具,其中查重降重类工具使用率高达62%。这种现象背…

2026/10/11 2:15:29 阅读更多 →

最新新闻

ISaGRAF 3.4老牌IEC 61131-3开发环境安装编程与迁移全攻略

ISaGRAF 3.4老牌IEC 61131-3开发环境安装编程与迁移全攻略

简介:ISaGRAF 3.4编程软件压缩包,面向工业自动化控制系统的开发与调试工程师,尤其适合基于IEC 61131-3标准构建PLC、运动控制或过程控制项目的团队。软件支持IL、ST、FBD、LD、SFC五种标准编程语言,兼顾不同场景的编程习惯&#x…

2026/10/13 17:41:05 阅读更多 →
蓝牙HC-05仿真与程序实战:AT指令、串口透传与避坑指南

蓝牙HC-05仿真与程序实战:AT指令、串口透传与避坑指南

简介:一份面向单片机学习者和物联网初学者的 HC-05 蓝牙模块完整工程资料。内容包含 Proteus 电路仿真设计(DSN 原理图)与配套单片机程序源码,覆盖 AT 指令配置、主从模式设置、串口通信及 LCD 显示等关键环节。压缩包共 27 个文件…

2026/10/13 17:41:05 阅读更多 →
基于FPGA的高速数据采集系统设计:从ADC接口到DDR写入的工程实践

基于FPGA的高速数据采集系统设计:从ADC接口到DDR写入的工程实践

简介:本资源为基于FPGA的数据采集系统完整工程包,面向电子信息、自动化及集成电路相关专业学生与FPGA初学者,可用于课程设计、毕业设计或自学练手。系统以串口指令控制DAC芯片TLV5618完成数模转换,读取ROM中正弦波形数据输出模拟信…

2026/10/13 17:41:05 阅读更多 →
51单片机数字时钟Proteus仿真与Keil C51工程实战:从数码管动态扫描到调时调试

51单片机数字时钟Proteus仿真与Keil C51工程实战:从数码管动态扫描到调时调试

简介:一份基于51单片机的数字时钟项目资料包,面向电子爱好者与初学者,适合课程设计或入门练手,可帮助理解单片机硬件接口操作、C51编程以及Proteus虚拟仿真流程,并了解工程文件组织方式。压缩包共包含29个文件&#xf…

2026/10/13 17:41:05 阅读更多 →
STM32F407实现电磁曲线炮洛伦兹力矢量控制

STM32F407实现电磁曲线炮洛伦兹力矢量控制

简介:本资源是2019年全国大学生电子设计竞赛H题「电磁曲线炮」的完整嵌入式实现方案,面向STM32进阶学习者、电赛备赛学生及嵌入式控制系统开发者,聚焦于多传感器融合控制与实时运动响应这一典型工程问题。包内共749个文件,以253个…

2026/10/13 17:41:05 阅读更多 →
活体检测新范式:泛化欺骗线索学习原理与实战

活体检测新范式:泛化欺骗线索学习原理与实战

1. 这不是“防假脸”的简单教程,而是一次对活体检测底层逻辑的重新校准“Learning Generalized Spoof Cues for Face Anti-spoofing”——光看这个标题,很多人第一反应是:又一篇CVPR/ICCV上的活体检测论文?点开摘要,看…

2026/10/13 17:40:01 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →