Appendix E. Odpluskiwanie

Ogólne informacje

Odpluskiwanie jest umiejętnością, której można się nauczyć. Jest kilka dobrych dokumentów opisujących jak pisać dobre zgłoszenia błędów. Przeczytaj je uważnie zanim napiszesz jakieś zgłoszenie - "twój" błąd nie ucieknie i cię nie zabije. To my go chcemy zabić i dlatego potrzebujemy twojej pomocy :-). Więc stań do walki dobrze przygotowany. Oto dwa, całkiem przyjemne dokumenty: Bugzilla Bug Reporting HOWTO i How to Report Bugs Effectively autorstwa Simona Tathams.

Z powodu natury niektórych nieoficjalnych łatek, nie możemy ich wszystkich wspierać. To oznacza, że powinieneś sprawdzić, czy Fluxbox działa błędnie bez nałożonych łatek. Jeśli łatki zostały nałożone przez jakiegoś opiekuna pakietów w danej dytrybucji, skontaktuj się z nim w tej sprawie.

Jeśli potrzebujesz więcej pomocy w odpluskwianiu niż jest jej dostarcza ten przewodnik, możesz sprawdzić, czy ludzie na #fluxbox na irc.freenode.net będę w stanie ci pomóc. Zazwyczaj są tam główni programiści jak i wiele, wykwalifikowanych ludzi, więc masz duże szanse na pomoc.

Speficyka Fluxboksa

Co wyrzuca Fluxbox?

Tak jak wiele innych aplikacji, Fluxbox wysyła wiele komunikatów na konsolę, z której został uruchomiony. Problemem jest to, że zazwyczaj cały wynik idzi na konsolę tekstową. Zmień linię startujące Fluxboksa na exec xterm lub jakikolwiek jest twój ulubiony emulator terminala. Uruchom X11 i wystartuj Fluxboksa z okienka xterm i jak widzisz, wszystkie komunikaty Fluxboksa się na niej pojawiają.

Informacje, których oczekujemy

Musimy wiedzieć wiele rzeczy. Upewnij się, że wiesz o nich wszystko.

Co robić ze zrzuconymi rdzeniami?

Jeśli kiedykolwiek Fluxbox zrzuci rdzeń, zrób co następuje: wejdż na kanał #fluxbox na OPN i powiedz fluxgenowi, że masz zrzucony rdzeń. Podaj mu wszystkie informacje, o jakie cię poprosi. Pewnie też poprosi cię, żebyś zrobić poniższe. Jest to dosyć dużo pracy, ale każdy z odpowiednim wyczuciem i doświadczeniem z Uniksem jest w stanie to zrobić. Aha, potrzebujesz też odpluskwiacza GNU, zwanego gdb.

Przebuduj Fluxboksa

Dokładnie, ale czytaj dalej. By zostać prawdziwym poszukiwaczem błędów, musisz przebudować Fluxboksa z symbolami debugującymi.

Skompiluj Fluxboksa jak zwykle, ale dodaj poniższe opcje podczas budowania:

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

Jeśli używasz pakietów źródłowych RPM ze strony Fluxboksa lub ze swojej dystrybucji, możesz zrobić poniższe:

    $ 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

Przejdź do katalogu z Fluxboksem (żebyśmy otrzymali rdzeń w dobrym miejscu). Powłowa ma całkiem fajną funkcję, dzięki której można m.in. wyłączyć zrzucanie rdzenia. My użyjemy go, do włączenia zrzucania:

    $ ulimit -c unlimited

Uruchom X11 i zacznij szukać błędów. Rób wszystko to, co sprawi, że Fluxbox zrzuci rdzeń. Jak już go otrzymasz, rozpoczniemy odpluskwianie:

    $ gdb fluxbox core

Teraz wpisz poniższą komendę w gdb (pierwsza część to zgłoszenie gdb, nie pisz jej :)):

    (gdb) where

W tym momencie otrzymasz masę tekstu jako wynik. Fluxgen chce znać cały wynik zaczynając od #.

Teraz wklej to do emaila, którego napiszesz do fluxgena i dołącz swoje pliki z ustawieniami z katalogu ~/.fluxbox.

Nie usuwaj jeszcze rdzenia, ani katalogu z kodem źródłowym. Fluxgen może zadać ci jeszcze kilka pytań, a później będziesz ich potrzebować. Nie wysyłaj rdzenia, jeśli fluxgen tego specjalnie nie zaznaczy, ponieważ jest on specificzna dla twojego systemu i prawdopodobnie nie będzie dla niego przydatki. No i rdzenia najczęściej są pokaźnych rozmiarów.