Tato knižní recenze bude tématicky věnována jednomu z nejdůležitějších procesů životního cyklu vývoje softwéru – ladění a testování aplikací. Protože každá technologická změna přináší s novým vývojovým prostředím i nové techniky a postupy optimalizace zdrojových kódů a jejich testování, objevil se na přelomu letošního léta a podzimu nový titul, věnovaný technologii .NET.

Tuzemská nakladatelství se v minulých letech těmto tématům věnovala jen povrchně a sporadicky, proto je český překlad anglického originálu „Debugging Applications For Microsoft .NET And Microsoft Windows“ nakladatelství Grada velmi vítaným počinem. Navíc je autor publikace John Robbins zkušeným lektorem, jedním ze zakladatelů poradenské společnosti Wintellect, specializující se na konzultace a školení v oblasti ladění zdrojových kódů.

Kniha je svým obsahem určena začínajícím a středně pokročilým vývojářům na platformě .NET nebo Windows. Z větší části se věnuje problematice ladění, naopak čistému testování aplikací je věnována jediná z devatenácti kapitol.

Obsah publikace

1. Chyby: Kde vznikají a jak je řešit (22 stran)
Tato kapitola je postavena jako nezbytný teoretický základ problematiky aplikačních chyb. Popisuje co jsou to vlastně chyby, kde a proč vznikají a jak by měl vypadat proces ladění kódu.
2. Začínáme s laděním (41 stran)
Asi nejslabší místo celé knihy – opět teoretická kapitola, poskytující čtenářům rady typu:

  • sledujte změny, dokud projekt nevyhodíte
  • začleňte do harmonogramu čas pro vytvoření ladícího systému
  • častá sestavení a „zahoření“ programu jsou nutná
  • nainstalujte symboly operačního systému a nastavte úložiště symbolů
3. Ladění při psaní programu (44 stran)
Kapitola se věnuje defenzivnímu a efektivnímu programování, tedy implementaci kódu pro obsluhu chyb (defenzivní) a sdělení a pochopení příčiny chyb (efektivní). Kapitola je rozdělena na tří oblasti – aserce, trasování a komentování.
4. Podpora ladění v operačním systému a funkce ladicích programů prostředí Win32 (43 stran)
Kapitola vysvětluje, co to vůbec je ladící program, vysvětluje základní rozčlenění ladících programů na ladící programy „uživatelského režimu“ (MS Visual Studio .NET) a „privilegovaného režimu“ (ladění jádra operačního systému), popisuje funkcionalitu autorem napsaných ladících programů MinDBG a WDBG a lehce uvádí čtenáře do problematiky „jak napsat vlastní ladící program“.
5. Pokročilé techniky použití ladícího programu ve Visual Studio .NET (18 stran)
Tato útlá kapitola je první ze tří částí knihy, věnovaných ladícímu programu Visual Studio .NET, která se ukazuje ladění .NET a nativního kódu formou popisu „pokročilých bodů přerušení“, rychlému zastavování na libovolné funkci a podobně.
6. Pokročilé ladění aplikací .NET s Visual Studio .NET (29 stran)
Obsahem této kapitoly je popis specifických strategií a postupů při ladění v prostředí .NET (výrazy s podmínkami, automatické rozvinutí vlastních typů, smíšené a vzdálené ladění a další). Závěr kapitoly je věnován nástroji Microsoft Intermediate Language Disassembler (ILDASM) a obecně jazyku Microsoft Intermediate Language (MSIL).
7. Pokročilé techniky pro práci s nativním kódem ve Visual Studio .NET (75 stran)
Tato obsáhlá kapitola se zabývá prací s body přerušení, používání okna Watch, vzdálenému ladění a prací s Assemblerem x86 ve VS.NET.
8. Pokročilé techniky nativního kódu ve WinDBG (45 stran)
Kapitola se věnuje používání ladícího nástroje Microsoft WinDBG, který byl vyvinut Microsoftem pro vývojáře operačních systémů za účelem automatizovaného testování chyb.
9. Rozšíření rozhraní Visual Studio .NET (36 stran)
Zde se autor rozepisuje o možnostech vlastního rozšíření IDE ve VS.NET formou maker a doplňků (nová okna s vlastními nástroji, karty s vlastnostmi pro řízený kód v dialogovém okně „Options“ a podobně).
10. Sledování řízených výjimek (20 stran)
Zde čtenář nalezne popis funkcionality a práce s utilitou ExceptionMon, napsanou autorem knihy, využívající vlastnost Profiling API platformy .NET,ladění uvnitř procesů pomocí této utility a využití výjimek v .NET.
11. Trasování toku programového kódu (8 stran)
Tato „anorektická“ kapitola se věnuje další autorově utilitě FlowTrace – rychlému nástroji pro sledování toku volání metod.
12. Nalezení zdrojového souboru a řádku pomocí kolizní adresy (14 stran)
Tato navýsost praktická kapitola naučí vývojáře, jak lze dohledat zdrojový soubor a číslo řádku z kolizní adresy v okně obsluhy nezpracovaných výjimek pomocí MAP souborů (s textovým vyjádřením globálních symbolů programu).
13. Co dělat v případě zhroucení aplikace (24 stran)
Tato kapitola by mohla velmi pozitivně inspirovat programátory k implementaci „řízené obsluhy pro případ zhroucení aplikace“ – tedy takové funkcionality, která místo uživatelského zobrazení okna typu „Chyba aplikace“ realizuje zaznamenání vnitřního stavu aplikace a odeslání takto pořízených informací například mailem autorovi programu. V podstatě jde o obdobu implementace zasílání chybových zpráv Microsoftu po schválení uživatelem na platformě WinXP.
14. Ladění služeb Windows a DLL do nich zaváděných (12 stran)
Kapitola popisuje, jak vlastně služby Windows fungují, aby následně poodhalila metody jejich ladění (ladění kódu jádra a takzvané ladění základní služby). Rovněž jsou zde stručně zmíněny bezpečnostní aspekty vnitřního běhu služeb a použití nástroje Process Explorer pro získání podrobných informací o procesech.
15. Deadlock při běhu několika vláken (41 stran)
Kapitola popisuje triky a techniky při řešení problémů spojených se zablokováním (deadlockem) při běhu několika vláken – použitím dalšího autorova nástroje DeadlockDetection pro sledování toku událostí, které vedly k zablokování.
16. Automatizované testování (27 stran)
Tato kapitola se věnuje regresnímu testování uživatelského rozhraní aplikace pomocí autorovy utility Tester. Podle mého názoru nejde o žádnou převratnou novinku, neboť utilita pracuje v režimu podobném testovacímu nástroji MACT – Microsoft Application Center Test (v poslední verzi přímo implementován do VS.NET), který zaznamenává úhozy klávesnice do skriptu, jenž lze za definovaných podmínek opakovaně spouštět.
17. Ladící knihovna běhového prostředí jazyka C a správa paměti (40 stran)
Tato kapitola se věnuje správě paměti a popisuje práci s ladící knihovnou DCRT (Debud C Run-Time DCRT Library) a jejím rozšířením za účelem rozšíření funkcionality.
18. FastTrace: Nástroj pro efektivní trasování pro serverové aplikace (5 stran)
Na pouhých pěti stranách textu autor představuje další svůj nástroj, FastTrace, který vývojáři umožní trasovat, aniž by negativně ovlivnil výkon aplikace.
19. Ladění pracovní množiny programu (23 stran)
Poslední kapitola se věnuje optimalizaci takzvané pracovní množiny programu, tedy objemu paměti, přiřazenému aktuálně spuštěnému programu. Na řadu zde přijde další jednoúčelová autorova utilita Smooth Working Set (SWS).

Za poslední kapitolou je před rejstříkem doslova přilepeno pět příloh s příznačnými názvy:

  • Jak číst logové soubory nástroje Dr.Watson (9 stran)
  • Zdroje pro vývojáře na platformách .NET a Windows (8 stran)
  • Anglicko-český slovníček (11 stran)
  • Česko-anglický slovníček (10 stran)
  • Význam identifikátorů (5 stran)

Shrnutí a zhodnocení

Podle mého názoru jde o zdařilý knižní titul, který určitě rozšíří či doplní znalosti většiny vývojářů v dané oblasti. Publikace je psána srozumitelně s evidentní autorovou znalostí problematiky. Autor se neváhá se čtenáři podělit o své po léta budované know-how, což je jistě sympatické.

Knize by slušel CD-ROM, vzhledem k vývoji v poslední době však můžeme být rádi, že ze stránek nakladatelství Grada lze kromě MS nástrojů (Windows Application Compatibility Toolkit a Debugging Tools For Windows) stáhnout celé VS.NET projekty a další zdrojové kódy příkladů a utilit popisovaných v knize.

Informace o knize

Název: Ladění a testování aplikací pro .NET a Windows
Autor: John Robbins
Vydal: Grada
Cena: 599 Kč (569 Kč v odborném knihkupectví Interval.cz, kde najdete i další informace.)

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět