vscode除錯多C++檔案專案

LIalan發表於2024-11-10

由於之前都是在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 啟動除錯前,確保編譯任務成功執行。

相關文章