je aplikace napsaná v Motifu (místo něj můžete použít LessTif). Program je vyvíjen na Technické univerzitě Braunsweig v Německu a jeho domácí stránka se nachází na adrese http://www.cs.tu-bs.de/softech/ddd/. Má docela příjemné grafické prostředí, jak se můžete přesvědčit na obrázku 1. Licence je GPL. Kromě linuxu je podporována spousta dalších variant unixu, testoval jsem i verzi na DEC Alpha.
Teď už určitě chcete vědět, co to umí. Jelikož je to nádstavba nad gdb, pak totéž, co gdb a něco navíc. Například podpora Javy, Perlu, Fortranu, Pythonu a dalších. Výběr mezi různými debuggery – gdb, jdb, dbx,wdb a další. Okna s proměnnými, výpisem zdrojového kódu a debuggerem. Dialogy s registry, zásobníkem, úsekem paměti, vlákny i signály. Undo/Redo. Kreslení historie hodnot vybrané proměnné. Možnost nadefinovat si vlastní příkazy a tlačítka. A mnoho dalších zajímavostí.
Práce s ddd
Po spuštění se nejprve nahraje spustitelný soubor nebo core. Pokud se nenahraje a nezobrazí zdrojový kód, musíte k němu nastavit cestu v preferencích. Ty jsou mimochodem docela obsáhlé. Dalším krokem je obvykle nastavení breakpointů a displejů proměnných. A to buď přes rozhraní debuggeru (například break 10) anebo myší. Dvojklikem nastavíte breakpoint. Nebo po stisknutí pravého tlačítka myši z menu. Nebo z lišty nástrojů. Breakpoint můžete přesunout pouhým tažením myši. Nebo editovat jeho vlastnosti, jako jsou podmínka pro aktivaci či kolikrát se má ignorovat. Dvěma kliknutími můžete breakpoint dočasně uspat.
Dalším krokem bývá spuštění. Samozřejmostí je možnost zadání parametrů včetně historie. Možností navíc je výběr, zda se má program spustit v xtermu nebo v části debuggeru. Pozastavit běh programu lze po stisknutí tlačítka Interrupt. Automaticky se zobrazí část kódu, kde byl program zastaven. Pokud najedete myší nad název proměnné, její hodnota se zobrazí jak na spodní liště, tak jako tooltip (volitelně). Pomocí myši můžete také vypsat nebo zobrazit její hodnotu. Případně ji úplně změnit.
Pokud je složená proměnná zobrazena jako displej, můžete procházet její součásti do hloubky. Viz obrázek 1 a zobrazené pole tříd Vrstva. Pokud se hodnota displeje změní (například při krokování cyklu), ddd vás na to upozorní změnou barvy displeje. Pokud pracujete v céčku s dynamicky alokovanými polemi, můžete takto odhalit chybnou práci s pointry. Stačí nastavit breakpoint na začátek cyklu a mačkat Cont. Pokud se třeba nezmění barva na konci pole, ač měla, budete vědět, odkud se bere ta tajemná chyba.
Na krokování slouží příkazy Step, Stepi, Next, Nexti. Pokud nevíte, co tyto příkazy dělají, pomůže vám nápověda ve formě tooltipu. Pokud nevíte, co máte dělat, nechte si poradit – menu Help – What now? Pokud chcete zjistit, kdy se změní hodnota některé proměnné, nastavte na ni Watch. Debugger pak přeruší běh programu. Dalším příkazem je Finish, který debugger nechá pokračovat program, dokud neopustí aktuální funkci. Příkazem Cont se pozastavený program odblokuje a ten bude pokračovat v činnosti.
Závěr
Co říci závěrem? Že Data Display Debugger je velice zajímavý produkt, který může ulehčit práci. Jeho příjemné uživatelské rozhraní i funkce velmi převyšují konkurenční xxgdb. Chybí mu snad jen integrovaný editor, prohlížeč funkcí a tříd, RAD nástroje, integrace s manuálovými stránkami a infem, … Ale to je zatím jen sen, který jsem na unixu ještě nikde neviděl. Nechce se někdo připojit k vývojářům? Každopádně ale doporučuji k vyzkoušení.