轉載來自:https://blog.csdn.net/qq_33973359/article/details/105720511
這個是mac的 windows同樣適用 已經復現
文章目錄
1. 環境
2. 安裝插件
3. 添加 lauch.json
4. 添加 tasks.json
5. 開始調試
6. 總結
1. 環境
macOS:10.14
VSCode:1.44.2
Xcode:11.3.1(會用到Xcode的工具鏈,如lldb、clang)
2. 安裝插件
編輯、調試C/C++程序,需要安裝vscode插件:C/C++。插件官網地址。

現在,用於演示的該文件夾中只有hello.cpp一個文件。繼續往下閱讀,看看如何配置文件。

3. 添加 lauch.json
lauch.json 用於設置調試、運行時的東東;
tasks.json 用於設置編譯時的東東。
1.點擊頂部菜單欄運行(Run)-> 添加配置(Add Configuration);

2. 點擊 C++(GDB/LLDB)。

3.點擊下圖中的第一個clang++ - 生成和調試活動文件。因為該示例使用的C++語言,並且用clang編譯器編譯(和gcc一樣是Mac中自帶的,但是推薦用clang,並且不自帶g++,所以gcc系的編譯器不能默認還不能編譯c++,圖中的g++是博主自己安裝的;圖中兩個clang++XXX經過實測生成的文件是一樣的)。

會自動生成.vscode文件夾和launch.json文件。
需要特別注意的鍵:
preLaunchTask:該值需要與tasks.json中的label相同,否則調試時會提示找不到;
externalConsole:如果需要輸入東西,最好修改為true使用外部控制台(在運行時額外打開終端)。否則用vscode內置的控制台不能輸入東西(不是內聯控制台,內聯控制台和外部控制台其實是一樣的,但是這里調試的時候沒有內聯控制台這個選項)
其他的鍵,一般不用修改:
name:顯示在‘’調試”(Run)側邊欄的名字;
type:類型。不能改;
request:有launch和attach可選,這里填launch,按下F5就可以啟動調試了;而不是attach(附加);
program:程序所在路徑和程序名,更多變量在官方文檔;
args:這里填命令行參數(main函數的形參),如果沒有可不填;
stopAtEntry:為true時,在開始運行程序時,不立刻往后執行,先暫停一下,一般填false;
cwd:目標工作目錄,在哪個目錄調試程序,一般在當前文件夾(項目所在文件夾);
environment:臨時手動添加環境變量;
MIMode:指定調試器gdb或lldb。Mac下推薦用lldb,Xcode下載好就有;
可以通過鼠標懸停在關鍵字(鍵名)上,查看官方解釋。

至此,launch.json已經配置好了。
4. 添加 tasks.json
lauch.json 用於設置調試、運行時的東東;
tasks.json 用於設置編譯時的東東。
把界面點到代碼的頁面,別停留在launch.json,點擊頂部菜單欄終端(Terminal)-> 配置任務(Configure Tasks);

同樣選擇clang++的選項,博主這里有兩個clang++相關的東東,區別在clang++的路徑不一樣,博主這里用路徑為/usr/bin/clang++的好使,用Xcode路徑的那個不好使。

點擊后就會在.vscode中生成tasks.json文件。
需要特別注意的鍵:
label:需要與launch.json中的preLaunchTask保持一致,否則調試時會提示找不到;
command:編譯器所在的位置,博主用的/usr/bin/clang++;
args:編譯參數,如果你在命令行用過gcc編譯器應該知道這些選項和值都是啥。clang++命令的選項與gcc的類似,可以根據自己需要刪改,如需要開啟O2來編譯,則可以加上兩行"-O2"。更多變量在官方文檔;
cwd:運行時程序的工作目錄,一般與command編譯器的路徑一致。博主這里是手動修改了command值成截圖中樣子,所以兩處不同,但是也可以使用;
可以通過鼠標懸停在關鍵字(鍵名)上,查看官方解釋。

至此,tasks.json已經配置完成
5. 開始調試
點擊運行->啟動調試,或按鍵盤F5,或調試()側邊欄->綠色小箭頭,開始調試。
如圖,博主加了斷點(在行號前點一下)、用了外部控制台。窗口頂部中間或觸控欄上可以單步往下執行和終止程序。

6. 總結
關鍵點:
配置lauch.json和tasks.json先后順序可隨意;
tasks.json的label和launch.json的preLaunchTask要保持一致,否則調試時會提示找不到;
如果需要輸入東東,一定要將launch.json中的externalConsole設置為true,只有這種方法可以在調試時輸入。
最后生成的json文件如下
tasks.json
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活動文件",//label:需要與launch.json中的preLaunchTask保持一致,否則調試時會提示找不到; "command": "D:\\mingw64\\bin\\g++.exe", //編譯器所在的位置 //編譯參數,如果你在命令行用過gcc編譯器應該知道這些選項和值都是啥。clang++命令的選項與gcc的類似 "args": [ "-fdiagnostics-color=always", "-g", "${file}",//這里是單文件編譯的 如果要變成多文件編譯的話要改下 改成${fileDirname}\\*.cpp
"-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "調試器生成的任務。" } ], "version": "2.0.0" }
launch.json
{ // 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。 // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "g++.exe - 生成和調試活動文件", // type 告訴vscode編譯器的類型,我用的MinGW64也就是g++,這里是cppdgb // 這個是規定的,不是隨便寫,比如msvc編譯器就是cppvsdbg "type": "cppdbg", "request": "launch",//有launch和attach可選,這里填launch,按下F5就可以啟動調試了;而不是attach(附加) // program 這個是你的可執行程序位置,這里可以根據自己的tasks.json生成 // 程序的位置自定義修改,等會參照后面的tasks.json內容 //程序所在路徑和程序名 "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //這里填命令行參數(main函數的形參) "args": [], //為true時,在開始運行程序時,不立刻往后執行,先暫停一下,一般填false; "stopAtEntry": false, //目標工作目錄,在哪個目錄調試程序,一般在當前文件夾(項目所在文件夾); "cwd": "${fileDirname}", //臨時手動添加環境變量; "environment": [], //如果需要輸入東西,最好修改為true使用外部控制台(在運行時額外打開終端)。否則用vscode內置的控制台不能輸入東西(不是內聯控制台,內聯控制台和外部控制台其實是一樣的,但是這里調試的時候沒有內聯控制台這個選項) "externalConsole": false, //指定調試器gdb或lldb "MIMode": "gdb", //調試器的路徑 "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "為 gdb 啟用整齊打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], //這個表示 執行調試前 要完成的任務 該值需要與tasks.json中的label相同,否則調試時會提示找不到; "preLaunchTask": "C/C++: g++.exe 生成活動文件" } ] }

單文件編譯和多文件編譯
比如現在是多文件

如果還是file的話 就會出現這個錯誤....
現在改下....好吧 我還是出現錯誤?
