VBA – 5# Lekce – Debug proces

Ještě než se pustíme do slibovaného příkazu „Select Case“ chtěl bych Vám ukázat tzv. Debug v MS Excel. Je to nástroj, který prochází krok po kroku námi napsaný kód. Je to dobré, pokud máme delší kód a někde máme chybu. Nebo také k lepšímu pochopení chodu programu.

Debug

Tak a teď jak na to. Nejdříve si spustíme námi napsaný prográmek třeba z minulé lekce s podmínkami IF. Jak jsme již zvyklí, přepneme se do vývojového prostředí. Debug pustíme tlačítkem F8 nebo také v záložce Debug -> položka Step Into. Aby vše fungovalo, musíme mít kurzor nakliknutý v jakékoliv části námi napsaného programu. Postupným mačkáním F8 debug prochází jednotlivé řádky našeho kódu aktuálně „projížděný“ řádek je podbarven žlutě. Pokud potřebujeme vědět, jaké data se nám aktuálně načetly do proměnné, stačí najet kurzorem na danou proměnnou a zobrazí se nám, co obsahuje. Toto platí pro všechny proměnné v kódu ne jenom na tu podbarvenou.

Závěr

S tímto nástrojem jsem Vás chtěl seznámit zejména kvůli pochopení chodu programu. Aby jste viděli, co se kam kdy načítá a měli tak větší kontakt s napsaným kódem a uměli si vše líp představit. Závěrem si dáme úkol projít všechny námi doposud napsané programy tímto postupem a znovu se zamyslet jak program funguje zejména pak programy z minulé lekce kde jsme se poprvé setkali s IF.

Debugging ladeni v QT creatoru

Debugger je velice užitečný nástroj pro programátory. Mnohdy odhalí, proč program pracuje tak jak nemá a ušetří spoustu času při řešení takových nesrozumitelných chybách či překlepech v kódu. Postup ladění si ukážeme v programu QT Creator.

Na vyzkoušení debuggeru použijeme následující kód:

#include <stdio.h>

int main(void)
{
    int cislo1 = 10;
    int cislo2 = 20;

    printf("%d\n", cislo1);
    printf("%d\n", cislo2);

    return 0;
}

Postup ladění programu v QT creatoru

Nyní na určitý řádek v kódu musíme vložit Breakpoint. Klikneme na řádek, kde jej chceme vložit a klávesou F9 jej přidáme. Dá se přidat také kliknutím do volného šedého prostoru nalevo od čísla řádku. Breakpoint vložíme na 5. řádek.

Breakpoint

Při spuštění debuggeru F5 se vývojové prostředí automaticky přepne z editace (Edit Mode) do debuggeru (Debug Mode), zobrazí se konzole a program by se měl zaseknout na řádku, kde máme první breakpoint, v tomto případě 5. řádek.

QT Creator - Debugging

Prostředí debuggeru vidíte na obrázku, oproti Edit Modu zde navíc máte 3 okna. Vpravo nahoře seznam proměnných. Pod tímto oknem je seznam všech Breakpointu použitých v kódu. Nalevo od tohoto okna je zobrazeno kde v kódu se právě nacházíme (= řádek 5, funkce main). V okně se zdrojovým kódem je také navíc žlutá šipka (u čísla řádku) ta také informuje, kde se nacházíme. Můžeme vidět, že již jsou deklarovány proměnné aniž by debugger přes ně prošel, ale inicializace rozhodně nejsou správné. Hodnoty proměnných jsou načtený z paměti, kde jsou uloženy. Tuto stejnou paměť mohla využívat jiná aplikace v počítači, proto je hodnota proměnných takto nesmyslná.

Ovládání ladění je jednoduché,  budou nám stačit tyto 3 operace:

  • Step Into (F11) – operace která krokuje všechny operace, které se provedou při výpočtu (= nic nepřeskakuje)
  • Step Over (F10) – tato operace pracuje obdobně jako Step Into, akorát se nevnořuje do funkcí, které jsou volány v kódu
  • Step Out (Shift + F11) – pokud bychom se nacházeli ve vnořené funkci, která je příliš dlouhá tak tato operace nám pomůže se dostat nakonec a pokračovat v kódu kde funkce byla zavolána

Zkusíme si použití operací ukázat na příkladu.

QT Creator - Debugging

Nyní jsme použili 2x operaci Step Over (operace Step Into by se chovala stejně) a inicializace proměnné nyní máme správně. Nacházíme se na řádku 8.

  • Pokud bychom nyní použili Step Into dostali bychom se do funkce printf a museli bychom odkrokovat všechny řádky, které funkce obsahuje, taky bychom mohli z funkce vyskočit pomoci Step Out.
  • Pokud bychom použili Step Over, vůbec bychom se do funkce printf nedostali, ale její výpočet se provede. Operace Step Into se může hodit, právě pokud bychom se potřebovali dostat do funkcí, které jsme si sami naimplementovali, procházet vestavěné funkce nemá smysl, víme, že pracují správně.

Od předchozího obrázku jsme použili 5x Step Over a dostali jsme se nakonec výpočtu celého programu.

QT Creator - Debugging

Doufám, že tento tutoriál byl pro vás aspoň trochu užitečný.