Dev Envirenment - VS Code && C++ && MinGW
阿新 • • 發佈:2019-02-22
pdb set echo 應用 UNC ive 進入 ignore lena
之所以寫這個中文檔,是因為官方文檔是英文的,並且有些地方沒說明白...(可能是我太小白了...)
1. 安裝 C++ 編譯器
- 安裝MinGW-W64 (註意:Architecture選擇符合自己CPU的版本)
- 添加系統環境變量(註意:需要重啟)
2. 安裝 C/C++ 擴展
- 安裝 VS Code
- 安裝 C/C++ 擴展
- 重啟軟件
3. 創建工作區
VS Code 有工作區的的概念,你可以在硬盤中準備一個目錄,然後通過 File -> Open Folder... 打開它。
我們可以將每個工作區都設置成獨立的編輯環境。
4. 智能感知和頭文件
- 打開命令選項板(Ctrl+Shift+P)
- 選擇C/Cpp: Edit Configurations...,打開c_cpp_properties.json配置文檔
{ "configurations": [{ "name": "MinGW", "intelliSenseMode": "gcc-x64", "compilerPath": "D:/MinGW/mingw64/bin/x86_64-w64-mingw32-gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "includePath": [ "${workspaceFolder}/**", "D:/MinGW/mingw64/x86_64-w64-mingw32/include", "D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++", "D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/tr1" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE", "__GNUC__=7", "__cdecl=__attribute__((__cdecl__))" ], "browse": { "path": [ "${workspaceFolder}/**", "D:/MinGW/mingw64/x86_64-w64-mingw32/include", "D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++", "D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/tr1" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } }], "version": 4 }
5. 編譯任務
- 打開命令選項板(Ctrl+Shift+P)
- 選擇Tasks: Configure Task -> Create tasks.json file from templates -> Others
{ // 有關 tasks.json 格式的參考文檔:https://go.microsoft.com/fwlink/?LinkId=733558 。 "version": "2.0.0", "tasks": [{ "label": "Compile", "type": "shell", // { shell | process } // 適用於 Windows 的配置: "windows": { "command": "gcc", "args": [ "-g", "\"${file}\"", "-o", "\"${fileDirname}\\${fileBasenameNoExtension}.exe\"" // 設置編譯後的可執行文件的字符集為 GB2312: // "-fexec-charset", "GB2312" // 直接設置命令行字符集為 utf-8: // chcp 65001 ] }, // 定義此任務屬於的執行組: "group": { "kind": "build", // { build | test } "isDefault": true // { true | false } }, // 定義如何在用戶界面中處理任務輸出: "presentation": { // 控制是否顯示運行此任務的面板。默認值為 "always": // - always: 總是在此任務執行時顯示終端。 // - never: 不要在此任務執行時顯示終端。 // - silent: 僅在任務沒有關聯問題匹配程序且在執行時發生錯誤時顯示終端 "reveal": "silent", // 控制面板是否獲取焦點。默認值為 "false": "focus": false, // 控制是否將執行的命令顯示到面板中。默認值為“true”: "echo": false, // 控制是否在任務間共享面板。同一個任務使用相同面板還是每次運行時新創建一個面板: // - shared: 終端被共享,其他任務運行的輸出被添加到同一個終端。 // - dedicated: 執行同一個任務,則使用同一個終端,執行不同任務,則使用不同終端。 // - new: 任務的每次執行都使用一個新的終端。 "panel": "dedicated" }, // 使用問題匹配器處理任務輸出: "problemMatcher": { // 代碼內問題的所有者為 cpp 語言服務。 "owner": "cpp", // 定義應如何解釋問題面板中報告的文件名 "fileLocation": [ "relative", "${workspaceFolder}" ], // 在輸出中匹配問題的實際模式。 "pattern": { // The regular expression. "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", // 第一個匹配組匹配文件的相對文件名: "file": 1, // 第二個匹配組匹配問題出現的行: "line": 2, // 第三個匹配組匹配問題出現的列: "column": 3, // 第四個匹配組匹配問題的嚴重性,如果忽略,所有問題都被捕獲為錯誤: "severity": 4, // 第五個匹配組匹配消息: "message": 5 } } }] }
- 現在可以使用“Ctrl+Shift+B”來構建程序了
5. 調試(Debug)
- 從側邊欄的Debug圖標進入Debug視圖
- 點擊Configure圖標
- 選擇C++ (GDB/LLDB)
{
"version": "0.2.0",
"configurations": [{
// 配置 VS Code 調試行為:
"name": "GDB Debug", // 設置在啟動配置下拉菜單中顯示調試配置的名稱。
"preLaunchTask": "Compile", // 調試會話開始前要運行的任務。
"type": "cppdbg", // 設置要使用的基礎調試器。使用 GDB 或 LLDB 時必須是 cppdbg 。
"request": "launch", // 設置啟動程序還是附加到已經運行的實例。啟動或附加 ( launch | attach ).
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 調試器將啟動或附加的可執行文件的完整路徑。
"externalConsole": true, // 設置是否顯示外部控制臺。
"logging": { // 用於確定應該將哪些類型的消息記錄到調試控制臺。
"exceptions": true, // 是否應將異常消息記錄到調試控制臺。默認為真。
"moduleLoad": false, // 是否應將模塊加載事件記錄到調試控制臺。默認為真。
"programOutput": true, // 是否應將程序輸出記錄到調試控制臺的可選標誌。默認為真。
"engineLogging": false, // 是否應將診斷引擎日誌記錄到調試控制臺。默認為假。
"trace": false, // 是否將診斷適配器命令跟蹤記錄到調試控制臺。默認為假。
"traceResponse": false // 是否將診斷適配器命令和響應跟蹤記錄到調試控制臺。默認為假。
},
// 配置目標應用程序:
"args": [], // 設置調試時傳遞給程序的命令行參數。
"cwd": "${workspaceFolder}", // 設置調試器啟動的應用程序的工作目錄。
"environment": [], // 設置調試時添加到程序環境中的環境變量,例如: [ { "name": "squid", "value": "clam" } ]。
// 自定義 GDB 或者 LLDB:
"windows": {
"MIMode": "gdb", // 指定 VS Code 連接的調試器,必須為 gdb 或者 lldb。
"miDebuggerPath": "D:/MinGW/mingw64/bin/gdb.exe" // 調試器的路徑,修改為你的安裝路徑
},
"miDebuggerArgs": "", // 傳遞給調試器的附加參數
"stopAtEntry": false, // 設置調試器是否停止在目標的入口(附加時忽略)。默認值為 false。
"setupCommands": [{ // 執行下面的命令數組以設置 GDB 或 LLDB
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing", // 鼠標懸停查看變量的值,需要啟用 pretty-printing 。
"ignoreFailures": true // 忽略失敗的命令,默認為 false 。
}]
}]
}
Dev Envirenment - VS Code && C++ && MinGW