Appendix E. Odstraňování chyb

Obecné informace

Odlaďování je dovednost, kterou se můžete naučit. Existuje několik dobrých dokumentů, které popisují jak vytvořit dobré chybové hlášení. Prosím, přečtěte si je předtím, než začnete hlášení vytvářet, chyba neuteče a Vás to nezabije. Raději budeme chtít zabít chybu a k tomu budeme potřebovat Vaši pomoc. Takže, pojďme do boje dobře připraveni. Dva dobré dokumenty jsou Bugzilla Bug Reporting HOWTO a od Simona Tathamse How to Report Bugs Effectively.

Vzhledem k podstatě některých neoficiálních patchů je není možné všechny podporovat. To znamená (pro Vás), že byste měli ověřit zda Fluxbox padá také bez aplikovaných patchů. Pokud byly patche Vašeho Fluxboxu aplikovány správcem distribuce, dejte mu o této záležitosti vědět.

Pokud potřebujete s odlaďováním více pomoci než může tento průvodce poskytnout, podívejte se na #fluxbox irc.freenode.net po nápomocných lidech. Protože hlavní vývojáři a další kvalifikovaní lidé jsou obvykle zde, jsou šance že problém bude vyřešen.

Věci specifické pro Fluxbox

Výstup z Fluxboxu

Podobně jako ostatní aplikace Fluxbox vypisuje informace do konzoly, z které byl spuštěn. Problém je, že ve standardních podmínkách jdou všechny informace do textové konzoly. Změňte startovací řádek Fluxboxu na exec xterm nebo na Váš jakýkoli jiný oblíbený emulátor terminálu. Spustěte X11 a následně Fluxbox v terminálu a hle, uvidíte všechny zprávy poskytované Fluxboxem.

Informace, které chceme

Chceme hodně věcí. Ujistěte se, že o nich víte všechno.

Co dělat s core dump soubory.

Pokud se Vám někdy podařilo získat core dump soubor s Fluxboxem, udělejte následující: Běžte na kanál #fluxbox na OPN a řekněte fluxgenu, že máte core dump. Dejte mu všechny informace, které po Vás bude požadovat. Pravděpodobne po Vás bude chtít následující. Je toho docela dost, ale každý s trochou normální inteligence a nějakými zkušenostmi s Unixovým systémem to zvládne. Ještě budete potřebovat také GNU odlaďovač, nazývaný gdb.

Rekompilace Fluxboxu

Ano, četli jste správně. Abyste se stali opravdovým odlaďovačem musíte rekompilovat Fluxbox s odlaďovacími symboly.

Kompilujte Fluxbox jako obvykle, ale ještě přidejte následující volby předtím, než zadáte make:

    $ CFLAGS=-Wall -g3 CXXFLAGS=-Wall -g3 make

Pokud používáte RPM balíčky zdrojových souborů ze stránek Fluxboxu nebo z Vaší distribuce, potom bude postup vypadat přibližně takto:

    $ su
    # rpm -ivh fluxbox-0.1.11.1mdk.src.rpm
    # cd /usr/src/RPM/SPECS
    # env DEBUG=true rpm -ba fluxbox.spec
    # rpm -Uvh --force /usr/src/RPM/RPMS/i686/fluxbox*
    # exit
    $ mkdir -p ~/src/fluxbox
    $ cp -R /usr/src/RPM/BUILD/fluxbox* ~/src/fluxbox

Běžte do adresáře Fluxboxu (abysme dostali core dump na správné místo). Shell má jednu vychytávku, která vypíná tvorbu core dump souborů, takže se ujistěte, že máte core dumpy povoleny:

    $ ulimit -c unlimited

Spustěte X11 a začněte ladit. Dělejte stejné věci, které vedou k pádu Fluxboxu a tvorbě core dump souboru. A nyní začneme s odlaďováním:

    $ gdb fluxbox core

A vložte tento příkaz do gdb (první část je promt gdb, tu nepište :)):

    (gdb) where

Dostanete hodně výstupních informací. Fluxgen požaduje všechny informace, které začínají na #.

Přiložte je do e-mailu adresovanému Fluxgenu společně se čtyřmi konfiguračními soubory v ~/.fluxbox/.

Ještě nemažte core soubor ani adresář se zdrojovými soubory. Fluxgen po Vás ještě může chtít další informace a proto je v budoucnu možná budete potřebovat. Pokud Vás o to Fluxgen výslovně nepožádá, neposílejte core soubor, protože se týká pouze Vašeho systému a taky z toho důvodu, že tyto soubory bývají většinou docela obsáhlé.