目录[-]

c,c++程序开发时,经常会用到需要进行在线调试方法,我们可以采用断点方式进行调试,同样ros程序只是一个框架,其同样可以采用断点的方式进行调试。


1、开发环境安装

vs code 下载链接


2、插件安装

► c++ Intellizense 插件安装
    • 直接在vscode 内部搜索 c++即可。
► ros插件安装
    • 直接在vscode 内部搜索ros即可。


3、vscode下ros使用GDB调试配置

► vscode中已经继承了gdb调试器,按下F5进行单步调试时或通过调试菜单->打开配置 选项,打开配置文件时,则默认会在.vscode目录下生成launch.json文件,打开launch.json配置文件。
► 将其中的program参数项,改为需要调试的node的可执行代码名称,此处最好设置为绝对路径,且路径中不包含中文名字。
► 配置好的一个例子如下图所示。

 


4、vscode下ros使用配置

► 由于我们使用了第三方的头文件,以至于导致在debug时找不到库文件的路径
► 在命令行模式下进行编译,输出编译配置信息

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

► 命令执行结束后,会在项目的/build/目录下生成一个配置文件,名称为:compile_commands.json.
► 将compile_commands.json的路径写入c_cpp_properties.json文件的compileCommands参数下
► 最终的文件如下图所示:

如果没有执行该项目会报: 找不到”ros/ros.h”文件


5、catkin_make 设置

由于vscode没有内置cmake功能,因此在vscode下布置一键catkin_make功能,需要使用Task功能来进行配置。
► 使用ctrl+ship+p 打开命令模式
► 键入 tasks: Configure Task 
► 此时会在.vscode目录下,自动生成tasks.json文件。其格式如下:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "ros_catkin_make",
            "type": "shell",
            "group": {"kind":"build","isDefault":true},
            "command": "catkin_make",
            "presentation": {
                "reveal": "always"//可选always或者silent或者never
            }        }
    ]
}

  "group": {"kind":"build","isDefault":true},改行的指令为将这个任务组添加到build组里,名称为label参数项目设置的名称。isDefault设置为true时按下编译按钮 ctrl+shift+b 则自动开始执行该任务,设置为false时,当按下编译按钮 ctrl+shift+b后则需要进行选择。


6、遇到的问题

► 找不到项目包含的头文件(#include …… 有警示下划线)

    • 点击黄色指示灯,点击edit c_cpp_properties.json,此时vscode会自动在配置文件下新建并初始化一个c_cpp_properties.json文件。
    • 将头文件路径包含在c_cpp_properties.json文件中的includePath项即可。