最后更新于2019年4月4日: 多次更新,內(nèi)容較多,篇幅較大,但如果是喜歡visual stdio code這款編輯器的話建議仔細(xì)閱讀,有疑問的地方可以在評論區(qū)留言
vscdoe是一款稍有研究就會為之驚嘆的軟件 vscode支持類似于vs的斷點調(diào)試c/c++,,也可以直接編譯&運行c/c++
先是編譯運行 c/c++的方法
微軟官方起初設(shè)定的科學(xué)做法(這也是現(xiàn)在的科學(xué)做法)是通過在vscode集成控制臺寫命令行的方式來實現(xiàn)編譯運行程序的,但也可以通過code runner插件來簡化步驟,實現(xiàn)一鍵編譯執(zhí)行 但無論是什么方法,因為vscode本身并不帶有編譯器,都需要自己提前安裝好一個c/c++編譯器(如mingw,clang)并且配置好環(huán)境變量(不會請點擊這里) 控制臺下編譯運行C/C++(如果不懂命令行操作可以暫時跳過這里): 按 ctrl + ~ 打開vscode控制臺,點擊終端,在vscode的終端下操作其實就是在windows下的cmd或者powershell下操作,一切的編譯運行等操作可以用輸入命令行的方式來實現(xiàn),只要掌握各自的編譯器的命令行指令就能讓程序在vscode界面上運行起來 c/c++編譯器的那一套自然不在話下(如下圖),先用cd 命令切換到源文件目錄或者直接輸入完整路徑名,然后用編譯器指令(假設(shè)編譯器是mingw) g++ xxx.cpp -o xxx.exe編譯,接著再輸入./xxx.exe就可以運行編譯好的程序 其他的c/c++編譯器如clang包括其他語言(Python ,Go,Java...)都可以類似的這樣操作
便捷方式是使用code runner插件: code runner插件默認(rèn)的c/c++編譯器是gcc/g++,需要提前安裝好并且設(shè)置好環(huán)境變量,,通常選擇MinGW或者MinGW-w64,建議選mingw-w64,,一般用戶建議下載離線版解壓后添加環(huán)境變量,,離線版下載地址:鏈接 不會請看:安裝mingw-w64具體過程 同時,code runner插件使用的編譯器是可以被修改為gcc/g++以外的編譯器的(比如clang,MSVC),有這方面需要請看:vscode修改code runner使用的編譯器 mingw和mingw-w64是有區(qū)別的,直觀的說,mingw-w64更加強大 安裝好并且設(shè)置好二者中的一個,并設(shè)置好環(huán)境變量后在cmd下輸入gcc -v確認(rèn)是否成功,出現(xiàn)關(guān)于gcc -v的相關(guān)信息(如下圖)就表示成功
接著點擊vscode左側(cè)面板中的插件商店按鈕 安裝好下面兩個插件 C/C++ Code runner 如果需要中文請安裝一個chinese插件
注意,如果沒安裝clang的話不要安裝推薦插件里的c/c++ clang插件,否則應(yīng)該會報錯
安裝好后重啟一下vscode這樣就能在右上角看見一個三角形了,,打開文件點擊就能編譯執(zhí)行 但此時會有這樣一個問題 如果程序里有scanf()等請求鍵盤輸入數(shù)據(jù)的函數(shù),,此時無法從鍵盤輸入數(shù)據(jù),,并且程序無法結(jié)束需要關(guān)閉重啟vscode才能重新執(zhí)行
解決辦法是依次打開:文件>首選項>設(shè)置>用戶設(shè)置>拓展>Run Code Configuration 找到 Run In Terminal 打上勾 這樣運行的程序就會運行在vscode的集成控制臺上 在工作區(qū)設(shè)置也有這個選項,,但工作區(qū)設(shè)置只會對工作區(qū)生效 這樣問題就能解決了 運行一段測試代碼 #include<bits/stdc++.h> using namespace std; int main(){ cout<<"hello"<<endl; int u; while(cin>>u){ cout<<u*u<<endl; } }
這時輸出信息會顯示在終端欄下面 隨便輸入測試數(shù)據(jù) 可以看到下圖的效果
點擊右上角的垃圾桶能提前結(jié)束程序運行 code runner插件有一個局限,code runner插件的原理其實是自動在控制臺下幫助我們輸入g++ xxx.cpp -o xxx.exe(假設(shè)是默認(rèn)情況)這條編譯指令,不會再添加額外的命令,比如如果代碼中使用了winsock2用g++編譯的話需要額外添加-lwsock32指令,即完整指令為g++ xxx.cpp -o xxx.exe -lwsock32,此時直接使用code runner的話會無法編譯,這種情況應(yīng)該使用上面提到的vscode集成控制臺手動輸入編譯指令編譯
調(diào)試 c/c++方法 首先一點:不支持中文路徑!??!(文件名和整個文件路徑名中都不能有中文,否則無法調(diào)試,,是由mingw不支持中文路徑造成的) 實際效果類似vs那樣按f5斷點調(diào)試 首先選中一個用于存放各種代碼的文件夾作為根路徑也就是工作區(qū),,因為調(diào)試只會對根路徑下的文件生效!??! 在vscode中打開這個文件夾(文件>打開文件夾>選中你的文件夾) 之后再在這個文件夾新建一個 .vscode 的文件夾,不要忘了開頭的 "." 號(如果已有則不必再額外新建) 再在.vscode文件夾中新建兩個配置文件 launch.json 和 tasks.json 類似于下圖
之后再把下面的兩個段代碼粘貼到對應(yīng)的文件里 這里需要修改一處:launch中 "miDebuggerPath" 選項需要設(shè)置為你的調(diào)試器(gdb.exe)所在位置 這里的是我電腦上MinGW -w64的安裝位置 無論安裝的是MinGW還是mingw-w64,,都會有一個gdb.exe在安裝目錄的bin文件夾下,,一定要把對應(yīng)的路徑修正否則無法調(diào)試 launch.json {
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/Program Files/mingw64/bin/gdb.exe",
"preLaunchTask": "g++",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
},
]
}
tasks.json {
"version": "2.0.0",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
之后打開在當(dāng)前工作區(qū)子目錄下的.c/cpp文件就可以添加斷點進(jìn)行調(diào)試了 此時可以按 ctrl+shift+b 直接調(diào)用配置好的g++ task 編譯程序而不運行程序,類似于一些IDE的編譯選項 如果我們要查看當(dāng)前某個變量的值或者某個表達(dá)式的值,可以像vs一樣在左側(cè)的調(diào)試面板添加監(jiān)視 也可以在下方的調(diào)試控制臺里直接輸入表達(dá)式或者變量名 當(dāng)然,最簡單的還是鼠標(biāo)直接移動到變量上,往往直接就顯示出來了,如果靠這樣不能解決的話,就試試上面兩種方法
也可以讓c/c++程序的調(diào)試在vscode的集成控制臺上進(jìn)行,不在額外顯示黑窗口,類似于code runner的界面效果 只需將launch.json中的 "externalConsole" 項由 true 改為 false 根據(jù)個人喜好設(shè)置,調(diào)試其他語言的程序時也有這個選項 效果 類似于code runner的問題: 如果是需要有額外的編譯指令如-lwsock32,需要調(diào)試前事先在tasks.json的args處添加上對應(yīng)的指令,或者用 // 注釋掉launch.json中的 preLaunchTask:"g++"(啟動調(diào)試前執(zhí)行g(shù)++編譯按tasks指令格式編譯) 這一項,然后自己在按ctrl + ~ 打開終端手動編譯好后再執(zhí)行調(diào)試
記?。赫{(diào)試是屬于工作區(qū)設(shè)置,,當(dāng)前配置的調(diào)試環(huán)境只會對當(dāng)前.vscode文件夾所在路徑下的文件生效,,如果要換用別的文件夾,把.vscode這個文件夾拷貝過去即可
最后,我使用的主題插件為tangming Themes,感興趣的可以去插件商店下載,里面一共四個主題
|
|