ScriptDebugger.exe
Defaultně dodávaný exe soubor. Tento nástroj umožňuje ladit balíčky skriptů, krokovat jejich běh, pozastavovat na bodech zastavení (breakpoints), zjišťovat zanoření volání (callstack), vyhodnocovat výrazy, zachytávat ladící hlášení, zjišťovat a měnit hodnoty lokálních proměnných skriptů apod.
Tento nástroj je určen především servisním konzultantům servisní sítě výrobce a správcům systému. Běžný uživatel tento nástroj ke své práci nebude potřebovat.
Nástroj ScriptDebugger vyžaduje pro svou činnost desktopový OS Windows 7 a vyšší, popřípadě serverový OS Windows 2003 a vyšší. Dále je třeba na případném firewallu povolit port 8438. Pokud je použit pouze vestavěný firewall ve Windows, pak postačí při navázání povolit tomuto programu TCP komunikaci.
Nástroj ScriptDebugger obsahuje mnoho dalších funkcí a vlastností, obvyklých pro tzv. IDE prostředí, např. zapnutí zastavování běhu při vzniku výjimky v kódu skriptu, zobrazování ladících informací odesílaných ze skriptu pomocí vestavěné funkce OutputDebugString a pod.
Tato volba se nachází v kontextovém menu hlavního okna ScriptDebuggeru vyvolaného pravým tlačítkem myši.
Prostřednictvím této volby se lze připojit ke zvolenému procesu.
Nemusí se jednat nutně o proces ABRA Gen, ale lze "ladit" libovolný spuštěný proces, protože “ladění” probíhá prostřednictvím událostí na úrovni Windows API.
V zobrazeném okně se pak vypisují některé z událostí, které v daném procesu probíhají:
- Zápis prostřednictvím metody OutputDebugString (OUTPUT_DEBUG_STRING_EVENT)
- Spuštění nového procesu (CREATE_PROCESS_DEBUG_EVENT)
- Ukončení procesu (EXIT_PROCESS_DEBUG_EVENT)
- Vzniklé výjimky (EXCEPTION_DEBUG_EVENT)
Obdobnou funkci jako volba Ladit proces má tlačítko Připojit API Debugger. Tato volba je dostupná v ladícím okně připojeného procesu AbraGen.exe.
Typické ladící sezení probíhá takto:
- laděné balíčky skriptů musí být zkompilované a musí mít nastaven stav "Ladit", skripty bez tohoto příznaku není možné ladit
- spustí se ScriptDebugger, seznam připojených klientů bude prázdný
- spustí se ABRA s laděnými balíčky a přihlásí se uživatel, který musí mít privilegium "Ladit skripty", uživatelé bez tohoto privilegia nemohou ladit žádné skripty
- v seznamu připojených klientů ve ScriptDebuggeru se objeví spuštěná ABRA a otevře se prázdné pracovní okno klienta
- uživatel normálně v systému ABRA pracuje, v okamžiku, kdy se zavádí libovolný laděný skript (např. skript typu "Agenda" při prvním spuštění skriptované agendy), zastaví se jeho provádění a v pracovním okně ScriptDebuggeru se objeví zdrojový kód skriptu, ukazatel stojí na jeho první řádce
- v tento okamžik je možné:
- spustit bez ladění (Běh, F9), v tom případě se již během sezení běh v tomto skriptu nezastaví, tj. typicky není pro ladění důležitý
- krokovat (Krok, F8), zpracuje se aktivní řádka skriptu a ukazatel se přesune na další řádku, v případě větvení či cyklů je pak možné podrobně vidět proces celého skriptu
- spustit ke kurzoru (Aktuální pozice, F4), spustí se běh bez ladění, přičemž se běh opět zastaví v místě, kde se nachází v okamžiku vyvolání funkce kurzor, tj. typicky lze bez krokování přeskočit např. více řádků nebo dlouhý cyklus
- umístit do kódu bod zastavení (dvojklik před řádek kódu), při dalším provádění skriptu bez ladění se běh zastaví na tomto řádku před jeho vykonáním; body zastavení lze doplnit o další pokročilé atributy na záložce Body zastavení, např. je možné k bodu přiřadit výraz, který se při průchodu skriptu bodem zastavení vyhodnotí, a skript se zastaví pouze, pokud je výsledkem pravdivá hodnota (True) apod.
- vyhodnotit výraz, zjistit hodnotu proměnné či ji změnit pomocí záložky Nástroje
- přepínat mezi zavedenými skripty pomocí seznamu nad zdrojovým kódem skriptu a pracovat s body zastavení v těchto skriptech
-
Ručně vyvolat výjimku z breakpointů nebo za přímého běhu. Více informací v příkladu zde.