vscode 文件配置launch.json tasks.json


轉載來自: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的話 就會出現這個錯誤....

現在改下....好吧 我還是出現錯誤?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM