IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> VScode 配置 ros环境& gdb调试 -> 正文阅读

[开发工具]VScode 配置 ros环境& gdb调试

vscode 配置ros使用VScode搭建ROS开发环境_白鸟无言的博客-程序员宅基地 - 程序员宅基地俗话说"工欲善其事必先利其器",之前在Ubuntu上运行的ROS项目都是用vim或者gedit编写和修改代码,然后在终端编译运行,很不方便,函数跳转查看都没办法实现。所以今天我决定找一个方便的开发工具,也就是找一个像Windows上的VS那样的集成开发工具(IDE),ROS官网上有一个不同IDE的对比文章,网址在这里我选择使用VScode.下载安装好VScode后,在扩展栏安装C/C++,CMake,CMake Tools,Code Runner,ROS(deprecated),Chinese 这些插件.https://www.cxyzjd.com/article/qq_42688495/107750466ros项目调试:vscode下配置开发ROS项目_Coulson的博客-CSDN博客_ros vscode引言在vscode下面配置用于ROS项目开发的环境包括头文件目录的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件。vscode头文件目录配置安装“c/c++”插件到vscode左边栏的EXTENSIONS中,搜索“C/C++”并安装生成c_cpp_properties.jsonvscode自身配置文件全部在./.vscode/目录下但是,在最开始对...https://blog.csdn.net/weixin_35695879/article/details/85254422


插件的安装

通过vscode左侧的插件安装按钮,安装ros插件,c++插件;

生成c_cpp_properties.json文件,添加路径

????????使用 vscode 打开你的 ros 项目, 从 workspace 名字这一级打开, 而不是 src 这种子目录或者 src 下功能包目录打开。 当在 cpp 代码中的 #include <…> 这句话有下划线警示时,意思是提示你找不到文件路径,这时将鼠标光标放在该下划线处,点击“黄色灯泡”,点击 edit c_cpp_properties.json 选项, vscode 会自动在配置文件夹中新建.vscode/文件夹(可以在左侧看到),同时在里面初始化了 c_cpp_properties.json 文件。 如果你的项目已经含有 json 文件, 可以不用操作这一步。

设置编译命令

????????由于我们使用了#include “ros/ros.h”,使用 debug 时找不到该文件路径, 开启终端用命令行编译我们写的 c++代码,同时输出编译信息文件, 使用下面这个命令编译自己的程序:

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

????????这个命令会输出一个 compile_commands.json 文件在 ROS 工作空间的 build 文件夹下面

????????然后在上一节中生成的 c_cpp_properties.json 文件添加下面一句命令

"compileCommands": "${workspaceFolder}/build/compile_commands.json"

????????添加后的效果如下:

{
    "configurations": [
        {
            "browse": {
                "databaseFilename": "",
                "limitSymbolsToIncludedHeaders": true
            },
            "includePath": [
                "/home/jack/test_ws/devel/include/**",
                "/opt/ros/kinetic/include/**",
                "/usr/include/**",
                "/opt/ros/kinetic/include"
            ],
            "name": "ROS",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
            }
        ],
        "version": 4
}

配置task.json

????????在 vscode 界面按 Ctrl+shift+P 进入命令模式,键入 tasks: Configure Task,选择cmake:build 或者类似 catkin_make:build 选项生成 task.json 文件。该文件是为了每次点击debug 按钮是先预编译一些程序,建议复制下面的代码替换掉自动生成的 task.json 文件

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make", //代表提示的描述性信息
            "type": "shell", //可以选择 shell 或者 process,如果是 shell 代码是在 shell 里面运行一个命令,如果是 process 代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": [],// 如 果 需 要 在 命 令 后 面 加 一 些 后 缀 , 可 以 写 在 这 里 , 比 如 -DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选 always 或者 silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

配置launch.json文件

????????在 vscode 里面已经继承了 GDB 调试器,点击 vscode 左侧的 debug 按钮时会自动生产一个 launch.json 文件; 如果没有该文件, 先点击 debug 按钮, 再点击齿轮按钮, 选择 gdb调试, 就出现了 json 文件。
????????然后需要自己更改该文件中的“program”项,更改为编译后的可执行文件的路径下的文件,对应 ROS 通过 catkin_make 生产可执行文件的路径通常在/devel/lib/下,后面跟上你设置好的 package 名和可执行文件名。 然后需要增加 "preLaunchTask"项,其参数需要与????????task.json 文件中的“label”项设置的名称相同。 如下所示

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在调试配置下拉列表中显示
            "type": "cppdbg", // 调试器类型 该值自动生成
            "request": "launch", // 调试方式,还可以选择 attach
            "program": "${workspaceFolder}/devel/lib/smart_car/smart_car", //要调试的程序(完整路径,支持相对路径)
            "args": [], // 传递给上面程序的参数,没有参数留空即可
            "stopAtEntry": false, // 是否停在程序入口点(停在 main 函数开始)
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录
            "environment": [],//针对调试的程序,要添加到环境中的环境变量. 例如: [ { "name": "squid","value": "clam" } ]
            "externalConsole": false, //如果设置为 true,则为应用程序启动外部控制台。 如果为 false,则不会启动控制台,并使用 VS Code 的内置调试控制台。
            "MIMode": "gdb", // VSCode 要使用的调试工具
            "preLaunchTask": "catkin_make", / 这个重要,需要与 task 中的 label 相同
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

????????除此之外,因为我们不是 roslaunch 启动的节点,还需要一个终端运行 roscore,否则会
找不到 ROS MASTER。 在 vscode 中或者 ubuntu 终端都可以启动 roscore。

CMakeLists.txt 文件设置

????????为了能执行断点调试,需要在设置 CMakeLists.txt 文件,添加下面程序,下面的两个 set
是两种写法,如果 debug 时不能设置断点则换另一种试一下,

#set(CMAKE_CXXX_FLAGS "${CMAKE_CXX_FLAGS} -g" )
SET(CMAKE_BUILD_TYPE Debug)

你写的程序有可能需要增加 c++11 标准

add_compile_options(-std=c++11)

最后设置断点, 点击 vscode 的调试按钮, 就可以调试了。
?

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章           查看所有文章
加:2022-03-11 22:25:26  更:2022-03-11 22:26:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:52:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码