JavaScript dla każdego
//  wróć   główna   dalej  //

Debugger

Bardzo przydatnym narzędziem, które pozwala zweryfikować błędy w skryptach jest Debugger. Jak sama nazwa wskazuje, pozwala sprawdzić, dlaczego skrypt nie działa poprawnie i w którym miejscu jest błąd - czyli "odrobaczyć go". Jego obsługa jest różna, nie zawsze wystarczająca i zależy tylko od przeglądarki.

W przeglądarce IE debugger może przybierać różne formy, w zależności od jej wersji i ustawień opcji. Dostępnych jest kilka rodzajów komunikatów o błędzie. W "najgorszym" przypadku w pasku statusu pojawi się ikonka w postaci żółtego trójkąta i komentarz, że wystąpiły błędy. Po dwukrotnym kliknięciu na ikonkę otrzymamy krótką informacje, gdzie jest (lub wystąpoł) błąd. Ikona na pasku statusu będzie dostępna przez cały czas, co pozwala w każdym momencie sprawdzić, jakie błędy wystąpiły.

Ukaże się standardowe okienko, gdzie będzie informacja o rodzaju problemu i miejscu wystąpienia błędu. Okienko to daje możliwość ustawienia opcji, czy komunikat o błędzie ma być sygnalizowany tylko ikonką na pasku statusu, czy też tymże wyskakującym okienkiem. Druga opcja daje pewność, że jak tylko coś będzie nie tak, to ukaże się okno, więc problem zawsze dostrzeżemy.

Alternatywnym rozwiązaniem jest pojawienie się tylko komunikatu-okienka typu prompt. Będzie ono pozwalało wybrać możliwość debuggowania skryptu. Oznacza to, że IE otworzy osobną aplikację, gdzie będzie można dokładnie prześledzić błąd, sprawdzić go, poprawić itd. Jest to niewątpliwie bardzo przydatne narzędzie, ale można je w zupełności zastąpić dobrym edytorem stron www. Wystarczy, że będzie miał zaawansowane kolorowanie składni, co pozwoli błyskawicznie znaleźć błąd. Edytor musi także pokazywać, w którym miejscu w danej chwili znajduje się kursor - inaczej odnalezienie lini i kolumny o zadanym numerze będzie żmudne.

W NN sprawa jest o wiele prostsza. Łatwiej wywołać debuggera, ale jest on o wiele gorszy. Po wywołaniu strony nie otrzymamy żadnego komunikatu, poza tym umieszczonym na pasku statusu (i to nie zawsze). Jest to podstawowa wada NN.

Aby uruchomić konsolę do sprawdzania błędów należy wpisać do pola location tekst javascript:. Otworzy się okienko (popup), gdzie będą wypisane wszystkie błędy. Po każdorazowym przeładowaniu strony lista błędów zostanie automatycznie zaktualizowana. Tutaj informacja o rodzaju błędu jest zależna od charakteru problemu.

Warto jeszcze zwrócić uwagę, że nie powinno się robić długich instrukcji w jednej linijce, bo trudniej wtedy odnaleźć błąd i jest to bardzo nieczytelne przyzwyczajenie. IE pokazuje dokładnie, w którym miejscu jest coś nie tak. Rozbieżności mogą wystąpić, jeśli zostaną użyte tabulatory zamiast spacji.

Używanie debuggera jest nieraz nie wygodne, czasem nic nie daje, bo skrypt nie zawiera jako takich błędów, ale nie działa tak, jakby autor sobie tego życzył. Tutaj debugger nie pomoże, są za to inne środki.

Należą do nich podstawowe funkcje JavaScript: alert() oraz status, czasem można jeszcze wykorzystać document.title. Okienko dialogowe pozwala w dowolnym miejscu skryptu sprawdzić wartość poszczególnych zmiennych. Wystarczy wstawić okienko w żądane miejsce w skrypcie i uzupełnić je danymi, które należy podejrzeć.

//...
alert("i="+i+" k="+k);

Zaletą takiego rozwiązania jest fakt, że cały skrypt zatrzymuje się i spokojnie można zweryfikować wielkość zmiennych. Jeśli ich wartości są podejrzane, to warto sprawdzić wszelkie instrukcje, które ją modyfikują itd. Po drugie okienko jest dobre, gdy skrypt jest tak bardzo skomplikowany i rozbudowany, a jego wykonywanie odbywa się w różnych miejscach strony (różne funkcje). Wtedy należy uważać, gdy jeśli okienko znajdzie się w pętli bez końca, to może nie być możliwości odświeżenia strony (okienko pojawi się zaraz po zamknięciu poprzedniego), a co za tym idzie, przeglądarkę trzeba będzie zamknąć używając brutalnej metody CTRL+ALT+DEL.

W takich przypadkach, jeśli zmienna zmienia się cały czas lub zmiany zachodzą zbyt szybko, by używać okna alert(), proponuję użycie polecenia status. Sprawdzenie tej samej zmiennej na pasku statusu ma inne korzyści. Skrypt nie przerywa swojego działania, a zmienne można śledzić na bieżąco - bez klikania na przycisk OK. Niestety zbyt szybkie zmiany wartości spowodują, że oko niczego nie zdąży zobaczyć.

Ostatecznie obie metody można łączyć w zależności od potrzeb skryptu. Wtedy kompleksowo można weryfikować więcej zmiennych, obiektów lub warunków.

W zależności od charakteru błędu można używać debuggera lub poleceń JavaScript. O ile ten pierwszy jest różny w zależności od przeglądarki, o tyle ta druga metoda jest jednakowa dla wszystkich przeglądarek.


Do góry