vscode

Linux版本配置(簡要)

1、下載安裝vscode

https://code.visualstudio.com/Download

2、安裝cpptools插件

打開vscode,按ctrl+p打開快速命令框,輸入以下命令后等待

ext install cpptools

vscode在短暫的聯(lián)網(wǎng)查找后會列出插件列表,如圖:?

點擊箭頭所指處的按鈕安裝插件,安裝過程可能會有些慢耐心等待

安裝完成后vscode會提示你重啟vscode,此時重啟即可

更新:因為我裝這個插件已經(jīng)是幾年之前了,不確定現(xiàn)在界面還是不是這樣,但是意思不變,裝完后點重新加載就行了

3、安裝編譯、調(diào)試環(huán)境

(若是電腦上原來裝著codeblocks,Dev C++等可以跳過這步,

直接跳到 ?【4、配置系統(tǒng)環(huán)境變量path】 這步即可)

目前windows下調(diào)試僅支持 Cygwin 和 MinGW。

這里使用的是MinGW.

下面是MinGW的安裝配置過程:

http://mingw.org/

進入官網(wǎng)點擊右側 Download Installer下載安裝器

打開安裝器點擊install準備安裝:

選擇一個安裝目錄,默認為C:\MinGW這里選擇的是A:\MinGW

點擊Continue開始安裝,安裝過程需聯(lián)網(wǎng),若安裝時提示error則需翻墻安裝

安裝過程很快,結束后Continue按鈕恢復為可用狀態(tài),點擊完成安裝。

打開MinGW安裝管理器進行進一步配置

注意這里gdb必選,否則無法調(diào)試

選中幾個需要的項右鍵Make for Installation進行標記,其中gcc和g++為c和c++編譯器

選擇完全部想要安裝的項后點擊左上角Installation菜單下的Apply Changes應用修改,過程需聯(lián)網(wǎng),中間出現(xiàn)error可先繼續(xù),若最后失敗則需翻墻更新,建議翻墻。

更新:單獨裝MinGW ,我最早是這么搞的,要是發(fā)現(xiàn)不可以(無法下載或者很懷疑自己MinGW沒安裝好等),可以試試codeblocks或者Dev-cpp等等,這些IDE自帶編譯器,還是看這篇文章里面有使用codeblocks自帶的MinGW的細節(jié),當然要是可以就繼續(xù)。

4、配置系統(tǒng)環(huán)境變量path

然后配置系統(tǒng)環(huán)境變量path,這一步為必須

在 我的電腦 上右鍵 屬性:

然后按照下面步驟做即可,注意最后新建的項要與之前MinGW安裝位置相對應

Windows7注意,要加入,不是覆蓋!我第一次不小心把原來路徑覆蓋了。。。(因為win7不像win10那么明顯是加入。。)

再次打開vscode,注意配置系統(tǒng)環(huán)境變量path后重啟一下vscode?

注意vscode調(diào)試需要在打開的文件夾中進行(注意!是用VSC打開文件夾!!,單獨打開一個單獨的cpp是沒有下面的幾個配置文件出現(xiàn)的!!也就是說,這個cpp要在一個文件夾里!不像DevCpp和C-Free可以直接調(diào)試一個單獨的cpp!!)

5、修改vscode調(diào)試配置文件

打開文件夾后,新建test.cpp(隨便建,或者main.cpp)進行輸入代碼測試

如圖示進入調(diào)試界面選擇C++:

更新:現(xiàn)在點擊之后變成了這樣的:VScode還會讓你再選一個,都選第一個吧

然后會在工作目錄下的生成一個launch.json的啟動配置文件:

使用下面代碼替換該文件:(只是在vsc自己產(chǎn)生的json文件加了一些行)

launch.json中有很多屬性可以設置, 通過智能提示查看有那些屬性可以設置, 如果要查看屬性的具體含義, 可以把鼠標懸停在屬性上面, 會屬性的使用說明.

{?

"version":"0.2.0",

"configurations": [

? ? ? ? {?

"name":"(gdb) Launch",//配置名稱,將會在啟動配置的下拉菜單中顯示

"type":"cppdbg",//配置類型,這里只能為cppdbg

"request":"launch",//請求配置類型,可以為launch(啟動)或attach(附加)

"program":"${workspaceFolder}/${fileBasenameNoExtension}.exe",//將要進行調(diào)試的程序的路徑

"args": [],//程序調(diào)試時傳遞給程序的命令行參數(shù),一般設為空即可

"stopAtEntry":false,//設為true時程序將暫停在程序入口處,一般設置為false

"cwd":"${workspaceFolder}",//調(diào)試程序時的工作目錄,一般為${workspaceFolder}即代碼所在目錄

"environment": [],

"externalConsole":true,//調(diào)試時是否顯示控制臺窗口,一般設置為true顯示控制臺

"MIMode":"gdb",

"miDebuggerPath":"C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\gdb32.exe",//miDebugger的路徑,注意這里要與MinGw的路徑對應

"preLaunchTask":"g++",//調(diào)試會話開始前執(zhí)行的任務,一般為編譯程序,c++為g++, c為gcc

"setupCommands": [

? ? ? ? ? ? ? ? {?

"description":"Enable pretty-printing for gdb",

"text":"-enable-pretty-printing",

"ignoreFailures":true

? ? ? ? ? ? ? ? }?

? ? ? ? ? ? ]?

? ? ? ? }?

? ? ]?

}

更新:注意:如評論區(qū)所說,workspaceRoot已被棄用,現(xiàn)改為workspaceFolder,上面的代碼我已經(jīng)改好了

更新:vscode默認的"externalConsole": false,,而我這里改為了true,改為true即在控制臺內(nèi)部運行,不顯示黑框,但是要是不顯示黑框似乎沒法輸入(cin或者scanf)了(沒怎么試過,讀者可以試試)

注意miDebuggerPath要與MinGw的路徑對應?,我用的codeblocks的gdb,見上面的json文件。

注意miDebuggerPath是\\,與直接粘貼過來的路徑不一樣,需要加一個”\”(冒號后面的兩個反斜杠“\\”),或者使用一個“/”

替換后保存,然后切換至test.cpp,按F5進行調(diào)試,此時會彈出一個信息框要求你配置任務運行程序,點擊它~

【注意】,上面的那個目前的cpp插件似乎沒有了,若是直接按F5會出現(xiàn)下面這個圖,不清楚評論區(qū)童鞋說的是不是這個?

請點擊第二個“配置任務”,然后出現(xiàn)這個:點就行了~

之后出現(xiàn):

在這里隨便選一個:(我選的others)【隨便選,反正最后tasks.json文件要被覆蓋】【下面的圖是更新之前的圖】

更新:現(xiàn)在變成這樣的了:我選的第三個,g++那個

然后用下面代碼替換:【更新:原來的"version": "0.2.0"似乎會有下劃線報錯,那就按照vscode說的改為2.0.0好了,下面的是最新的復制即可。】

{

"version":"2.0.0",

"command":"g++",

"args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"],// 編譯命令參數(shù)

"problemMatcher": {

"owner":"cpp",

"fileLocation": ["relative","${workspaceFolder}"],

"pattern": {

"regexp":"^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",

"file":1,

"line":2,

"column":3,

"severity":4,

"message":5

? ? ? ? }

? ? }

}

更新:我發(fā)現(xiàn)使用vscode自己生成的`tasks.json`,似乎也可以成成功運行,我把VSCode自己生成的這個json文件也貼上來(稍加改動):這個json文件和上面那個都是可以使cpp正常運行的

{

// See https://go.microsoft.com/fwlink/?LinkId=733558

// for the documentation about the tasks.json format

"version":"2.0.0",

"tasks": [

? ? ? ? {

"type":"shell",

"label":"g++",//這里注意一下,見下文

"command":"C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\g++.exe",

"args": [

"-g",

"${file}",

"-o",

"${fileDirname}\\${fileBasenameNoExtension}.exe"

? ? ? ? ? ? ],

"options": {

"cwd":"C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin"

? ? ? ? ? ? },

"problemMatcher": [

"$gcc"

? ? ? ? ? ? ]

? ? ? ? }

? ? ]

}

注意:“l(fā)abel”那一行,要和前面的`launch.json`中的"preLaunchTask": "g++"這里寫的一樣,因為前面`launch.json`中的"preLaunchTask"里我改為了g++,所以這里我也改為g++,vscode默認的是`g++.exe build active file`【`launch.json`("preLaunchTask": "g++.exe build active file")和`tasks.json`("label": "g++.exe build active file"),都是默認的這個,當然無論是什么,只要保持一致就行】

保存一下,然后切換至test.cpp,再次按F5啟動調(diào)試~

【更新:似乎下面的步驟配置c_cpp_properties.json不需要了,因為我按照上面的步驟來似乎沒有在頭文件有下劃線和原來有的燈泡圖標什么的,所以下面的開始到 “6、其他” 之前可以不用看,到這里基本配置完成】

配置c_cpp_properties.json

保存一下,然后切換至a.cpp,再次按F5啟動調(diào)試。

如果前面的配置都對的話,這個時候會進行編譯,然后跳出黑框輸出Hello World,之后窗口又迅速消失。

可能大多數(shù)人已經(jīng)習慣了VS/VC的便利,其實我們這只要在末尾加上一個cin輸入即可。加上int pause;cin>>pause;后再按F5。

但是這個貌似不夠高大上,其實我們一般是使用system('pause');實現(xiàn),換上后再次運行,這時候報錯了。因為我們我們引用的庫有問題,沒有正確引用進來,注意這里不是VS/VC,需要我們自己配置路徑。

注意:之前在下載安裝GNU哪里已經(jīng)配置了相應的環(huán)境變量,但是VScode中有個配置文件,他是根據(jù)自己的配置文件來找的。

在編輯器中,有小波浪的就是代碼有問題,看下#include<iostream>,左邊有個燈泡,點擊后跳出配置文件,修改其中的Win32的"includePath"如下,和上文一樣,根據(jù)自己的路徑進行調(diào)整即可。經(jīng)測試,下圖中代碼的注冊部分仍是必要部分

{

"name": "Win32",

"includePath": [

"C:/Program Files/MinGW/include/*",

"C:/Program Files/MinGW/lib/gcc/mingw32/5.3.0/include/*"

"C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/*",

"C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/mingw32/*",

"C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/backward/*"

],

"browse": {

"limitSymbolsToIncludedHeaders": true,

"databaseFilename": ""

}

}


6、其他

一勞永逸:因為VS需要為每一個文件夾做單獨配置,所以建議把.vscode文件夾放到你常用的文件夾的頂層,這樣就不用重復配置了。

不用每個新cpp文件就要一套配置。這些配置在你配置好的文件夾內(nèi)的所有子文件夾和文件都能使用。


最后效果:

設置斷點,變量監(jiān)視,調(diào)用堆棧的查看:

條件斷點的使用:

新更新:【紅色的是很早很早前更新的,2018.12.29更新,會用綠色的字體表示】

最后補一句:

vscode似乎還僅僅支持英文文件名的調(diào)試,中文調(diào)試的話就會出現(xiàn)“找不到文件XXXXX.cpp”(大意,原文記不清了,因為距離這個問題我已經(jīng)解決很長時間了,今天看到想補一下,別讓新人踩坑了。。。),然后問是否要創(chuàng)建,不知道是BUG還是啥,這糾結了我N久,因為我有些cpp文件是中文命名的,我去Github上找相應的issue也沒有找到我想要的這個問題解答,最后偶然間發(fā)現(xiàn)英文命名的文件調(diào)試時不會出現(xiàn)這個問題,才解決了!!真的很坑!!!新人注意!!!這里浪費了我很長很長時間!!

【要是根據(jù)上述方法還沒有配置成功,請看評論區(qū)是否有人提出了類似問題,還可以按照我在這篇文章之后一段時間寫的一篇:這篇文章,那篇文章使用了codeblocks自帶的MINGW,而且配置方法比這個簡單一些(因為這個是最早寫的),要是始終有問題,歡迎留言,我會抽時間盡我所能解答(非大神有好多解答不了。。。) 】


Linux版本配置(簡要)

也是很早之前配置過Linux的,今天我偶然發(fā)現(xiàn)了有以前用Linux配置的文件,感覺步驟都和windows配置不多(似乎沒有miDebuggerPath這一項),直接上文件了:

【注意:不確定這個還能不能用,因為是很早之前的了,僅僅做參考】

launch.json:

{

"version":"0.2.0",

"configurations": [

? ? ? ? {

"name":"(gdb) Launch",//配置名稱,將會在啟動配置的下拉菜單中顯示

"type":"cppdbg",//配置類型,這里只能為cppdbg

"request":"launch",//請求配置類型,可以為launch(啟動)或attach(附加)

"program":"${workspaceRoot}/${fileBasenameNoExtension}.o",//將要進行調(diào)試的程序的路徑

"args": [],//程序調(diào)試時傳遞給程序的命令行參數(shù),一般設為空即可

"stopAtEntry":false,//設為true時程序將暫停在程序入口處,一般設置為false

"cwd":"${workspaceRoot}",//調(diào)試程序時的工作目錄,一般為${workspaceRoot}即代碼所在目錄

"environment": [],

"externalConsole":true,//調(diào)試時是否顯示控制臺窗口,一般設置為true顯示控制臺

"MIMode":"gdb",

"preLaunchTask":"g++",//調(diào)試會話開始前執(zhí)行的任務,一般為編譯程序,c++為g++, c為gcc

"setupCommands": [

? ? ? ? ? ? ? ? {

"description":"Enable pretty-printing for gdb",

"text":"-enable-pretty-printing",

"ignoreFailures":true

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ]

? ? ? ? }

? ? ]

}

tasks.json:

{

"version":"0.1.0",

"command":"g++",

"args": ["-g","${file}","-o","${fileBasenameNoExtension}.o"],// 編譯命令參數(shù)

"problemMatcher": {

"owner":"cpp",

"fileLocation": ["relative","${workspaceRoot}"],

"pattern": {

"regexp":"^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",

"file":1,

"line":2,

"column":3,

"severity":4,

"message":5

? ? ? ? }

? ? }

}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,327評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,996評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,316評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,406評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,128評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,524評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,576評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,759評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,310評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,065評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,249評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,821評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,479評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,909評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,140評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,984評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,228評論 2 375

推薦閱讀更多精彩內(nèi)容