在Visual Studio Code中调试ROS程序
安装插件
在Visual Studio Code中安装ROS插件。
编译程序
编译程序时,在catkin_make命令后加上-DCMAKE_BUILD_TYPE=Debug选项:
catkin_make -DCMAKE_BUILD_TYPE=Debug
或在CMakeLists.txt文件中加入:
set(CMAKE_BUILD_TYPE "Debug")
调试运行配置
在运行和调试中点击创建launch.json文件,并在launch.json文件右下角点击添加配置,在弹出菜单中选择ROS:Attach。当调试单独一个程序时通过上述方式,当调试由launch文件启动的多个程序时,则选择ROS:Launch。
添加配置后的launch.json文件如下:
运行并调试
在程序中设置断点,并在roscore启动的情况下,运行程序:
点击界面左上角绿色三角开始调试:
选择C++:
选择已经启动的程序——talker:
若弹出下列提示,则键入y:
注意,通过Visual Studio Code进行远程调试时,键入y可能不生效,此时需要在运行程序的系统中新建/usr/share/polkit-1/actions/com.ubuntu.pkexec.gdb.policy文件并写入下列内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> <policyconfig> <action id="com.ubuntu.pkexec.gdb-settings"> <icon_name>gdb-settings</icon_name> <defaults> <allow_any>yes</allow_any> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gdb</annotate> <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> </action> </policyconfig>
如图所示:
此时调试启动,出现调试控制按钮。需要注意的是,或许因为程序先启动后开启调试,所以在非ROS周期执行循环中设置的断点似乎无法生效;而在ROS周期执行的循环中设置的断点,程序可暂停在此处。
一些问题
当ROS程序以管理员权限运行时,则调试时无法捕捉到该程序,会有如下报错:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)