目录一、安装必备 VSCode 插件二、Debug 模式编译重要三种编译模式对比编译命令三、配置 VSCode 调试文件.vscode/四、两种调试方式选一种即可方式 1直接启动节点调试需要拆分节点启动方式 2附加到已运行进程适合 ros2 launch 启动后调试进程 Debug 示意一、安装必备 VSCode 插件先装这几个缺一不可C/CMicrosoftC 语法、调试、IntelliSense CMake ToolsMicrosoftCMake 项目管理 ROSms-iotROS1/2 集成、launch 支持 CodeLLDB可选比原生 gdb 体验更好的调试器二、Debug 模式编译重要ROS 2 默认是 Release没有调试符号断点无效。必须用 Debug 或 RelWithDebInfo 编译。三种编译模式对比 注意Debug 编译 → 代码跑得慢 → 时间戳不同步 → 轨迹后期飘移 / 偏移特别注意如果用过 debug 模式之后colcon build 默认就还是必须要用 Release 重新编译之后才能切换回来模式速度轨迹精度能否调试适合Release最快最好❌ 不能跑实验RelWithDebInfo最快最好✅ 能调试 跑实验Debug极慢飘移 / 偏移✅ 能只用来查崩溃编译命令colcon build --packages-select lio_sam2 --cmake-args-DCMAKE_BUILD_TYPERelease colcon build --packages-select lio_sam --cmake-args-DCMAKE_BUILD_TYPERelWithDebInfo colcon build --packages-select lio_sam --cmake-args-DCMAKE_BUILD_TYPEDebug三、配置 VSCode 调试文件.vscode/在工作空间根目录创建 .vscode 文件夹里面放 1 个文件launch.jsonlaunch.json核心调试配置打开 VSCode → 左侧「运行和调试」CtrlShiftD→ 「create a launch.json file」→ 选「C (GDB/LLDB)」替换成下面内容{version:0.2.0,configurations:[// 配置1直接启动 IMU 预积分节点最常用调试你之前报错的模块{name:Debug lio_sam_imuPreintegration,type:cppdbg,request:launch, // 可执行文件路径替换成你的实际路径program:/home/gg/xcg/djj_project/slam_ws/install/lio_sam/lib/lio_sam/lio_sam_imuPreintegration,args:[],stopAtEntry:false,cwd:/home/gg/xcg/djj_project/slam_ws,environment:[// ROS2必须的环境变量{name:ROS_DISTRO,value:humble},{name:RMW_IMPLEMENTATION,value:rmw_fastrtps_cpp}],externalConsole:false,MIMode:gdb,setupCommands:[{description:Enable pretty-printing for gdb,text:-enable-pretty-printing,ignoreFailures:true}],}, // 配置2附加到已运行的进程适合 ros2 launch 启动后调试{name:Attach to Process,type:cppdbg,request:attach,program:/home/gg/xcg/djj_project/slam_ws/install/lio_sam/lib/lio_sam/lio_sam_imuPreintegration,MIMode:gdb,setupCommands:[{text:-enable-pretty-printing,ignoreFailures:true}]}]}四、两种调试方式选一种即可方式 1直接启动节点调试需要拆分节点启动打开比如 imuPreintegration.cpp在 odometryHandler 或 imuHandler 里打个断点比如初始化、优化、报错行。左侧「运行和调试」→ 选 Debug lio_sam_imuPreintegration → 点击「开始调试」绿色三角。节点启动后会在断点处暂停你可以进行逐步调试方式 2附加到已运行进程适合 ros2 launch 启动后调试先在终端启动 LIO-SAMros2 launch lio_sam run.launch.py找到 lio_sam_imuPreintegration 的进程 IDpsaux|greplio_sam_imuPreintegrationVSCode 调试选 Attach to Process → 点击开始 → 选择上面的 PID → 附加成功后断点会生效。进程 Debug 示意