參考資料:
官方文檔(可能比較慢悦冀,耐心等待0.0):https://code.visualstudio.com/docs/cpp/config-clang-mac
簡(jiǎn)書(shū):http://www.reibang.com/p/776a5fb57fbb
第一步:下載安裝vscode,點(diǎn)擊官網(wǎng)地址拉背,進(jìn)入網(wǎng)站后根據(jù)操作系統(tǒng)選擇下載的版本脖咐。
第二步:下載相關(guān)插件伤柄。
啟動(dòng)vscode后界面如下(界面顏色和語(yǔ)言可能有所不同)
然后以此按照以下步驟:
第三步:生成相關(guān)配置文件。
此時(shí)我們還需要一個(gè).vscode文件夾(注意前面有個(gè)點(diǎn))文搂,里面包含三個(gè)文件(可以手動(dòng)寫(xiě),也可以自動(dòng)生成)秤朗,分別是c_cpp_properties.json煤蹭,tasks.json,launch.json取视。它們包含的作用分別如下:
c_cpp_properties.json:用于指出編譯器的位置在哪硝皂。
tasks.json:用于指出如何構(gòu)建這個(gè)程序(比如clang加一些選項(xiàng)等)。
launch.json:一些debug設(shè)置作谭。
以上只是包含這些作用稽物,但不限于這些作用,詳細(xì)信息請(qǐng)參考官方網(wǎng)站折欠。
首先生成c_cpp_properties.json文件贝或。
然后會(huì)是這些內(nèi)容(可能有所不同)
上圖中可以看出vscode自動(dòng)幫我們生成了一個(gè).vscode文件夾,里面包含一個(gè)c_cpp_properties.json文件锐秦。關(guān)于${workspaceFolder}代表什么咪奖,建議參考官方文檔地址,里面解釋得比較清楚酱床。
上面文件里面最重要的是compilerPath參數(shù)羊赵,指出了編譯器的位置,在我的Mac中扇谣,應(yīng)該為/usr/bin/clang昧捷。includePath用來(lái)指出非標(biāo)準(zhǔn)路徑之外的路徑,默認(rèn)即可罐寨。macFrameworkPath添加"/System/Library/Frameworks"和"/Library/Frameworks"這兩個(gè)路徑靡挥。最后文件內(nèi)容如下:
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
接下來(lái)是tasks.json文件,在命令面板(command palette)中輸入task鸯绿,然后選擇配置默認(rèn)生成任務(wù)芹血。如圖:
內(nèi)容如下:
其中的內(nèi)容如下:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build with Clang",
"type": "shell",
"command": "clang++",
"args": [
"-std=c++17",
"-stdlib=libc++",
"'${file}'",
"-o",
"'${fileBasenameNoExtension}'",
"--debug"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
其中command表示使用哪個(gè)命令贮泞,由于我的是Mac,所以寫(xiě)成clang++幔烛。args指出命令后面跟著的參數(shù)啃擦,${file}和${fileBasenameNoExtension}代表什么請(qǐng)?jiān)谏厦嫣岬降逆溄又胁樵儭?/p>
最后是launch.json文件。
出現(xiàn)如下所示:
更改內(nèi)容如下:
{
// 使用 IntelliSense 了解相關(guān)屬性饿悬。
// 懸停以查看現(xiàn)有屬性的描述令蛉。
// 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "Build with Clang",
}
]
}
program指出你需要調(diào)試的程序在哪個(gè)位置狡恬。
stopAtEntry設(shè)置true表示在程序在進(jìn)入main之后就中斷珠叔,相當(dāng)于在main處設(shè)置了一個(gè)斷點(diǎn)。
preLaunchTask表示在啟動(dòng)程序時(shí)弟劲,先構(gòu)建程序祷安,然后構(gòu)建這個(gè)程序的名字就是tasks.json文件中的label參數(shù),必須要一致兔乞,不然就不會(huì)構(gòu)建程序汇鞭,當(dāng)然也可以手動(dòng)構(gòu)建程序,然后再啟動(dòng)程序進(jìn)行調(diào)試庸追。
第四步:程序運(yùn)行和調(diào)試霍骄。
產(chǎn)生一個(gè)文件夾和程序。
在終端運(yùn)行這個(gè)程序:
調(diào)試這個(gè)程序淡溯,先修改程序如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
for(int i=0;i<10;i++)
{
printf("%d\n", i);
}
return 0;
}
在第六行設(shè)置斷點(diǎn)读整,在框框里面點(diǎn)擊即可。
然后直接按F5或者在調(diào)試->啟動(dòng)調(diào)試咱娶,就可以進(jìn)行調(diào)試了
至此所有步驟已完成米间,感謝觀看,如果錯(cuò)誤請(qǐng)及時(shí)指出膘侮。