Atollic Lite

Atollic studio Lite má oproti placené "Pro" verzi velmi ořezané možnosti debugování. Stejně ořezaná je i dokumentace, takže v User manualu se vlastně nic podstatného nedočtete. Tento článek bude tedy změť různých metod o kterých vím, že v Lite verzi fungují. Pokud časem narazím na nějaké další možnosti, určitě je sem přidám a rozhodně se nebudu zlobit, pokud to udělá někdo z vás. (Možná je na čase změnit IDE)

Breakpoint

Představovat Breakpoint by bylo asi nošením dříví do lesa. Prostě si vyberete řádek zdrojového kódu, umístíte na něj breakpoint a program se před jeho vykonáním zastaví. O nesmírných přínosech tohoto debugovacího nástroje vás asi nemusím přesvědčovat. Proto se raději budu věnovat nadstandardním verzím breakpointu. Než se k nim ale dostanu, jen pro úplnost bych zmínil, že libovolnému breakpointu lze nastavit ignore count a conditions. Ignore count slouží k ignorování prvních několika událostí (program se při nich na breakpointu nezastaví). Condition slouží ke specifikování podmínek za kterých se má program na breakpointu zastavit. Podmínkou může být výraz (například ve stylu i==5). V takovém případě se program na breakpointu vždy zastaví, studio vyhodnotí výraz a pokud nebude platný, nechá program běžet dál. Jak dlouho to studiu trvá je otázka (a vcelku důležitá). Teď ale přejděme k zajímavějším možnostem debugu.

Breakpoint - Dynamic Printf

Docela často se vám stane, že pomocí breakpointu sledujete pouze obsah nějaké proměnné nebo registru. Program se zastaví na breakpointu, vy si přečtete hodnotu a program opět spustíte. To je dost otravný proces a může ho za vás dělat IDE a to pomocí "dynamic printf". Klikněte pravým tlačítkem na lištu kam umísťujete breakpointy a zvolte Breakpoint types -> C/C++ Dynamic Printf. Dvojklikem levým tlačítkem teď můžete umísťovat tento typ breakpointů. Jeho ikona pak vypadá jako na následujícím obrázku.


Breakpoint typu Dynamic Printf

Tento typ breakpointu funguje tak, že jakmile se na něm program zastaví, studio automaticky vyhodnotí "printf" výraz (o něm později), vypíše jeho výstup do Console a nechá program pokračovat. Výraz můžete editovat v Breakpoint Properties (k němuž se dostanete pravým kliknutím na ikonku breakpointu).


parametry Dynamic Printf

V posledním řádku nadepsaném "prinf (" vyplníte výraz se stejným formátováním jako by jste volali funkci printf. Tedy nejprve řidící řetězec a poté seznam argumentů. Výsledky pak můžete sledovat v okně Console.


Výpis pak můžete sledovat v okně Console

Watchpoint (Data breakpoint)

Občas budete potřebovat položit zastavit program při přístupu do nějaké proměnné. Tento přístup se přirozeně může uskutečňovat z mnoha a mnoha různých míst ve zdrojovém kódu a odchytit ho pomocí breakpointů by bylo velmi obtížné (ne-li nemožné). K tomuto účelu slouží watchpoint. Ten míří na určitou buňku (adresu) v paměti. Vykonávání programu se pak může zastavit po instrukci, která na příslušnou adresu přistupuje. Přístupem může být buď zápis nebo čtení z této adresy. K umístění watchpointu tedy potřebujete adresu vybrané proměnné, tu lze získat mnoha způsoby. Například pomocí okna Expressions (viz obrázek níže).


Adresy vybraných proměnných

Protože se watchpointy nevážou na jeden konkrétní řádek zdrojového kódu, není možné je umisťovat stejně jako běžné breakpointy. Nastavit watchpoint můžete v okně "breakpoints" kliknutím na ikonku malé šipky (viz obrázek níže)


Vytvoření watchpointu

Ignore Count a Condition má funkci jako ve všech předchozích případech. Význam položky Range mi zatím není známý (User Manual Atollicu se ničemu z toho nevěnuje).


Vytvoření watchpointu

Home
V0.2 23.7.2017
By Michal Dudka (m.dudka@seznam.cz)