現(xiàn)在是2019.7.21,,由于這陣一直在忙,,今天我用最新的VSCode(Version 1.36.1) 和最新的Cpp插件(version 0.24.0)按照本文的安裝步驟從零開始試了一下,由于vscode版本和cpp插件版本更新確實(shí)變化了很多,,2019年7月21日更新的我會(huì)用這個(gè)顏色(粉色,?)標(biāo)示出來,供大家參考進(jìn)行配置,。也可以參考官方文檔:https://code./docs/cpp/config-mingw
弄了半天,,總算弄好了,結(jié)合網(wǎng)上的教程,,整理分享一下~
發(fā)現(xiàn)總有童鞋問相同的問題,,開始我還以為是沒有配置好,今天我自己按照我原來寫的嘗試了以下,,確實(shí)出現(xiàn)了問題,,可能是VScode或者cpp的插件版本問題,2018.12.29更新,,我會(huì)用綠色的字體表示,。
另外要是本文的更新內(nèi)容仍然不能解決您的問題,可以看看這篇文章,,這篇文章是之后寫的,,比這篇有條理些,配置過程也簡單些。要是始終有問題,,歡迎留言,,我會(huì)抽時(shí)間盡我所能解答(非大神有好多解答不了。,。,。)
總體流程:
- 下載安裝vscode
- 安裝cpptools插件
- 安裝編譯、調(diào)試環(huán)境
- 配置系統(tǒng)環(huán)境變量path
- 修改vscode調(diào)試配置文件
- 其他
- Linux版本配置(簡要)
1,、下載安裝vscode
https://code./Download
2,、安裝cpptools插件
打開vscode,按ctrl+p打開快速命令框,,輸入以下命令后等待
ext install cpptools
vscode在短暫的聯(lián)網(wǎng)查找后會(huì)列出插件列表,如圖:
點(diǎn)擊箭頭所指處的按鈕安裝插件,,安裝過程可能會(huì)有些慢耐心等待
安裝完成后vscode會(huì)提示你重啟vscode,,此時(shí)重啟即可
更新:因?yàn)槲已b這個(gè)插件已經(jīng)是幾年之前了,不確定現(xiàn)在界面還是不是這樣,,但是意思不變,,裝完后點(diǎn)重新加載就行了
3、安裝編譯,、調(diào)試環(huán)境
(若是電腦上原來裝著codeblocks,,Dev C++等可以跳過這步,
直接跳到 【4,、配置系統(tǒng)環(huán)境變量path】 這步即可)
目前windows下調(diào)試僅支持 Cygwin 和 MinGW,。
這里使用的是MinGW.
下面是MinGW的安裝配置過程: http:///
進(jìn)入官網(wǎng)點(diǎn)擊右側(cè) Download Installer下載安裝器
打開安裝器點(diǎn)擊install準(zhǔn)備安裝:
選擇一個(gè)安裝目錄,默認(rèn)為C:\MinGW這里選擇的是A:\MinGW
點(diǎn)擊Continue開始安裝,,安裝過程需聯(lián)網(wǎng),若安裝時(shí)提示error則需翻墻安裝
安裝過程很快,,結(jié)束后Continue按鈕恢復(fù)為可用狀態(tài),,點(diǎn)擊完成安裝,。
打開MinGW安裝管理器進(jìn)行進(jìn)一步配置
注意這里gdb必選,,否則無法調(diào)試
選中幾個(gè)需要的項(xiàng)右鍵Make for Installation進(jìn)行標(biāo)記,,其中g(shù)cc和g++為c和c++編譯器
選擇完全部想要安裝的項(xiàng)后點(diǎn)擊左上角Installation菜單下的Apply Changes應(yīng)用修改,,過程需聯(lián)網(wǎng),,中間出現(xiàn)error可先繼續(xù),,若最后失敗則需翻墻更新,建議翻墻,。
更新:單獨(dú)裝MinGW ,,我最早是這么搞的,要是發(fā)現(xiàn)不可以(無法下載或者很懷疑自己MinGW沒安裝好等),,可以試試codeblocks或者Dev-cpp等等,,這些IDE自帶編譯器,,還是看這篇文章 里面有使用codeblocks自帶的MinGW的細(xì)節(jié),當(dāng)然要是可以就繼續(xù),。
4,、配置系統(tǒng)環(huán)境變量path
然后配置系統(tǒng)環(huán)境變量path,這一步為必須
在 我的電腦 上右鍵 屬性:
然后按照下面步驟做即可,,注意最后新建的項(xiàng)要與之前MinGW安裝位置相對應(yīng)
Windows7注意,,要加入,不是覆蓋,!我第一次不小心把原來路徑覆蓋了,。。,。(因?yàn)閣in7不像win10那么明顯是加入,。。)
再次打開vscode,,注意配置系統(tǒng)環(huán)境變量path后重啟一下vscode 注意vscode調(diào)試需要在打開的文件夾中進(jìn)行(注意,!是用VSC打開文件夾!,!,,單獨(dú)打開一個(gè)單獨(dú)的cpp是沒有下面的幾個(gè)配置文件出現(xiàn)的!,!也就是說,,這個(gè)cpp要在一個(gè)文件夾里!不像DevCpp和C-Free可以直接調(diào)試一個(gè)單獨(dú)的cpp?。,。?/span>
5、修改vscode調(diào)試配置文件
打開文件夾后,,新建test.cpp(隨便建,,或者main.cpp)進(jìn)行輸入代碼測試:
如圖示進(jìn)入調(diào)試界面選擇C++:
更新:現(xiàn)在點(diǎn)擊之后變成了這樣的:VScode還會(huì)讓你再選一個(gè),都選第一個(gè)吧
然后會(huì)在工作目錄下的生成一個(gè)launch.json的啟動(dòng)配置文件:
使用下面代碼替換該文件:(只是在vsc自己產(chǎn)生的json文件加了一些行)
launch.json中有很多屬性可以設(shè)置, 通過智能提示查看有那些屬性可以設(shè)置, 如果要查看屬性的具體含義, 可以把鼠標(biāo)懸停在屬性上面, 會(huì)屬性的使用說明.
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名稱,,將會(huì)在啟動(dòng)配置的下拉菜單中顯示
"type": "cppdbg", // 配置類型,,這里只能為cppdbg
"request": "launch", // 請求配置類型,,可以為launch(啟動(dòng))或attach(附加)
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 將要進(jìn)行調(diào)試的程序的路徑
"args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),一般設(shè)為空即可
"stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔?,一般設(shè)置為false
"cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄,,一般為${workspaceFolder}即代碼所在目錄
"environment": [],
"externalConsole": true, // 調(diào)試時(shí)是否顯示控制臺(tái)窗口,一般設(shè)置為true顯示控制臺(tái)
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\gdb32.exe", // miDebugger的路徑,,注意這里要與MinGw的路徑對應(yīng)
"preLaunchTask": "g++", // 調(diào)試會(huì)話開始前執(zhí)行的任務(wù),,一般為編譯程序,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默認(rèn)的"externalConsole": false,,,而我這里改為了true,,改為true即在控制臺(tái)內(nèi)部運(yùn)行,不顯示黑框,,但是要是不顯示黑框似乎沒法輸入(cin或者scanf)了(沒怎么試過,,讀者可以試試)
注意miDebuggerPath要與MinGw的路徑對應(yīng) ,我用的codeblocks的gdb,,見上面的json文件,。
注意miDebuggerPath是\\,與直接粘貼過來的路徑不一樣,,需要加一個(gè)”\”(冒號后面的兩個(gè)反斜杠“\\”),或者使用一個(gè)“/”
替換后保存,,然后切換至test.cpp,按F5進(jìn)行調(diào)試,,此時(shí)會(huì)彈出一個(gè)信息框要求你配置任務(wù)運(yùn)行程序,,點(diǎn)擊它~
【注意】,上面的那個(gè)目前的cpp插件似乎沒有了,,若是直接按F5會(huì)出現(xiàn)下面這個(gè)圖,,不清楚評論區(qū)童鞋說的是不是這個(gè)?
請點(diǎn)擊第二個(gè)“配置任務(wù)”,,然后出現(xiàn)這個(gè):點(diǎn)就行了~
之后出現(xiàn):
在這里隨便選一個(gè):(我選的others)【隨便選,,反正最后tasks.json文件要被覆蓋】【下面的圖是更新之前的圖】
更新:現(xiàn)在變成這樣的了:我選的第三個(gè),g++那個(gè)
然后用下面代碼替換:【更新:原來的"version": "0.2.0"似乎會(huì)有下劃線報(bào)錯(cuò),,那就按照vscode說的改為2.0.0好了,,下面的是最新的復(fù)制即可?!?/span>
{
"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`,,似乎也可以成成功運(yùn)行,我把VSCode自己生成的這個(gè)json文件也貼上來(稍加改動(dòng)):這個(gè)json文件和上面那個(gè)都是可以使cpp正常運(yùn)行的
// See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "label": "g++", //這里注意一下,,見下文 "command": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\g++.exe", "${fileDirname}\\${fileBasenameNoExtension}.exe" "cwd": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin"
注意:“l(fā)abel”那一行,,要和前面的`launch.json`中的"preLaunchTask": "g++"這里寫的一樣,,因?yàn)榍懊鎌launch.json`中的"preLaunchTask"里我改為了g++,所以這里我也改為g++,,vscode默認(rèn)的是`g++.exe build active file`【`launch.json`("preLaunchTask": "g++.exe build active file")和`tasks.json`("label": "g++.exe build active file"),都是默認(rèn)的這個(gè),,當(dāng)然無論是什么,只要保持一致就行】
保存一下,,然后切換至test.cpp,,再次按F5啟動(dòng)調(diào)試~
【更新:似乎下面的步驟配置c_cpp_properties.json不需要了,因?yàn)槲野凑丈厦娴牟襟E來似乎沒有在頭文件有下劃線和原來有的燈泡圖標(biāo)什么的,,所以下面的開始到 “6,、其他” 之前可以不用看,到這里基本配置完成】
配置c_cpp_properties.json
- 保存一下,,然后切換至a.cpp,,再次按F5啟動(dòng)調(diào)試,。
- 如果前面的配置都對的話,,這個(gè)時(shí)候會(huì)進(jìn)行編譯,然后跳出黑框輸出Hello World,,之后窗口又迅速消失,。
- 可能大多數(shù)人已經(jīng)習(xí)慣了VS/VC的便利,其實(shí)我們這只要在末尾加上一個(gè)cin輸入即可,。加上
int pause;cin>>pause; 后再按F5,。
- 但是這個(gè)貌似不夠高大上,其實(shí)我們一般是使用
system('pause'); 實(shí)現(xiàn),,換上后再次運(yùn)行,,這時(shí)候報(bào)錯(cuò)了。因?yàn)槲覀兾覀円玫膸煊袉栴},,沒有正確引用進(jìn)來,,注意這里不是VS/VC,需要我們自己配置路徑,。
- 注意:之前在下載安裝GNU哪里已經(jīng)配置了相應(yīng)的環(huán)境變量,,但是VScode中有個(gè)配置文件,他是根據(jù)自己的配置文件來找的,。
- 在編輯器中,,有小波浪的就是代碼有問題,看下
#include<iostream> ,,左邊有個(gè)燈泡,,點(diǎn)擊后跳出配置文件,修改其中的Win32的"includePath"如下,,和上文一樣,,根據(jù)自己的路徑進(jìn)行調(diào)整即可,。經(jīng)測試,下圖中代碼的注冊部分仍是必要部分
"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/*" "limitSymbolsToIncludedHeaders": true,
6,、其他
一勞永逸:因?yàn)閂S需要為每一個(gè)文件夾做單獨(dú)配置,,所以建議把.vscode 文件夾放到你常用的文件夾的頂層,這樣就不用重復(fù)配置了,。
不用每個(gè)新cpp文件就要一套配置,。這些配置在你配置好的文件夾內(nèi)的所有子文件夾和文件都能使用。
最后效果:
設(shè)置斷點(diǎn),,變量監(jiān)視,,調(diào)用堆棧的查看:
條件斷點(diǎn)的使用:
新更新:【紅色的是很早很早前更新的,,2018.12.29更新,會(huì)用綠色的字體表示】
最后補(bǔ)一句:
vscode似乎還僅僅支持英文文件名的調(diào)試,,中文調(diào)試的話就會(huì)出現(xiàn)“找不到文件XXXXX.cpp”(大意,,原文記不清了,因?yàn)榫嚯x這個(gè)問題我已經(jīng)解決很長時(shí)間了,,今天看到想補(bǔ)一下,,別讓新人踩坑了。,。,。),然后問是否要?jiǎng)?chuàng)建,,不知道是BUG還是啥,,這糾結(jié)了我N久,因?yàn)槲矣行ヽpp文件是中文命名的,,我去Github上找相應(yīng)的issue也沒有找到我想要的這個(gè)問題解答,,最后偶然間發(fā)現(xiàn)英文命名的文件調(diào)試時(shí)不會(huì)出現(xiàn)這個(gè)問題,才解決了??!真的很坑!??!新人注意!??!這里浪費(fèi)了我很長很長時(shí)間!,!
【要是根據(jù)上述方法還沒有配置成功,,請看評論區(qū)是否有人提出了類似問題,,還可以按照我在這篇文章之后一段時(shí)間寫的一篇:這篇文章,那篇文章使用了codeblocks自帶的MINGW,,而且配置方法比這個(gè)簡單一些(因?yàn)檫@個(gè)是最早寫的),,要是始終有問題,歡迎留言,,我會(huì)抽時(shí)間盡我所能解答(非大神有好多解答不了,。。,。) 】
Linux版本配置(簡要)
也是很早之前配置過Linux的,,今天我偶然發(fā)現(xiàn)了有以前用Linux配置的文件,感覺步驟都和windows配置不多(似乎沒有miDebuggerPath這一項(xiàng)),,直接上文件了:
【注意:不確定這個(gè)還能不能用,,因?yàn)槭呛茉缰暗牧耍瑑H僅做參考】
launch.json:
"name": "(gdb) Launch", // 配置名稱,,將會(huì)在啟動(dòng)配置的下拉菜單中顯示 "type": "cppdbg", // 配置類型,,這里只能為cppdbg "request": "launch", // 請求配置類型,可以為launch(啟動(dòng))或attach(附加) "program": "${workspaceRoot}/${fileBasenameNoExtension}.o",// 將要進(jìn)行調(diào)試的程序的路徑 "args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),,一般設(shè)為空即可 "stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔?,一般設(shè)置為false "cwd": "${workspaceRoot}",// 調(diào)試程序時(shí)的工作目錄,一般為${workspaceRoot}即代碼所在目錄 "externalConsole": true,// 調(diào)試時(shí)是否顯示控制臺(tái)窗口,,一般設(shè)置為true顯示控制臺(tái) "preLaunchTask": "g++", // 調(diào)試會(huì)話開始前執(zhí)行的任務(wù),一般為編譯程序,,c++為g++, c為gcc "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing",
tasks.json:
"args": ["-g","${file}","-o","${fileBasenameNoExtension}.o"], // 編譯命令參數(shù) "fileLocation": ["relative", "${workspaceRoot}"], "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
|