激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - ros項目調試:vscode下配置開發ROS項目的詳細教程

ros項目調試:vscode下配置開發ROS項目的詳細教程

2021-09-22 14:41Coulson的博客 C/C++

這篇文章主要介紹了ros項目調試:vscode下配置開發ROS項目,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

引言

在vscode下面配置用于ROS項目開發的環境

包括頭文件目錄的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件。

vscode頭文件目錄配置安裝“c/c++”插件

到vscode左邊欄的EXTENSIONS中,搜索“C/C++”并安裝

生成c_cpp_properties.json

vscode自身配置文件全部在./.vscode/目錄下

但是,在最開始對自己新建的目錄和文件進行編輯后,文件夾里面是沒有.vscode目錄的

同時,我們的cpp文件代碼中的 #include <> 這句話是有下劃線警示的,提示找不到文件

這時使用鼠標懸浮功能,點擊“紅色燈泡”,點擊edit c_cpp_properties.json選項,vscode會自動在配置文件夾中新建.vscode/文件夾,同時在里面初始化了c_cpp_properties.json文件

輸出編譯命令文件

這時,可能還有一些頭文件找不到,比如ros/ros.h,我們還需要配置一些東西。

用命令行編譯我們寫的c++代碼,同時輸出編譯信息文件,這里以ROS為例

?
1
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

這個命令會輸出一個compile_commands.json文件在ROS工作空間的build文件夾下面

然后在c_cpp_properties.json文件添加下面一段話

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

修改后的c_cpp_properties.json文件如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
 "configurations": [
 {
 "name": "Linux",
 "includePath": [
 "${workspaceFolder}/**"
 ],
 "defines": [],
 "compilerPath": "/usr/bin/gcc",
 "cStandard": "c11",
 "cppStandard": "c++17",
 "intelliSenseMode": "clang-x64",
 "compileCommands": "${workspaceFolder}/build/compile_commands.json"
 }
 ],
 
 "version": 4
}

這樣,就基本可以找到全部頭文件了,然后就可以使用代碼提示來碼代碼了。

catkin_make設置

vscode沒有內置make功能,需要借助Task功能進行配置

Ctrl+shift+P進入命令模式,鍵入tasks: Configure Task

此時會在.vscode文件夾下面自動生成task.json文件,如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
 "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"
 },
 ]
}

其中,這行設置

?
1
"group": {"kind":"build","isDefault":true},

代表將我們定義的這個task添加到build組里面,這樣就可以中Ctrl+Shift+B快捷鍵來找到編譯命令,命令名稱就是在label里面定義的,如果"isDefault":true那么就代表直接執行command,如果為false還需要在build下拉里面選一下,我們這里就是label名字:catkin_make

還需要提一下,我們打開vscode一定要在我們的ROS工作空間目錄打開:

code .

因為這樣你的vscode的Base path就是你打開vscode的位置,在我們執行catkin_make的時候,需要用的這個Base path,必須是我們的ROS工作空間來可以正常catkin_make

這樣配置好了之后,我們之后再進行編譯ROS工作空間的時候,就可以方便的使用快捷方式

Ctrl+Shift+B

GDB debug的配置

GDB調試器是調試C++代碼的神器,ROS項目本質上也是一個ROS項目,因此也可以用GDB進行調試

在vscode里面已經繼承了GDB調試器,我們需要做的就是配置launch.json文件

點擊左側工具欄”Debug“,點擊”齒輪“按鈕,此時.vscode文件夾下面就會自動生成launch.json文件,如下所示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
 "version": "0.2.0",
 "configurations": [
 {
 "name": "(gdb) Launch", // 配置名稱,將會在調試配置下拉列表中顯示
 "type": "cppdbg", // 調試器類型 該值自動生成
 "request": "launch", // 調試方式,還可以選擇attach
 "program": "${workspaceRoot}/devel/lib/waypoint_follower/pure_persuit", //要調試的程序(完整路徑,支持相對路徑)
 "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
 }
 ]
 }
 ]
}

需要注意的是,這里面的“program”參數是需要自己給定的,比如我要調試一個ROS節點,那么就需要找到這個節點生成的可執行目標,就是可執行的二進制文件,然后添加到“program”參數后面,如果要調試其他節點,那么還需要手動修改這里

除此之外,因為我們不是roslaunch啟動的節點,還需要一個終端運行roscore,否則會找不到ROS MASTER

"request"參數里面,gdb在vscode里面提供了launch和attach兩個配置任務。兩者的區別是launch實際上是啟動一個node執行指定代碼,同時可以在vscode里面打斷點調試。 attach是執行監聽的任務。

使用vscode進行調試的手段主要包括單步執行,觀察跟蹤變量值等等

更多的GDB調試命令可以在vscode下方的DEBUG_CONSOLE窗口直接輸入GDB命令 但是要注意需要在原來的GDB命令前面家加上一個前綴“-exec”,如下所示:

-exec b main

有關于常用的GDB命令總結:GDB的使用

還需要注意的是在Watch窗口添加需要Watch的變量時候,變量名稱要寫全局名稱,包括前面的命令空間都要寫上

基于上面的描述,我們就可以開心的debug了

添加ROS插件安裝

打開vscode的快捷輸入窗口(Ctrl+P)

輸入以下命令,即可安裝ROS插件

?
1
ext install ajshort.ros

用法

可以在右鍵點擊一個文件夾,然后選擇creat catkin package,創建一個ROS package

還可以按下(Ctrl+Shift+P),輸入

ros::showMasterStatus

這個命令可以顯示出當前ROS通信系統的詳細信息,包括當前的所有話題,已經話題的所有發布者和訂閱者

基本上這個vscode的ROS插件就這兩個有用

到此這篇關于ros項目調試:vscode下配置開發ROS項目的詳細教程的文章就介紹到這了,更多相關vscode配置開發ROS項目內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_35695879/article/details/85254422

延伸 · 閱讀

精彩推薦
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
主站蜘蛛池模板: 亚洲卡通动漫在线观看 | 成人9禁啪啪无遮挡免费 | 日本一区二区不卡在线观看 | 老司机免费福利午夜入口ae58 | 久久精品成人影院 | 九色中文 | 草久在线观看视频 | 中文区中文字幕免费看 | 91精品最新国内在线播放 | av免费在线观 | 国内精品久久久久久久久久 | 亚洲av毛片久久久久 | av在线等 | 老司机免费福利午夜入口ae58 | 一级黄色欧美 | 亚洲国产精品高潮呻吟久久 | 成人精品一区二区三区中文字幕 | 性插视频 | 国产成人在线一区二区 | 91快色 | 中文在线观看视频 | 香蕉久草视频 | 亚洲性综合网 | 91在线精品亚洲一区二区 | 国产91九色| 电视剧全部免费观看 | 日本成年网 | 国产午夜精品一区二区三区视频 | 久久久裸体视频 | 色人阁导航 | 国产精品久久久久久久久久久天堂 | 亚洲电影在线观看高清免费 | 99久久九九爱看免费直播 | 精品一区二区三区毛片 | 在线中文字幕网站 | 久久蜜桃精品一区二区三区综合网 | 日韩999| 成人男男视频拍拍拍在线观看 | 高清一区二区在线观看 | 国产乱淫av片免费观看 | 中文字幕国产日韩 |