在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程序以管理员权限运行时,则调试时无法捕捉到该程序,会有如下报错:

 

posted @ 2024-06-28 14:38  溪嘉嘉  阅读(35)  评论(0编辑  收藏  举报