Pikaopas: C-ohjelmien kääntäminen ja debuggaus VS Code -ympäristössä (Windows, MinGW/GDB)¶
Tämä pikaopas selittää, kuinka ohjelman kääntäminen ja debuggaus integroidaan VS Coden käyttöliittymään käyttämällä
tasks.json- ja launch.json-tiedostoja.Ennen tämän ohjeen käyttöä käy läpi Visual Studio Coden käyttöönotto. Tässä ohjeessa oletetaan, että VS Code, Microsoftin C/C++-laajennus,
gcc ja gdb on jo asennettu ja käytettävissä.Projektin rakenne¶
Yksinkertainen projekti voi käyttää seuraavaa rakennetta:
project/ ├─ src/ │ └─ main.c ├─ include/ (valinnainen) ├─ build/ └─ .vscode/ ├─ tasks.json └─ launch.json
Luo
build-hakemisto ennen kääntämistä. GCC ei luo tulostushakemistoa automaattisesti.Esimerkki main.c:
#include <stdio.h>
int main(void) {
printf("Hello VS Code!\n");
return 0;
}
Käännöskonfiguraatio: .vscode/tasks.json¶
Luo tiedosto
.vscode/tasks.json:{
"version": "2.0.0",
"tasks": [
{
"label": "Build C Project",
"type": "process",
"command": "gcc",
"args": [
"-Wall",
"-g",
"-O0",
"-std=c99",
"-I", "include",
"src/main.c",
"-o", "build/main.exe"
],
"problemMatcher": "$gcc",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
Tärkeimmät parametrit (tasks.json)¶
- type
** process: suorittaa
** shell: suorittaa komennon komentotulkin kautta (cmd/PowerShell). Tätä tarvitaan esimerkiksi komentotulkin ominaisuuksille
gcc:n suoraan ilman komentotulkkia** shell: suorittaa komennon komentotulkin kautta (cmd/PowerShell). Tätä tarvitaan esimerkiksi komentotulkin ominaisuuksille
&&, > tai *.c- command: käytettävä kääntäjä (
gcc) - args:
**
**
**
**
**
**
**
-Wall: ottaa käyttöön yleisiä kääntäjän varoituksia**
-g: lisää debuggaustiedot**
-O0: poistaa optimoinnit käytöstä, mikä helpottaa debuggausta**
-std=c99: käyttää C99-standardia**
-I include: lisää include-hakemiston header-tiedostojen hakupolkuun**
src/main.c: käännettävä lähdekooditiedosto**
-o build/main.exe: tuotettava suoritettava tiedosto- problemMatcher: antaa VS Coden tulkita GCC:n virheet ja varoitukset
- group: tekee tästä oletusarvoisen build-tehtävän (
Ctrl+Shift+B)
Debug-konfiguraatio: .vscode/launch.json¶
Luo tiedosto
.vscode/launch.json:{
"version": "0.2.0",
"configurations": [
{
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/main.exe",
"args": [],
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
```
"MIMode": "gdb",
"miDebuggerPath": "C:/msys64/ucrt64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Build C Project"
}
```
]
}
Jos MSYS2 on asennettu eri paikkaan, päivitä
miDebuggerPath osoittamaan oikeaan gdb.exe-tiedostoon.Tärkeimmät parametrit (launch.json)¶
- type
** cppdbg: debuggaus GCC/Clang-kääntäjillä ja GDB/LLDB-debuggereilla
** cppvsdbg: debuggaus Microsoft Visual C++ -debuggerilla
** cppvsdbg: debuggaus Microsoft Visual C++ -debuggerilla
- program: debugattavan suoritettavan tiedoston polku
- cwd: työskentelyhakemisto
- MIMode: käytä
gdb:tä MinGW:n kanssa - miDebuggerPath: polku
gdb.exe-tiedostoon - preLaunchTask: build-tehtävä, jonka VS Code suorittaa ennen debuggerin käynnistämistä
Käyttö¶
- Käännä ohjelma painamalla Ctrl+Shift+B.
- Aseta breakpoint klikkaamalla rivinumeron vierestä tai painamalla F9 valitulla rivillä.
- Aloita debuggaus painamalla F5 ja valitse Debug C Program, jos VS Code kysyy käytettävää konfiguraatiota.
- Käytä Debug-työkalupalkkia jatkaaksesi suoritusta, siirtyäksesi seuraavalle riville, siirtyäksesi funktion sisään tai pysäyttääksesi ohjelman.
Huomioita¶
- Tyhjä (hollow) breakpoint voi tarkoittaa:
** väärää suoritettavan tiedoston polkua
** puuttuvia debuggaustietoja (ohjelma on käännetty ilman
** kääntäjän optimointien olevan käytössä
** väärää GDB-polkuasetusta
launch.json-tiedostossa** puuttuvia debuggaustietoja (ohjelma on käännetty ilman
-g-valitsinta)** kääntäjän optimointien olevan käytössä
** väärää GDB-polkuasetusta
- VS Code voi luoda build- ja debug-konfiguraatiot automaattisesti aktiiviselle tiedostolle. Tällä sivulla esitetty konfiguraatio on hyödyllinen silloin, kun haluat hallita tarkemmin, kuinka projekti käännetään ja debugataan.
preLaunchTask-arvon täytyy vastata täsmälleen build-tehtävänlabel-arvoa.
Vaihtoehdot¶
- Vaihda ohjelman nimi:
** Muuta
** Päivitä
tasks.json-tiedostossa -o build/main.exe** Päivitä
launch.json-tiedostossa "program": "${workspaceFolder}/build/main.exe"- Käännä toinen lähdekooditiedosto:
** Korvaa
** tai luo lisää tehtäviä ja debug-konfiguraatioita
src/main.c tasks.json-tiedostossa** tai luo lisää tehtäviä ja debug-konfiguraatioita
- Jos projektissa on useita lähdekooditiedostoja, lisää tarvittavat
.c-tiedostot kääntäjän argumentteihin tai käytä build-järjestelmää, kuten Makea tai CMakea.