VS Code配置C/C++調(diào)試環(huán)境

需要準(zhǔn)備的程序

  • Visual Studio Code 建議選擇System Installer
    https://code.visualstudio.com/#alt-downloads 微軟的網(wǎng)站都不能跳轉(zhuǎn)?呵
  • MinGW-w64 編譯器,如果下載太慢的話,我還傳了一個(gè)藍(lán)奏云

開(kāi)始配置

  • 注冊(cè)環(huán)境變量

將MinGW解壓到一個(gè)合適的目錄,比如我解壓到C:\Program Files下,找到解壓的目錄

復(fù)制解壓出來(lái)的bin目錄的地址

右擊此電腦選擇屬性

點(diǎn)擊環(huán)境變量

點(diǎn)擊Path,選擇編輯

新建,將復(fù)制的目錄位置粘貼到此,確定

在桌面上按住shift點(diǎn)擊鼠標(biāo)右鍵-在此處打開(kāi)powershell, 輸入gcc -v,看到如下界面說(shuō)明環(huán)境變量配置成功

環(huán)境變量配置成功
  • 配置VS Code

建議在配置之前新建一個(gè)目錄專門用來(lái)存儲(chǔ)C/CPP文件,因?yàn)榕渲迷O(shè)置VS Code會(huì)默認(rèn)保存到配置時(shí)文件的目錄下。

Open with Code

新建一個(gè)C文件Code就會(huì)提示安裝相關(guān)插件

安裝拓展

我們寫點(diǎn)代碼,然后進(jìn)入調(diào)試界面,左邊第三個(gè)為調(diào)試界面,然后點(diǎn)擊綠色小三角

就會(huì)彈出環(huán)境選項(xiàng),我們選擇第一個(gè)
這里我們先選擇第一個(gè)gcc.exe,這個(gè)選項(xiàng)會(huì)生成gcc編譯的task,同時(shí)生成lauch.json,順利的話會(huì)同時(shí)編譯調(diào)試當(dāng)前代碼

為插件開(kāi)發(fā)者點(diǎn)贊,一鍵生成配置省去不少步驟。然后我們來(lái)看一下生成的兩個(gè)文件。

  • task.json
    可以看到已經(jīng)自動(dòng)添加了編譯命令gcc -g ${file} -o {fileBasenameNoExtension}.exe,這個(gè)命令會(huì)將我們的a.c編譯生成a.exe
  • launch.json

如果你僅僅編寫C語(yǔ)言文件,到此 VS Code已經(jīng)能夠滿足你的要求。編寫好文件,設(shè)置斷點(diǎn),點(diǎn)擊綠色小三角或者使用快捷鍵F5進(jìn)行調(diào)試即可

不過(guò),我們看到控制臺(tái)輸出了亂碼,原因在于VS Code默認(rèn)編碼為UTF-8,而我們用的中文系統(tǒng)的控制臺(tái)默認(rèn)編碼為GBK,只需要更改VS Code保存編碼

點(diǎn)擊右下角的UTF-8

點(diǎn)擊第二個(gè) save with encoding

接著在框內(nèi)輸入gbk,點(diǎn)擊下面的選項(xiàng)即可
可以看到已經(jīng)可以正常輸出

調(diào)試的兩個(gè)快捷鍵與Visual Studio相同,F10逐過(guò)程,F11逐語(yǔ)句。
好了,至此C環(huán)境已經(jīng)配置完成。如果你只需要編寫C的話下面的不用看了


C++環(huán)境配置

我們參照已經(jīng)生成的C的配置文件

打開(kāi)lauch.json,點(diǎn)擊Add Configuration,選擇箭頭所指的(gdb)lauch

可以看到為我們生成的新調(diào)試方式

對(duì)比著之前的gcc調(diào)試方式,我們需要修改一點(diǎn)細(xì)節(jié),從之前生成的復(fù)制過(guò)來(lái)修改lauch.json,主要修改這幾個(gè)選項(xiàng)

  • program
    ${fileDirname}\\${fileBasenameNoExtension}.exe
  • miDebuggerPath
    復(fù)制之前生成的
  • externalConsole
    false
  • 添加preLaunchTask

name也可以修改下,讓自己能識(shí)別是哪個(gè)命令就行。
完成后的lauch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(g++) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "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
                }
            ]
        },
        
    
        {
            "name": "gcc",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "gcc"
        }
    ]
}

然后我們打開(kāi)task.json,按照之前生成的gcc編譯命令,添加g++編譯命令.只需將之前的復(fù)制更改

  • label
    g++
  • command
    復(fù)制之前生成的,將gcc.exe改成g++.exe

完成后的task.json

{
    "tasks": [
        {
            "type": "shell",
            "label": "gcc",
            "command": "C:\\Program Files\\mingw64\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\Program Files\\mingw64\\bin"
            }
        },
        {
            "type": "shell",
            "label": "g++",
            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\Program Files\\mingw64\\bin"
            }
        }
    ],
    "version": "2.0.0"
}

回到我們的調(diào)試界面,已經(jīng)可以看到添加的g++調(diào)試選項(xiàng),修改保存編碼為GBK,調(diào)試成功

至此,你的 VS Code 已經(jīng)可以編譯調(diào)試C/C++了 ,當(dāng)然是在我們創(chuàng)建的目錄下的c/cpp文件。


注意(同時(shí)安裝了Visual Studio)

如果你的電腦同時(shí)安裝了VS的話,會(huì)出現(xiàn)頭文件的提示錯(cuò)誤,并且有些函數(shù)無(wú)法自動(dòng)補(bǔ)全。原因在于VS Code會(huì)默認(rèn)使用msvc編譯和VS的頭文件目錄,如果你沒(méi)有安裝VS的話,VS Code當(dāng)然不會(huì)找到msvc及VS頭文件相關(guān)配置目錄,就會(huì)默認(rèn)使用gcc

默認(rèn)使用msvc編譯

默認(rèn)使用VS 的頭文件

頭文件錯(cuò)誤,并且不會(huì)檢查代碼錯(cuò)誤

解決辦法

將默認(rèn)編譯器更改為gcc即可

更改成gcc

我們可以看到在setting.json里多了默認(rèn)gcc的設(shè)置


不會(huì)再提示頭文件的錯(cuò)誤,也會(huì)檢查代碼錯(cuò)誤了

成功檢查代碼錯(cuò)誤,并給出代碼補(bǔ)全

最后推薦幾款好用的VS Code 插件

  • Chinese (Simplified) Language Pack for Visual Studio Code
    中文插件
  • One Dark Pro
    很好看的主題插件
  • Tabout
    Tab鍵跳出右括號(hào),對(duì)于習(xí)慣了 Visual Studio 的用戶超級(jí)方便

效果如下

本編文章面向未使用過(guò) VS Code 的用戶及編程初學(xué)者。如果您正在尋找一款輕量化,顏值高的文本編輯器,同時(shí)又有輕度調(diào)試需求的話,不妨試試VS Code。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,530評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 176,407評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 62,981評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,759評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 55,204評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 42,415評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,955評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 34,650評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 35,892評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,675評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,967評(píng)論 2 374