ROS VSCode调试方法
VSCode 调试 Ros文档
1.编译参数设置
cd catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Debug
2.vscode 调试插件安装
可在扩展中安装(Ctrl + Shift + X):
1.ROS
2.C/C++
3.C++ Intelliense
4.Msg Language Support
5.Txt Syntax
3.导入已有或者新建ROS工作空间
3.1 导入工作空间
直接在vscode中打开之前创建好的workspace文件夹。
3.2 新建工作空间
通过命令行新建
1.新建文件夹``mkdir p /src
2.然后编译catkin_make,系统会自动在test文件夹下创建 “build”, "devel"文件夹和其他配置文件。
通过vscode创建
1.直接通过vscode新建文件夹即可
2.使用快捷键通过ros插件直接创建工作空间和节点的编译
右键点击"src"文件夹,右键弹出选项中,点击"Create Catkin Package",输入包的名称ros_test,按Enter确认,输入包的依赖“std_msgs roscpp”,空格隔开,按Enter确认。
系统自动创建CMakeLists.txt及package.xml文件。
也可通过按Ctrl + Shift + P,输入ros:Create Catkin Package配置功能包。
当然:在新建工作空间时,会在工作空间根目录下自动生成一个.vscode文件夹,其内自动有2个.json文件。c_cpp_properties.json和setting.json。如果没有生成,重启vscode试试。或者通过按Ctrl + Shift + P,输入c/c++: edit configurations(JSON), 手动生成。
3.3编辑c_cpp_properties.json文件
在使用的过程中,可能还有一些头文件或变量在vscode上报红,显示找不到,例如#include “my_first_package/AddTwoInts.h”,我们还需要配置一些东西。
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
#这一行命令的作用是在构建ROS工作空间时生成一个 compile_commands.json 文件。
#这个文件包含了编译过程中所有源文件的编译命令,这对于许多现代IDE(如VSCode、CLion等)来说非常有用,因为它可以帮助这些IDE更好地理解项目的编译环境和依赖关系。
具体来说,compile_commands.json 文件的内容是一个JSON数组,每个元素代表一个编译命令,包含编译器路径、编译选项、包含路径和其他相关信息。这使得IDE能够更准确地进行代码补全、跳转到定义等功能。
然后在c_cpp_properties.json文件添加下面一段话:
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
#该项设置能解决绝大多数报红,以及帮助IDE实现ROS代码的补全 跳转等功能
我的c_cpp_properties.json案例如下:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/**",
"/opt/ros/noetic/include/**",
"${workspaceFolder}/devel/include",
"/opt/ros/noetic/include"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++14",
"intelliSenseMode": "linux-clang-x64",
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
}
],
"version": 4
}
如果还有些报红,可以自行添加到配置选项中
4.节点的运行
4.1 命令行手动启动
启动roscore:通过按Ctrl + Shift + P,输入ros:start core启动roscore。
4.2 vscode使用ros插件快捷启动
rosrun运行节点:通过按Ctrl + Shift + P,输入ros:run a rose executable,依次输入对应的package及节点,参数。或者直接下终端rosrun ......
roslaunch运行节点:通过按Ctrl + Shift + P,输入 ros:run a launch file(roslaunch),依次输入对应的package及.launch文件名,参数。
5.Debug环境配置
5.1 vscode GDB debug配置
说明:GDB调试器是调试C++代码的神器,ROS项目本质上也是一个ROS项目,因此也可以用GDB进行调试;
在vscode里面已经继承了GDB调试器,我们需要做的就是配置launch.json文件
点击左侧工具栏”Debug“,点击”齿轮“按钮,此时.vscode文件夹下面就会自动生成launch.json文件。需要将如下文件进行相应修改,例如:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch listener", // 配置名称,将会在调试配置下拉列表中显示
"type": "cppdbg", // 调试器类型 该值自动生成
"request": "launch", // 调试方式,还可以选择attach
"program": "${workspaceRoot}/devel/lib/my_first_package/listener", //要调试的程序(完整路径,支持相对路径)
"args": [], // 传递给上面程序的参数,没有参数留空即可
"stopAtEntry": false, // 是否停在程序入口点(停在main函数开始)
"cwd": "${workspaceRoot}", // 调试程序时的工作目录
"environment": [], //针对调试的程序,要添加到环境中的环境变量. 例如: [ { "name": "squid", "value": "clam" } ]
"externalConsole": false, //如果设置为true,则为应用程序启动外部控制台。 如果为false,则不会启动控制台,并使用VS Code的内置调试控制台。
"MIMode": "gdb", // VSCode要使用的调试工具
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) Launch talker", // 配置名称,将会在调试配置下拉列表中显示
"type": "cppdbg", // 调试器类型 该值自动生成
"request": "launch", // 调试方式,还可以选择attach
"program": "${workspaceRoot}/devel/lib/my_first_package/talker", //要调试的程序(完整路径,支持相对路径)
"args": [], // 传递给上面程序的参数,没有参数留空即可
"stopAtEntry": false, // 是否停在程序入口点(停在main函数开始)
"cwd": "${workspaceRoot}", // 调试程序时的工作目录
"environment": [], //针对调试的程序,要添加到环境中的环境变量. 例如: [ { "name": "squid", "value": "clam" } ]
"externalConsole": false, //如果设置为true,则为应用程序启动外部控制台。 如果为false,则不会启动控制台,并使用VS Code的内置调试控制台。
"MIMode": "gdb", // VSCode要使用的调试工具
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
此时 运行和调试下拉框中就会多出两个可选项,即自己配置的程序运行项