W tym samouczku omawiamy podstawowy przepływ pracy związany z debugowaniem wszelkich problemów z JavaScriptem w Narzędziach deweloperskich. Odczytano lub obejrzyj wersję wideo tego samouczka.
Odtwórz błąd
Znalezienie serii działań, które konsekwentnie odtwarza błąd, jest zawsze pierwszym krokiem i debugowaniu.
- Otwórz tę wersję demonstracyjną w nowej karcie.
- W polu Liczba 1 wpisz
5
. - W polu Liczba 2 wpisz
1
. - Kliknij Dodaj numer 1 i numer 2. Etykieta pod przyciskiem to
5 + 1 = 51
. Wynik powinna wynosić6
. To błąd, który zostanie naprawiony.
W tym przykładzie wynik 5 + 1 to 51. Powinna to być 6.
Poznaj interfejs panelu Źródła
Narzędzia deweloperskie oferują wiele różnych narzędzi do różnych zadań, takich jak zmiana CSS, profilowanie strony. wydajność wczytywania i monitorowanie żądań sieciowych. Panel Źródła służy do debugowania JavaScriptu.
Otwórz Narzędzia deweloperskie i przejdź do panelu Źródła.
Panel Źródła składa się z 3 sekcji:
- Karta Strona z drzewem plików. Na tej liście znajdują się wszystkie pliki, których dotyczą żądania stron.
- Sekcja Edytor kodu. Po wybraniu pliku na karcie Strona zawartość plików i pliku, który chcesz wyświetlić.
W sekcji Debuger. Różne narzędzia do sprawdzania kodu JavaScript na stronie.
Jeśli okno Narzędzi deweloperskich jest szerokie, domyślnie Debuger znajduje się po prawej stronie Edytora kodu. W takim przypadku karty Zakres i Oglądaj łączą się w zwijanych sekcjach Punkty przerwania, Stos wywołań i inne.
Wstrzymywanie kodu za pomocą punktu przerwania
Typową metodą debugowania takiego problemu jest wstawienie wielu instrukcji console.log()
do kodu, by zbadać wartości w trakcie wykonywania skryptu. Na przykład:
function updateLabel() {
var addend1 = getNumber1();
console.log('addend1:', addend1);
var addend2 = getNumber2();
console.log('addend2:', addend2);
var sum = addend1 + addend2;
console.log('sum:', sum);
label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum;
}
Metoda console.log()
może wykonać zadanie, ale punkty przerwania można wykonać szybciej. O
pozwala wstrzymać kod w trakcie jego wykonywania i sprawdzić
dosłownie wszędzie. Punkty przerwania mają kilka zalet w porównaniu z metodą console.log()
:
- Korzystając z
console.log()
, musisz ręcznie otworzyć kod źródłowy, znaleźć odpowiedni kod, wstawić goconsole.log()
, a następnie załaduj ponownie stronę, aby zobaczyć wiadomości w Konsola. Dzięki punktom przerwania możesz wstrzymać odtwarzanie na odpowiednim kodzie, nawet nie wiedząc, jak działa. mają dobrą strukturę. - W instrukcjach
console.log()
musisz wyraźnie określić każdą wartość, która ma być sprawdzić. Dzięki punktom przerwania Narzędzia deweloperskie pokazują wartości wszystkich zmiennych w danym momencie. Czasami na Twój kod wpływają zmienne, o których nie wiesz nawet.
Krótko mówiąc, punkty przerwania pozwalają szybciej znajdować i naprawiać błędy niż metoda console.log()
.
Jeśli spojrzysz na tył i zastanowisz się, jak działa aplikacja, możesz wyciągnąć wnioski, na podstawie których
w detektorze zdarzeń click
powiązanym z parametrem jest obliczana nieprawidłowa suma (5 + 1 = 51
).
Dodaj przyciski 1 i 2. Dlatego prawdopodobnie najlepiej będzie wstrzymać działanie kodu na mniej czas
uruchamiany przez detektor click
. Punkty przerwania detektora zdarzeń umożliwiają wykonanie tej czynności:
- W sekcji Debuger kliknij Punkty przerwania detektora zdarzeń, aby rozwinąć . W Narzędziach deweloperskich znajduje się lista rozwijanych kategorii zdarzeń, takich jak Animacja czy Schowek.
- Obok kategorii zdarzeń Mysz kliknij arrow_right Rozwiń. W Narzędziach deweloperskich wyświetli się lista zdarzeń myszy, np. kliknięcie i w dół. Obok każdego wydarzenia znajduje się pole wyboru.
Zaznacz pole wyboru click. Narzędzia deweloperskie są teraz skonfigurowane tak, aby automatycznie wstrzymywać działanie dowolnego
click
wykonywanych przez detektor zdarzeń.Po powrocie do wersji demonstracyjnej ponownie kliknij Add Number 1 and Number 2. Narzędzia deweloperskie wstrzymują wersję demonstracyjną, zaznaczy odpowiedni wiersz kodu w panelu Źródła. Narzędzia deweloperskie powinny zostać wstrzymane w tym wierszu kod:
function onClick() {
Jeśli wstrzymasz działanie w innym wierszu kodu, naciskaj Wznów Wznów wykonywanie skryptu, aż zatrzymasz się na odpowiednim wierszu.
Punkty przerwania detektora zdarzeń to tylko jeden z wielu typów punktów przerwania dostępnych w Narzędziach deweloperskich. Jest warto przyjrzeć się różnym typom, ponieważ każdy z nich pomaga debugować jak najszybciej. Przeczytaj sekcję Wstrzymywanie kodu z punktami przerwania, aby dowiedzieć się, kiedy i jak korzystanie z każdego typu pliku.
Przeanalizuj kod
Jedną z częstych przyczyn błędów jest wykonywanie skryptu w niewłaściwej kolejności. Analiza kodu pozwala przejrzeć wykonywanie kodu po jednym wierszu i sprawdzić, gdzie jest jest wykonywany w innej kolejności niż powinna. Wypróbuj tę funkcję już teraz:
W panelu Sources (Źródła) w Narzędziach deweloperskich kliknij step_into Przejdź do następnego wywołania funkcji, aby przejść przez wykonanie funkcji
onClick()
(po jednym wierszu). W Narzędziach deweloperskich zaznaczono ten wiersz kodu:if (inputsAreEmpty()) {
Kliknij step_over Przejdź do następnego wywołania funkcji.
Narzędzia deweloperskie uruchamiają polecenie
inputsAreEmpty()
bez przechodzenia do niego. Zwróć uwagę, że Narzędzia deweloperskie pomijają kilka wierszy w kodzie. Jest to spowodowane tym, że funkcjainputsAreEmpty()
została oceniona jako fałsz, więc blok instrukcjiif
kod nie został uruchomiony.
To jest podstawowa koncepcja kodowania. Jeśli spojrzysz na kod w sekcji get-started.js
, możesz
zobaczysz, że błąd prawdopodobnie znajduje się gdzieś w funkcji updateLabel()
. Zamiast przez nie przejść
w każdym wierszu kodu, możesz użyć innego typu punktu przerwania, aby wstrzymać kod bliżej prawdopodobnych
lokalizację błędu.
Ustaw punkt przerwania wiersza kodu
Punkty przerwania w postaci wiersza kodu to najczęstszy typ punktów przerwania. Jeśli masz określony wiersz w kodzie, na którym chcesz wstrzymać odtwarzanie, użyj punktu przerwania wiersza kodu:
Spójrz na ostatni wiersz kodu w
updateLabel()
:label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum;
Po lewej stronie kodu widoczny jest numer wiersza tego konkretnego wiersza, czyli 32 Kliknij 32. Narzędzia deweloperskie umieszczają niebieską ikonę nad wartością 32. Oznacza to, że istnieje punktu przerwania wiersza kodu w tym wierszu. Narzędzia deweloperskie zawsze są wstrzymywane przed tym wierszem kodu .
Kliknij Wznów Wznów wykonywanie skryptu. skrypt będzie wykonywany, dopóki nie osiągnie wiersza 32. W wierszach 29, 30 i 31 Narzędzia deweloperskie wyświetlają wartości
addend1
,addend2
isum
obok deklaracji.
W tym przykładzie Narzędzia deweloperskie zatrzymują się na punkcie przerwania wiersza kodu w wierszu 32.
Sprawdzanie wartości zmiennych
Wartości addend1
, addend2
i sum
wyglądają podejrzanie. Umieść je w cudzysłowie,
że są to ciągi smyczkowe. To dobra hipoteza wyjaśniająca przyczynę błędu. Teraz
czas zebrać więcej informacji. Narzędzia deweloperskie oferują wiele narzędzi do badania zmiennych
.
Metoda 1. Sprawdź zakres
Gdy wstrzymasz odtwarzanie w wierszu kodu, na karcie Zakres zobaczysz, jakie zmienne lokalne i globalne definiowane na tym etapie, wraz z wartością każdej zmiennej. Pokazuje też zmienne zamknięcia, gdy mają zastosowanie. Jeśli nie wstrzymasz wiersza w kodzie, karta Zakres jest pusta.
Kliknij dwukrotnie wartość zmiennej, aby ją edytować.
Metoda 2. Obserwowanie wyrażeń
Karta Oglądaj umożliwia monitorowanie wartości zmiennych w czasie. Oglądanie nie ogranicza się tylko do zmiennych. Możesz zapisać dowolny prawidłowy kod JavaScript na karcie Obejrzyj.
Wypróbuj tę funkcję już teraz:
- Kliknij kartę Oglądaj.
- Kliknij dodaj Dodaj obserwowane wyrażenie.
- Wpisz
typeof sum
. - Naciśnij Enter. W Narzędziach deweloperskich wyświetla się
typeof sum: "string"
. Wartość po prawej stronie dwukropka to wyniku wyrażenia.
Ten zrzut ekranu przedstawia kartę Obejrzyj (w prawym dolnym rogu) po utworzeniu zegarka typeof sum
i wyrażenia.
Zgodnie z podejrzeniami pole sum
jest sprawdzane jako ciąg znaków, podczas gdy powinno być liczbą. Potwierdzono
że to jest przyczyną błędu.
Metoda 3. Konsola
Oprócz wyświetlania wiadomości w języku console.log()
możesz też za pomocą konsoli ocenić dowolne z nich
instrukcje JavaScript. Jeśli chodzi o debugowanie, to w Konsoli możesz testować potencjalne poprawki.
na robaki. Wypróbuj tę funkcję już teraz:
- Jeśli panel konsoli nie jest otwarty, naciśnij Escape, aby go otworzyć. Otwiera się na dole w oknie Narzędzi deweloperskich.
- W konsoli wpisz
parseInt(addend1) + parseInt(addend2)
. Ta instrukcja działa, ponieważ są wstrzymane w wierszu kodu, gdzieaddend1
iaddend2
są w zakresie. - Naciśnij Enter. Narzędzia deweloperskie oceniają instrukcję i wyświetlają
6
, czyli oczekiwany wynik. należy przygotować wersję demonstracyjną.
Ten zrzut ekranu pokazuje panel Konsola po sprawdzeniu funkcji parseInt(addend1) + parseInt(addend2)
.
Napraw problem
Udało Ci się znaleźć rozwiązanie błędu. Pozostaje Ci już tylko wypróbować poprawkę, edytując kod ponowne uruchomienie wersji demonstracyjnej. Aby zastosować poprawkę, nie musisz zamykać Narzędzi deweloperskich. Możesz edytować kod JavaScript bezpośrednio w interfejsie Narzędzi deweloperskich. Wypróbuj tę funkcję już teraz:
- Kliknij Wznów Wznów wykonywanie skryptu.
- W edytorze kodu zastąp wiersz 31,
var sum = addend1 + addend2
ciągiemvar sum = parseInt(addend1) + parseInt(addend2)
- Naciśnij Command + S (Mac) lub Control + S (Windows, Linux), aby zapisać zmianę.
- Kliknij label_off Dezaktywuj punkty przerwania. Kolor zmienia się na niebieski, co wskazuje, że jest aktywne. Gdy ta opcja jest włączona, Narzędzia deweloperskie ignoruje ustawione punkty przerwania.
- Wypróbuj wersję demonstracyjną z różnymi wartościami. W wersji demonstracyjnej dostępne są prawidłowe obliczenia.
Dalsze kroki
W tym samouczku pokazaliśmy tylko 2 sposoby ustawiania punktów przerwania. Narzędzia deweloperskie zapewniają wiele innych sposobów, w tym:
- Warunkowe punkty przerwania są wywoływane tylko wtedy, gdy podany przez Ciebie warunek jest spełniony.
- Punkty przerwania dotyczące wychwyconych lub niezarejestrowanych wyjątków.
- Punkty przerwania XHR, które są aktywowane, gdy żądany adres URL pasuje do podanego podłańcucha.
Aby dowiedzieć się, kiedy i jak używać poszczególnych typów, przeczytaj sekcję Wstrzymywanie kodu z punktami przerwania.
W tym samouczku działa kilka elementów sterujących krokami w kodzie. Patrz sekcja Przejście , aby dowiedzieć się więcej.