Nacházíte se zde: Úvod » Geodézie a projektování » Tipy a triky » Technické rady » Jak přežít havárii Kokeše

Jak přežít havárii Kokeše

Jak přežít havárii Kokeše

Jan Kuzník, 29. března 2000

Každý uživatel operačního systému Windows dříve nebo později zažije smutný konec své oblíbené aplikace. Jedná-li se o editor s celodenní (neuloženou) prací, je to věc velmi nemilá. Do programu Kokeš byla proto zabudována řada prvků aktivní i pasivní bezpečnosti, které mají za úkol podobné incidenty minimalizovat, v případě lehčí havárie umožnit “přežití” Kokeše (a uložení dat) a v neposlední řadě zjistit, co se vlastně stalo, aby alespoň propříště bylo možno dosáhnou nápravy.

Probereme jednotlivé případy havárií v pořadí klesající závažnosti.

Nejhorším incidentem, se kterým se můžeme setkat, je neošetřená výjimka v aplikaci. Projeví se systémovým dialogem, který se liší podle operačního systému a instalovaneho software. Na Windows 98 vypadá například takto:

Havárie systému

U Windows NT, kde není instalován jiný program na zachytávání krachů, se obvykle objeví aplikace Dr. Watson.

V každém případě tato událost znamená náhlý konec programu bez šancí na záchranu. Za normálních okolností by se neměla u distribučního Kokeše objevit. Objevuje-li se v různých situacích, pak je s největší pravděpodobností něco v nepořádku se systémem (ovladače, knihovny, paměti, cache). Uživateli nezbývá než si zapsat obsah dialogu, zjistit verzi Kokeše a obrátit se na firmu Gepro. Zkušenosti z minula ovšem ukazují, že skoro vždy jsme v těchto situacích detekovali závadu v systému, na kterém Kokeš běžel.

Pokud se skutečně jedná o programátorskou chybu, pak zásadním předpokladem jejího nalezení a odstranění v další verzi je možnost chybu reprodukovat. Chybový dialog obvykle neobsahuje dostatek informací k nalezení chyby zejména v případě, kdy ke krachu dojde uvnitř operačního systému. Samostatné hlášení podobné příhody má proto smysl hlavně v případě, že stejná nehoda postihne více uživatelů. Pak je možno zkusit najít společný rys. Pokud ovšem někdo dokáže najít opakovatelný postup vedoucí k chybě, je skoro vyhráno. Nalezení a opravení havárie, kterou se podařilo generovat na počítači vývojářů v Gepru, je dílem okamžiku. Úspěšný lovec takové chyby se může těšit na srdečný dík i uznání vývojového týmu a okamžitou dodávku opravené verze. To samozřejmě platí i v případě méně závažných havárií, ke kterým se dostaneme dále.

Občas se setkáme s červeným řádkem na konzole, který oznamuje havárii systému s doporučením na ukončení aplikace:

1
havárie systému, ukončete aplikaci havárie systému při kresbě, ukončete aplikaci havárie systému při běhu Basicu, ukončete aplikaci

Je to incident v jádře Kokeše, kdy zabralo vnitřní odchytávání chybových stavů. Obvykle je možno pokračovat v práci a chybu ignorovat. Přesto důrazně varujeme před podobným postupem. Problém spočívá v tom, že násilně přerušená funkce nedostala příležitost po sobě “uklidit”. Navíc je docela dobře možné, že byly přepsány vnitřní struktury nesprávnými daty. Opakované ignorování havárie nakonec může Kokeše poškodit do té míry, že zkolabuje neošetřenou výjimkou. Šlo-li o chybu při editaci, pak mohou být i nesprávně změněna data. Opatrnému uživateli se proto doporučuje, aby po havárii uložil data do nových souborů a nastartoval Kokeše znova.

Pro účely havarijního ukládání se zejména hodí funkce “rul” (rychlé uložení, není na menu). Nepoužívá dialogy, což zvyšuje pravděpodobnost úspěchu v situaci, kdy je operační systém na pokraji sil. Pokud neprovádíme pravidelné zálohy (funkce automatické ukládání), pak je lepší soubory před uložením přejmenovat, aby nám zůstala neporušená kopie v případě, že uložená data budou poškozena. (Je lepší ztratit několik minut práce než všechno.)

Zvláštní skupinu tvoří chyby při výpočtech s reálnými čísly. Na rozdíl od havárií, které násilně ukončí prováděnou funkci, je možné pokračovat ve výpočtu i po chybě. Výsledek ovšem bude uspokojivý jen zřídka. Čerstvě nastartovaný Kokeš je konfigurován tak, aby tyto chyby hlásil následujícím dialogem:

Floating Point Error

Obrázek pochází z 16 bit verze, kde je pravděpodobnost pozorování chyby při výpočtu v pohyblivé řadové čárce o něco vyšší. (Menší číselný rozsah pro 16 bitová celá čísla). Udaj nahoře za dvojtečkou je důležitý. Umožňuje najít místo chyby. V 32 bitové verzi z technických důvodů chybí.

Pokud zvolíme "Ignore” nebo "Ignore All”, výpočet bude pokračovat ovšem s nejistými výsledky. Při kresbě to příliš nevadí, u výpočetních funkcí raději rezignujeme na využití výsledku. V současné době je nejčastější příčinou této chyby načtení dat s nesmyslnými nebo příliš velkými hodnotami souřadnic nebo s body mimo opsaný obdélník výkresu. V takové případě zvolíme "Ignore All” a pokusíme se data opravit funkcí ořezání výkresu.

Stejným způsobem se projevuje vadný ovladač pro některé tiskárny HP na operačním systému WIN95 při použití 32 bitové verze Kokeše. Chyba v tomto případě není v datech. Ovladač tiskárny zanechává matematický koprocesor v porušeném stavu, takže následující výpočty vedou k chybě. Zjištění příčiny je v tomto případě snadné. Podmínkou vzniku chyby je předchozí tisk na předmětné tiskárně.

Kromě výše zmíněných havárií se v praxi můžeme setkat s nepravidelnostmi při provádění maker napsaných v Kokeš Basicu. Nejde o skutečné havárie, ale o chybové stavy při provádění instrukcí makrojazyka. I v tomto případě může zkušený uživatel účinně napomoci lokalizaci závady. Tomuto tématu věnujeme samostatný příspěvek.