Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Jak hledat chyby v aplikaci

Během tvorby aplikace ale i při jejím běhu mohou nastat situace, kdy dojde k nějaké aplikační chybě. Tu je nutno zachytit, najít příčinu a opravit.
 

Hledání chyb ve skriptech

INFO systém:

Chyby jsou velmi často zjistitelné v INFO systému v položce /Errors/Script. U dané chyby je popis, číslo řádku a sloupce ve skriptu.

 
Metoda Pm.Debug:

Některé chyby ve skriptu však mohou být "záludnější". Například chyba nemusí být syntaktická ale sémantická, tzn. skript běží ale né tak jak by měl. Pro zjištění příčiny lze použít metodu Pm.Debug a např. tzv. "půlení intervalu". To znamená, že někde ve vhodném mistě (nebo na více místech) ve skriptu umístíme tuto metodu (s ladící poznámkou v prvním parametru výrazu). Pak ve spuštěné aplikaci zajistíme vykonání skriptu a v INFO systému v položce Debug_info zjistíme, zda je zobrazena "ladicí poznámka". Tato informace nám napoví, zda je chyba ve skriptu před nebo za poznámkou.

 
Web Obrazy:

Častou chybou při psaní skriptů v obrazech určených pro WEB je chybné přiřazení hodnot nebo čtení vlastností grafických prvků. Pro správné čtení nebo zápis do vlastností je nutno používat metody GetProp a SetProp. Další omezení jsou popsány v kapitole Web Obrazy.

Metoda Pm.Debug funguje i na WEB klientovi a výpis lze prohlížet když se ve WEB obraze stisknou zárověň klávesy Shift-Ctrl-Alt-mezerník.

 
VBScript příkaz "On Error":

Některým chybam nelze jednoduše zabránit, protože například mohou být vstupem od operátora. Například pokud operátor zadá do proměnné hodnotu 0 a tato proměnná se pak dále využívá ve skriptu ve výraze při dělení, pak samozřejmě vznikne chyba. Aplikace přitom nespadne ale daný skript se ukončí. Tuto situaci lze vyřešit tak, že před výraz, ve kterém by mohlo dojít k chybě, se vloží VBScript příkaz On Error. Ten zajistí to, že pokud na následujícím řádku vznikne chyba, pokračuje skript dále.

 
Inicializační zápis do grafického prvku:

Velmi často se objeví chyba skriptu v události onStart grafického prvku, který v této události čte nebo zapisuje do jiného prvku v obraze. Příčinou této chyby je to, že tento jiný prvek v průběhu vykonání této události ještě není zinicializován. To je chyba v pořadí prvků v obraze a lze ji odstranit tím, že prvek (ve kterém je skript) umístíme v pořadí nad všechny ostatní (tzn. označit prvek, pravé tlačítko myši a v menu zvolit "Označené prvky / Přenést označené prvky v pořadí paměti / nad všechny prvky").

 
Externí debugger:

Pro ladění skriptů lze také použít speciální externí ladící program (debugger). Popis použití je popsán: Jak ladit skripty v aplikaci PROMOTIC.

 

Dlouhodobé sledování chyb v aplikaci

Informace o chybách, které se zapisují do INFO systému jsou viditelné pouze ve spuštěné a zastavené aplikaci (v runtime a ve vývojovém prostředí). Při ukončení aplikace zaniknou a nelze je dohledat.
 
Ukládání chyb do LOG souboru:

Globální chyby se však mohou zapisovat i do souboru "Aplikace.ini". Tento zápis chyb lze ovlivnit v souboru "Aplikace.ini" v sekci [Log]. LOG soubor lze pak studovat i po několikanásobném ukončení a spuštění aplikace. Přednastaveno je logování jen první vzniklé chyby daného typu.

 
Vlastní logování chyb:

Lze také využít událost onAppError objektu PmRoot ke tvorbě například:

- vlastního logovacího souboru chyb
- k zápisu chybové události do alarmů nebo eventů
- k vyvolání jiné uživatelské akce (odeslání mailu, SMS, ...)

 

Restart aplikace

Mohou nastat situace, které se při krátkodobém testování aplikace neprojeví. Například:
- po restartu OS Windows je aplikace spuštěna dříve než služby Windows potřebné k běhu aplikace
- po nějakém časovém useku běhu aplikace dojdou volné prostředky OS Windows (Sledování běhu PROMOTIC aplikace paměť, GDI,...)
- neobnoví se spojení s komunikačním zařízením po výpadku sítě, atd.
 
Oddálit spuštění aplikace lze například:
- pomocí utility RunLater nebo
- v souboru Aplikace.ini v sekci Popis klíčů v sekci [Promotic] nastavit klíč RtStartDelay
 
K restartu aplikace nebo OS Windows po "zamrznutí" slouží bezpečnostní komponenta PmRtManager jako WatchDog.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice