Windows10下如何用CLion调试ROS2发布话题命令?
ros2 topic pub及naoqi_driver2底层逻辑 一、调试naoqi_driver2的/speech话题处理逻辑
你已经部署好naoqi_driver2,先从驱动端的C++代码入手:
导入项目到CLion
打开CLion,选择File > Open选中naoqi_driver2的本地源码目录。在File > Settings > Build, Execution, Deployment > CMake的Environment里添加ROS2环境变量:CMAKE_PREFIX_PATH:指向你的ROS2安装根目录(比如C:\dev\ros2_humble)PATH:追加C:\dev\ros2_humble\bin
等待CMake构建完成,解决依赖报错。
设置断点
在naoqi_driver2的源码里找到订阅/speech话题的C++文件(通常在src目录下,比如命名类似speech_subscriber.cpp的文件),在处理std_msgs::String消息的回调函数处设置断点。启动驱动节点调试
在CLion的运行配置中添加ROS Node配置:指定节点可执行文件为naoqi_driver2对应的节点(比如naoqi_speech_node.exe),选择你的ROS2环境。点击Debug按钮启动节点,此时节点会等待接收话题消息。
二、调试ros2 topic pub的底层C++逻辑
ros2 topic pub上层是Python实现,但底层依赖rclcpp的C++发布接口,调试这部分需要:
导入rclcpp源码
克隆与你本地ROS2版本匹配的rclcpp仓库(切换到对应分支,比如Humble分支),导入CLion后同样配置ROS2环境变量确保CMake构建成功。定位核心发布代码
rclcpp的消息发布核心逻辑在rclcpp/src/rclcpp/publisher.cpp的publish方法,以及rclcpp/src/rclcpp/node.cpp中的相关调用处,在这些位置设置断点。触发调试
在CLion中启动rclcpp的调试会话,选择附加进程模式。打开Windows终端运行ros2 topic pub --once /speech std_msgs/String "data: hello",CLion会触发断点,此时可以逐步跟踪底层发布逻辑。
三、完整流程调试(可选)
如果想跟踪消息从发布到驱动接收的全流程:
- 先启动naoqi_driver2节点的调试会话
- 再启动rclcpp的调试会话并附加到
ros2 topic pub关联的进程 - 运行
ros2 topic pub命令,即可逐步查看每一步的代码执行逻辑
内容的提问来源于stack exchange,提问作者Sam

