Next: Funkcja printk() oraz demony Klogd i Syslogd
Previous: Spis treści
Dlaczego potrzebujemy narzędzi do odpluskwiania?
- Pozwalają szybciej lokalizować miejsca błędów w programie, choć zazwyczaj pozwalają jedynie domyślać się powodów na podstawie widocznych efektów błędu.
- Pozwalają mieć wgląd na konkretny przebieg wykonania instrukcji w programie.
- Dają możliwość i czas na reakcję na ważne z punktu widzenie działania programu wydarzenia poprzez wstrzymanie wykonania programu.
- Umożliwiają sprawdzenie stanu programu (przede wszystkim zawartość struktur danych) oraz ich modyfikację w przerwie między kolejnym wykonaniem, lecz jest to jedynie sposób dla niecierpliwych, którzy chcą przetestować swoje poprawki ,,na żywo''.
Nie zwalnia nas to od dogłębnego przeczytania kodu źródłowego odpluskwianego programu. Odpluskwiacz pozwala jedynie na podstawie pewnych przesłanek stworzyć listę potencjalnych problemów, które mogły je wywołać.
Dlatego też należy używać odpluskwiacz przede wszystkim jako narzędzie do testowania własnych założeń na temat programu (,,ten kawałek kodu nie powinien zostać wywołany'') i ewentualne dociekanie źródła niepoprawności założenia.
To czego oczywiście nie należy robić, to ,,poprawiać'' błędy usuwając jedynie ich wystąpienia (np. dodanie kolejnego warunku do switch'a) bez poszukiwania ogniska problemu.
To co wyżej zostało nazwane programem może się odnosić także jądra.
Czym się różni odpluskwianie programu od odpluskwianie jądra?
- Kod jądra w przeciwieństwie do zwykłego programu nie może (zazwyczaj) być śledzony poprzez wykonanie go w odpluskwiaczu (tyczy się to jądra pod którym działa nasz system, ale rozwiązaniem jest np. UML)
- Przebieg działania jądra jest zależny od wielu czynników przez co nie sposób zawsze przewidzieć lub powtórzyć daną ścieżkę przebiegu (a więc czasem także zaistnienie błędu).
- Czynnikami od których zależy ,,zachowanie'' jądra są prócz wielu trudnych do odtworzenia ustawień systemowych także rodzaje architektur, więc pewne problemy mogą występować jedynie na bardzo małej liczbie komputerów.