Pikaopas: C-ohjelmien kääntäminen ja debuggaus VS Code -ympäristössä (Windows, MinGW/GDB)¶
0) Vaatimukset Windowsissa¶
- Kääntäjä: MinGW-w64 (esimerkiksi MSYS2 UCRT64: C:\msys64\ucrt64\bin\gcc.exe ja gdb.exe)
- VS Code + laajennukset:
- C/C++ (Microsoft)
Huomaa, että kääntäjä ja GDB voivat sijaita eri polussa. Sinun pitää tietää, minne ne on asennettu, tai ne täytyy olla Windowsin PATH-muuttujassa.
1) Projektin rakenne¶
project/
├─ src/
│ └─ main.c
├─ include/ (valinnainen)
└─ .vscode/
├─ tasks.json
└─ launch.json
Esimerkki main.c:
#include <stdio.h>
int main(void) {
printf("Hello VS Code!\n");
return 0;
}
2) Käännöskonfiguraatio: .vscode/tasks.json¶
{
"version": "2.0.0",
"tasks": [
{
"label": "Build C Project",
"type": "process",
"command": "gcc",
"args": [
"-g",
"-O0",
"-std=c99",
"-I", "include",
"src/main.c",
"-o", "build/main.exe"
],
"problemMatcher": "$gcc",
"group": { "kind": "build", "isDefault": true },
"options": {
"env": {
"PATH": "C:\\msys64\\ucrt64\\bin;${env:PATH}"
}
}
}
]
}
Tärkeimmät parametrit (tasks.json)¶
- type
- process: ajaa gcc suoraan, ilman komentotulkkia
- shell: käyttää komentotulkkia (cmd/powershell), tarvitaan kun käytetään &&, >, *.c
- command: käytettävä kääntäjä (gcc)
- args:
- -g: lisää debug-symboleita (tarvitaan breakpointteihin)
- -O0: ei optimointeja (helpompi debugata)
- -std=c99: käytä C99-standardia
- -I include: lisää include-hakemisto
- src/main.c: lähdekoodi
- -o build/main.exe: tuotettava tiedosto
- problemMatcher: tulkitsee gcc:n virheet/varoitukset klikattaviksi
- group: oletus build-tehtävä (Ctrl+Shift+B)
- options.env.PATH: varmistaa että gcc/gdb löytyvät
3) Debug-konfiguraatio: .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"
}
]
}
Tärkeimmät parametrit (launch.json)¶
- type
- cppdbg: GCC/Clang + GDB/LLDB
- cppvsdbg: MSVC (Visual Studio debugger)
- program: suoritettavan ohjelman polku
- cwd: työskentelyhakemisto
- MIMode: käytä gdb kun käännät MinGW:llä
- miDebuggerPath: gdb:n polku
- preLaunchTask: build-tehtävä joka ajetaan ensin
4) Käyttö¶
- Pelkkä käännös: Ctrl+Shift+B (oletus build-tehtävä)
- Debuggaus breakpointeilla: F5 ja valitse *Debug C Program
- Suorita ilman debuggausta: Ctrl+F5 (sama konfiguraatio, mutta ilman debuggeria)
Huomioita¶
- Tyhjä (hollow) breakpoint tarkoittaa:
- launch.jsonissa on väärä polku
- ohjelmaa ei käännetty debug-symboleilla (puuttuu -g)
- optimoinnit ovat päällä (poista -O2/-O3, käytä -O0)
- gdb:n polku on väärä
5) Vaihtoehdot¶
- Vaihda ohjelman nimi:
- tasks.json: muuta tuotettavaa tiedostoa -o build/square.exe
- launch.json: päivitä "program": "${workspaceFolder}/build/square.exe"
- Käännä eri lähdetiedosto:
- tasks.json: korvaa src/main.c uudella tiedostolla
- tai tee useita tehtäviä/konfiguraatioita
6) Vinkkejä¶
- process tyyppi = ei komentotulkkia, ennustettavampi
- shell tyyppi = komentotulkin ominaisuudet, mutta voi tulla ongelmia lainausmerkkien kanssa
- C/C++ -laajennuksen *Run C/C++ File* kääntää vain aktiivisen tiedoston, ei käytä sinun konfiguraatioitasi. Projekteissa kannattaa aina käyttää omia tasks/launch.json -tiedostoja.