由於之前都是在vs上除錯c++專案,現在覺得vs很重,而且對vim使用者不太友好,所以就想著都用vsc來做開發,首先來解決除錯問題。
沒有用makefile管理
1. 安裝必要的擴充套件
- C/C++:微軟提供的 C/C++ 擴充套件,支援語法高亮、程式碼補全和除錯功能。
- C/C++ Runner(C/C++ Runner by franneck94):有助於在專案中管理編譯和除錯過程。
2. 建立和配置多檔案專案
首先,需要在 VSCode 中建立一個包含多個原始檔的 C/C++ 專案。有以下結構:
project/
├── main.c
├── utils.c
├── utils.h
└── .vscode/
├── tasks.json
└── launch.json
3. 配置編譯任務(tasks.json)
在多檔案專案中,你需要配置 tasks.json 來指定如何編譯所有原始檔。
在 .vscode 資料夾下建立或開啟 tasks.json 檔案。
配置任務來編譯多檔案專案:
{
"version": "2.0.0",
"tasks": [
{
"label": "build all",
"type": "shell",
"command": "gcc",
"args": [
"main.c",
"utils.c",
"-o",
"output.exe", // 生成可執行檔案的名稱
"-g" // 生成除錯資訊
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"],
"detail": "編譯多個原始檔"
}
]
}
label:任務的名稱,可以自定義。
command:使用 gcc 來編譯 C 檔案。
args:指定要編譯的所有原始檔,以及輸出檔案的名稱。
-g:用於生成除錯符號,以便於除錯。
可以使用 Ctrl+Shift+B 快捷鍵來執行這個編譯任務。一定要注意先編譯出可執行檔案
4. 配置除錯(launch.json)
為了在除錯時能夠指定編譯生成的可執行檔案,需要建立或修改 launch.json 檔案。
在 .vscode 資料夾下建立或開啟 launch.json 檔案。
配置除錯啟動項:
{
"version": "0.2.0",
"configurations": [
{
"name": "GDB Debugging",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/output.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build all",
"miDebuggerPath": "/usr/bin/gdb", // 或 Windows 上的 gdb.exe 路徑
"internalConsoleOptions": "openOnSessionStart"
}
]
}
name:除錯配置的名稱。
type:選擇 cppdbg 作為除錯型別。
program:可執行檔案的路徑(例如 ${workspaceFolder}/output.exe)。
cwd:當前工作目錄,通常設定為 ${workspaceFolder}。
preLaunchTask:指定編譯任務,在除錯前自動執行編譯。
miDebuggerPath:指定 GDB 的路徑。對於 Windows 上,可以安裝 MinGW,並使用 MinGW 附帶的 GDB。
5. 啟動除錯
編譯專案:按 Ctrl+Shift+B 來觸發編譯任務,確保所有原始檔正確編譯並連結在一起。
啟動除錯:
按 F5 或者點選除錯按鈕,選擇 GDB Debugging 配置進行除錯。
VSCode 會自動執行 tasks.json 中定義的任務來編譯程式碼,然後啟動偵錯程式。
6. 設定斷點
在除錯過程中,可以在程式碼中點選左側行號區域來設定斷點,也可以透過在除錯控制檯中檢視變數、棧等資訊來更好地理解程式執行情況。
小結
tasks.json 用於配置編譯多個檔案,生成可除錯的可執行檔案。
launch.json 用於配置除錯選項,包括可執行檔案路徑、偵錯程式等。
使用 F5 啟動除錯前,確保編譯任務成功執行。