Překlad a Debug

Překlad programu

Jakýkoliv program potřebuje ke své práci zdrojové kódy, které pro jazyk C jsou s příponout .c. Jelikož programovací jazyk C je kompilovaný programovací jazyk, je třeba po každé změně zdrojového kódu program přeložit. Pro zautomatizování této činnosti je potřeba provést několik kroků, které vytvoří soubor tasks.json

  1. Otevřít zdrojový kód programu
  2. Zvolit Terminal - Configure Default Build Task…
  3. Vybrat volbu s překladačem, v našem případě gcc

Následně se vytvoří základní předpis, který bude vypadat přibližně takto. Pro systém Linux nebo macOS nebude přípona exe a překladač se bude nacházet v jiném adresáři.

Pro překlad poté můžete využít i klávesové zkratky Ctrl + Shift + B.

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: gcc.exe build active file",
			"command": "C:\\MinGW\\bin\\gcc.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "compiler: C:\\MinGW\\bin\\gcc.exe"
		}
	]
}

Jelikož toto je generický předpis, doporučujeme upravit v předpisu args aby bylo zaručeno to, že nemusíte být v aktivním souboru main.c, ale kdekoliv.

  • Třetí řádek ${file} na ${workspaceFolder}\\main.c
  • Poslední řádek z ${fileDirname}\\${fileBasenameNoExtension}.exe na ${workspaceFolder}\\main.exe</note>

Vytvoření předpisu pro Debug

Jakýkoliv program než se může distribuovat dál je potřeba otestovat. Možností je samozřejmě několik, ale nejjednodušší a základní je lazení programu přímo, kde jsou vidět i hodnoty proměnných.

Stejně jako u překladu je potřeba vytvořit předpis. Jeho vytvoření se skládá z několika kroků:

  1. Zvolit v Run - Add Configuration…
  2. V otevřeném souboru launch.json klikneme na Add Configuration…
  3. Zvolíme {}C/C++ (gdb) Launch
  4. Ve vytvořené konfiguraci změníme tyto položky:
    1. program: “${workspaceFolder}\\main.exe”
    2. externalConsole: true
    3. miDebuggerPath: “C:\\MinGW\\bin\\gdb.exe”
  5. Přidáme položku “preLaunchTask” s parametrem podle vytvořeného tasku u parametru label, výše je “C/C++: gcc.exe build active file”

Upravený soubor launch.json poté může vypadat takto:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\main.exe",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe build active file"
        }
    ]
}

Debug Programu

Po vytvoření předpisu pro debug programu můžeme přistoupit k samotnému lazení programu. Ideální je si otevřít zdrojový kód, v našem případě main.c, přidat si breakpoint (červené kolečko vedle čísla řádku) na první řádek ve funkci main a stisknout klávesu F5 nebo přes Run - Start Debugging. Nahoře na obrazovce se objeví menu pro debug:

  • Continue (F5) - Pokračování do dalšího breakpointu
  • Step Over (F10) - Skočí na další řádek
  • Step Into (F11) - Skočí do funkce (pokud se na daném řádku nachází)
  • Step Out (Shift + F11) - Vyskočí z funkce zpět
  • Restart (Ctrl + Shift + F5) - Restartuje program
  • Stop (Shift + F5) - Ukončení debugu

Pokud se dojde na řádek, kde se nachází blokující funkce, např. scanf, je potřeba zadat vstup v externím okně, které při začátku debugu vyskočilo, stejně jako kdybychom program ovládali z konzole ve VS Code.

V levém okně potom je možnost nastavit sledovat proměnné nebo si některé nastavit (watch).

courses/b0b99prpa/tutorials/vsc/02_build_debug.txt · Last modified: 2025/10/08 08:57 by krskajo1