Wstrzymywanie kodu z punktami przerwania

Sofia Emelianova
Sofia Emelianova

Użyj punktów przerwania, aby wstrzymać kod JavaScript. W tym przewodniku opisujemy każdy typ punktu przerwania, który jest dostępnych w Narzędziach deweloperskich, a także o tym, kiedy ich używać i jak ustawić każdy z nich. Interaktywny samouczek dotyczący procesu debugowania znajdziesz w artykule Pierwsze kroki z debugowaniem JavaScriptu w Narzędziach deweloperskich w Chrome.

Omówienie sytuacji, w których należy używać poszczególnych typów punktów przerwania

Najbardziej znanym typem punktu przerwania jest wiersz kodu. Punkty przerwania wiersza kodu mogą być jednak zwłaszcza wtedy, gdy nie wiemy dokładnie, gdzie szukać, lub jeśli współpracujesz dużej bazy kodu. Możesz zaoszczędzić czas podczas debugowania, wiedząc, jak i kiedy użyć drugiego różne typy punktów przerwania.

Typ punktu przerwaniaUżywaj, gdy chcesz ...
Wiersz koduWstrzymaj ruch w konkretnym fragmencie kodu.
Warunkowy wiersz koduWstrzymaj ruch w konkretnym fragmencie kodu, ale tylko wtedy, gdy jest spełniony inny warunek.
Punkt logowaniaZarejestruj wiadomość w konsoli bez wstrzymywania wykonania.
DOMWstrzymaj kod, który zmienia lub usuwa określony węzeł DOM bądź jego elementy podrzędne.
XHRWstrzymaj, gdy adres URL XHR zawiera ciąg znaków.
Detektor zdarzeńWstrzymaj kod, który działa po wywołaniu zdarzenia, np. click.
WyjątekZatrzymaj się na wierszu kodu, który zgłasza złapany lub nieprzechwycony wyjątek.
FunkcjaWstrzymaj przy każdym wywołaniu konkretnej funkcji.
Typ zaufaniaWstrzymaj w przypadku naruszeń rekomendowanych typów.

Punkty przerwania wiersza kodu

Gdy znasz dokładny region kodu, który chcesz zbadać, używaj punktu przerwania wiersza kodu. Narzędzia deweloperskie zawsze są wstrzymywane przed wykonaniem tego wiersza kodu.

Aby ustawić punkt przerwania wiersza kodu w Narzędziach deweloperskich:

  1. Kliknij panel Źródła.
  2. Otwórz plik zawierający wiersz kodu, w którym chcesz przerwać pracę.
  3. Przejdź do wiersza kodu.
  4. Po lewej stronie wiersza kodu znajduje się kolumna z numerem wiersza. Kliknij ją. Na ekranie pojawi się niebieska ikona na górze kolumny z numerem wiersza.

Punkt przerwania wiersza kodu.

Ten przykład pokazuje punkt przerwania wiersza kodu ustawiony w wierszu 29.

Punkty przerwania wiersza kodu w kodzie

Zadzwoń pod numer debugger ze swojego kodu, aby zatrzymać się na tej linii. Jest to odpowiednik wiersza kodu Punkt przerwania jest ustawiony w kodzie, a nie w interfejsie Narzędzi deweloperskich.

console.log('a');
console.log('b');
debugger;
console.log('c');

Warunkowe punkty przerwania wiersza kodu

Warunkowego punktu przerwania wiersza kodu używaj, gdy chcesz zatrzymać wykonywanie, ale tylko wtedy, gdy jakiś warunek jest spełniony.

Takie punkty przerwania są przydatne, gdy chcesz pominąć przerwy, które nie są istotne w Twoim przypadku, zwłaszcza w pętli.

Aby ustawić warunkowy punkt przerwania wiersza kodu:

  1. Otwórz panel Źródła.
  2. Otwórz plik zawierający wiersz kodu, w którym chcesz przerwać pracę.
  3. Przejdź do wiersza kodu.
  4. Po lewej stronie wiersza kodu znajduje się kolumna z numerem wiersza. Kliknij ją prawym przyciskiem myszy.
  5. Wybierz Dodaj warunkowy punkt przerwania. Pod wierszem kodu pojawi się okno.
  6. Wpisz warunek w oknie.
  7. Naciśnij Enter, aby aktywować punkt przerwania. U góry kolumny z numerem wiersza pojawi się pomarańczowa ikona ze znakiem zapytania.

Warunkowy punkt przerwania wiersza kodu.

Ten przykład pokazuje warunkowy punkt przerwania wiersza kodu, który został uruchomiony tylko wtedy, gdy zasada x przekroczyła 10 w pętli w iteracji i=6.

Rejestruj punkty przerwania wiersza kodu

Używaj punktów przerwania wiersza kodu (punktów logowania), aby rejestrować wiadomości w Konsoli bez wstrzymywania wykonania i zaśmiecania kodu wywołaniami console.log().

Aby ustawić punkt logowania:

  1. Otwórz panel Źródła.
  2. Otwórz plik zawierający wiersz kodu, w którym chcesz przerwać pracę.
  3. Przejdź do wiersza kodu.
  4. Po lewej stronie wiersza kodu znajduje się kolumna z numerem wiersza. Kliknij ją prawym przyciskiem myszy.
  5. Wybierz Dodaj punkt logowania. Pod wierszem kodu pojawi się okno.
  6. W oknie wpisz komunikat logu. Możesz użyć tej samej składni co w przypadku wywołania console.log(message).

    Możesz na przykład zapisywać:

    "A string " + num, str.length > 1, str.toUpperCase(), obj
    

    W tym przypadku zapisany komunikat:

    // str = "test"
    // num = 42
    // obj = {attr: "x"}
    A string 42 true TEST {attr: 'x'}
    
  7. Naciśnij Enter, aby aktywować punkt przerwania. U góry kolumny z numerem wiersza pojawi się różowa ikona z 2 kropkami.

Punkt logowania, który rejestruje w Konsoli ciąg znaków i wartość zmiennej.

Ten przykład przedstawia punkt logowania w wierszu 30, który rejestruje w konsoli ciąg znaków i wartość zmiennej.

Edytuj punkty przerwania wiersza kodu

W sekcji Punkty przerwania możesz wyłączać, edytować i usuwać punkty przerwania wiersza kodu.

Edytuj grupy punktów przerwania

Sekcja Punkty przerwania grupuje punkty przerwania według pliku i porządkuje je według numerów wierszy i kolumn. Grupy możesz wykonywać te czynności:

  • Aby zwinąć lub rozwinąć grupę, kliknij jej nazwę.
  • Aby włączyć lub wyłączyć grupę bądź punkt przerwania pojedynczo, kliknij Pole wyboru. obok grupy lub punktu przerwania.
  • Aby usunąć grupę, najedź na nią kursorem i kliknij Zamknij..

Ten film pokazuje, jak zwijać grupy i wyłączać lub włączać punkty przerwania pojedynczo lub według grup. Gdy wyłączysz punkt przerwania, jego znacznik obok numeru wiersza w panelu Źródła stanie się przezroczysty.

Grupy mają menu kontekstowe. W sekcji Punkty przerwania kliknij grupę prawym przyciskiem myszy i wybierz:

Menu kontekstowe grupy.

  • Usuń wszystkie punkty przerwania w pliku (grupie).
  • Wyłącz wszystkie punkty przerwania w pliku.
  • Włącz wszystkie punkty przerwania w pliku.
  • Usuń wszystkie punkty przerwania (we wszystkich plikach).
  • Usuń inne punkty przerwania (w innych grupach).

Edytuj punkty przerwania

Aby edytować punkt przerwania:

  • Kliknij Pole wyboru. obok punktu przerwania, aby go włączyć lub wyłączyć. Gdy wyłączysz punkt przerwania, jego znacznik obok numeru wiersza w panelu Źródła stanie się przezroczysty.
  • Najedź kursorem na punkt przerwania i kliknij Edytuj., aby go edytować, lub Zamknij., aby go usunąć.
  • Podczas edytowania punktu przerwania zmień jego typ na liście w edytorze wbudowanym.

    Zmiana typu punktu przerwania.

  • Kliknij prawym przyciskiem myszy punkt przerwania, aby wyświetlić jego menu kontekstowe, i wybierz jedną z opcji:

    Menu kontekstowe punktu przerwania.

    • Pokaż lokalizację.
    • Edytuj warunek lub punkt logowania.
    • Włącz wszystkie punkty przerwania.
    • Wyłącz wszystkie punkty przerwania.
    • Usuń punkt przerwania.
    • Usuń inne punkty przerwania (we wszystkich plikach).
    • Usuń wszystkie punkty przerwania (we wszystkich plikach).

Obejrzyj film, aby zobaczyć, jak działają różne zmiany w punktach przerwania: wyłączanie, usuwanie, edytowanie warunku, pokazywanie lokalizacji w menu i zmiana typu.

Pomijaj punkty przerwania dzięki opcji „Nigdy nie wstrzymuj tutaj”

Użyj punktu przerwania wiersza kodu Nigdy nie wstrzymuj tutaj, aby pominąć pauzy, które mogą wystąpić z innych powodów. Może to być przydatne, gdy masz włączone wyjątkowe punkty przerwania, ale debuger ciągle zatrzymuje się w wyjątku szczególnie głośnym wyjątkiem, którego debugowanie nie jest Ci potrzebne.

Aby wyciszyć lokalizację przerwy:

  1. W panelu Źródła otwórz plik źródłowy i znajdź wiersz, w którym nie chcesz przerywać łamania.
  2. Kliknij prawym przyciskiem myszy numer wiersza w kolumnie z numerem wiersza po lewej stronie, obok instrukcji, która powoduje podział.
  3. W menu wybierz Nigdy nie wstrzymuj tutaj. Obok wiersza pojawi się pomarańczowy (warunkowy) punkt przerwania.

Możesz też wyciszyć punkt przerwania na czas wstrzymania wykonania. Obejrzyj następny film, aby dowiedzieć się, jak to zrobić.

Opcja Nigdy nie wstrzymuj tutaj pozwala wyciszać instrukcje debugowania i wszystkie pozostałe typy punktów przerwania z wyjątkiem punktów przerwania wiersza kodu i punktów przerwania detektora zdarzeń.

Nigdy nie wstrzymuj tutaj, może wystąpić błąd w wierszu z wieloma instrukcjami, jeśli instrukcja, która nie powinna być wstrzymywana, różni się od tej, która powoduje wstrzymanie. W kodzie zmapowanym na podstawie źródła nie każda lokalizacja punktu przerwania odpowiada oryginalnej instrukcji, która powoduje przerwę.

Punkty przerwania zmiany DOM

Punktu przerwania zmiany DOM używaj, gdy chcesz wstrzymać odtwarzanie kodu, który zmienia węzeł DOM lub jego dzieci.

Aby ustawić punkt przerwania zmiany DOM:

  1. Kliknij kartę Elementy.
  2. Przejdź do elementu, dla którego chcesz ustawić punkt przerwania.
  3. Kliknij element prawym przyciskiem myszy.
  4. Najedź kursorem na opcję Przerwij, wybierz Modyfikacje drzewa podrzędnego, Modyfikacje atrybutu lub Usuwanie węzła.

Menu kontekstowe tworzenia punktu przerwania zmiany DOM.

Ten przykład przedstawia menu kontekstowe tworzenia punktu przerwania zmiany DOM.

Listę punktów przerwania zmiany DOM znajdziesz tutaj:

  • Elementy > Panel Punkty przerwania DOM.
  • Źródła > Panel boczny Punkty przerwania DOM.

Lista punktów przerwania DOM w panelach Elementy i Źródła.

W tym miejscu możesz:

  • Możesz je włączać i wyłączać za pomocą Pole wyboru..
  • Kliknij prawym przyciskiem myszy > Usuń lub Pokaż w DOM.

Typy punktów przerwania zmiany DOM

  • Modyfikacje drzewa podrzędnego. Wywoływane, gdy element podrzędny obecnie wybranego węzła jest usunięty lub lub zawartość elementu podrzędnego zostanie zmieniona. nie są wywoływane po zmianie atrybutów węzła podrzędnego lub przy dowolnych zmianach w obecnie wybranym węźle.
  • Modyfikacje atrybutów: wywoływane po dodaniu lub usunięciu atrybutu w obecnie wybranego węzła lub po zmianie wartości atrybutu.
  • Usuwanie węzła: wywoływane po usunięciu aktualnie wybranego węzła.

Punkty przerwania żądań XHR/pobrania

Użyj punktu przerwania XHR/pobierania, gdy chcesz przerwać, gdy URL żądania XHR zawiera określony ciągu znaków. Narzędzia deweloperskie zatrzymują się w wierszu kodu, w którym XHR wywołuje send().

Jest to pomocne na przykład wtedy, gdy widzisz, że Twoja strona prosi o nieprawidłowy URL, i chcesz szybko znaleźć kod źródłowy AJAX lub Pobierz, który powoduje nieprawidłowe żądanie.

Aby ustawić punkt przerwania XHR/pobrania:

  1. Kliknij panel Źródła.
  2. Rozwiń panel Punkty przerwania XHR.
  3. Kliknij Dodaj. Dodaj punkt przerwania.
  4. Wpisz ciąg znaków, który chcesz przerwać. Narzędzia deweloperskie są wstrzymywane, gdy występuje ten ciąg znaków w dowolnym miejscu adresu URL żądania XHR.
  5. Aby potwierdzić, naciśnij Enter.

Tworzę punkt przerwania XHR/pobierania.

Ten przykład pokazuje, jak utworzyć punkt przerwania XHR/pobierania w punktach przerwania XHR/pobierania dla każdego żądania, które zawiera org w adresie URL.

Punkty przerwania detektora zdarzeń

Używaj punktów przerwania detektora zdarzeń, jeśli chcesz wstrzymać działanie kodu odbiornika uruchamianego po . Możesz wybrać konkretne zdarzenia, np. click, lub kategorie zdarzeń, takie jak zdarzeń związanych z myszą.

  1. Kliknij panel Źródła.
  2. Rozwiń panel Punkty przerwania detektora zdarzeń. Narzędzia deweloperskie wyświetlają listę kategorii zdarzeń, takich jak jako Animacja.
  3. Zaznacz jedną z tych kategorii, aby wstrzymywać każdorazowe wywołanie zdarzenia z tej kategorii, lub rozwiń kategorię i sprawdzić konkretne zdarzenie.

Tworzę punkt przerwania detektora zdarzeń.

Z tego przykładu dowiesz się, jak utworzyć punkt przerwania detektora zdarzeń dla deviceorientation.

Dodatkowo Debuger wstrzymuje się w przypadku zdarzeń występujących w środowiskach roboczych lub zbiorach zadań dowolnego typu, w tym w Workletach współdzielonego miejsca na dane.

Debuger został wstrzymany na zdarzeniu skryptu service worker.

Ten przykład pokazuje, jak Debuger został wstrzymany w zdarzeniu setTimer, które wystąpiło w skrypcie service worker.

Listę detektorów zdarzeń znajdziesz w sekcji Elementy > Okienko Detektory zdarzeń.

Punkty przerwania wyjątków

Wyjątkowe punkty przerwania warto stosować, gdy chcesz zatrzymać się na wierszu kodu, który zgłasza złapany lub nieobsłużony wyjątek. Możesz wstrzymać działanie obu tych wyjątków niezależnie w każdej sesji debugowania innej niż Node.js.

W sekcji Punkty przerwania w panelu Źródła włącz jedną z tych opcji lub obie, a następnie wykonaj kod:

  • Zaznacz Pole wyboru. Wstrzymaj przy niewykrytych wyjątkach.

    Wstrzymana w przypadku nieobsłużonego wyjątku, gdy zaznaczone jest odpowiednie pole wyboru.

    W tym przykładzie wykonanie jest wstrzymane w przypadku nieobsłużonego wyjątku.

  • Zaznacz Pole wyboru. Wstrzymaj przy wykrytych wyjątkach.

    Wstrzymana w przypadku wykrytego wyjątku, gdy zaznaczone jest odpowiednie pole wyboru.

    W tym przykładzie wykonanie jest wstrzymane na zaobserwowanym wyjątku.

Wyjątki w wywołaniach asynchronicznych

Gdy pole wyboru Przechwytywanie i nieprzechwytywanie jest włączone (lub oba te pola), Debuger próbuje zatrzymać się na odpowiednich wyjątkach zarówno w wywołaniach synchronicznych, jak i asynchronicznych. W przypadku asynchronicznym Debugger szuka modułów obsługi odrzucenia w obrębie obietnic, aby określić, kiedy zatrzymać.

Przechwycone wyjątki i ignorowany kod

Gdy Lista ignorowanych jest włączona, Debuger zatrzymuje się na wyjątkach wykrytych w klatkach nieignorowanych lub przechodzących przez taką ramkę w stosie wywołań.

W następnym przykładzie widać, że Debuger został wstrzymany na wykrytym wyjątku zgłoszonym przez ignorowany parametr library.js, który przekazuje nieignorowane dane mycode.js.

Wstrzymana w przypadku wykrytego wyjątku, który przechodzi przez nieignorowaną ramkę w stosie wywołań.

Aby dowiedzieć się więcej o działaniu Debugera w przypadkach skrajnych, przetestuj zbiór scenariuszy na tej stronie demonstracyjnej.

Punkty przerwania funkcji

Wywołaj debug(functionName), gdzie functionName jest funkcją do debugowania, gdy chcesz za każdym razem, gdy zostanie wywołana określona funkcja. Możesz wstawić do kodu element debug() (np. console.log()) lub wywołaj ją z konsoli Narzędzi deweloperskich. debug() jest odpowiednikiem ustawienia punkt przerwania wiersza kodu w pierwszym wierszu funkcji.

function sum(a, b) {
  let result = a + b; // DevTools pauses on this line.
  return result;
}
debug(sum); // Pass the function object, not a string.
sum();

Sprawdź, czy funkcja docelowa jest w zakresie

Narzędzia deweloperskie zgłaszają ReferenceError, jeśli funkcja, którą chcesz debugować, nie znajduje się w zakresie.

(function () {
  function hey() {
    console.log('hey');
  }
  function yo() {
    console.log('yo');
  }
  debug(yo); // This works.
  yo();
})();
debug(hey); // This doesn't work. hey() is out of scope.

Sprawdzenie, czy funkcja docelowa jest w zakresie, może być trudna do sprawdzenia, jeśli wywołujesz funkcję debug() z poziomu Narzędzi deweloperskich. Konsola. Oto jedna strategia:

  1. Ustaw punkt przerwania wiersza kodu w miejscu, w którym funkcja jest w zakresie.
  2. Aktywuj punkt przerwania.
  3. Wywołaj funkcję debug() w konsoli Narzędzi deweloperskich, gdy kod jest jeszcze wstrzymany w wierszu kodu między punktami przerwania.

Punkty przerwania typu zaufanego

Interfejs Trusted Type API zapewnia ochronę przed zabezpieczeniami. wykorzystują tzw. ataki typu cross-site scripting (XSS).

W sekcji Punkty przerwania w panelu Źródła przejdź do sekcji Punkty przerwania naruszeń zasad CSP i włącz jedną z tych opcji lub obie, a następnie wykonaj kod:

  • Sprawdź naruszenia ujścia (Pole wyboru.).

    Wstrzymano w przypadku naruszenia zasad ujścia, gdy odpowiednie pole wyboru jest zaznaczone.

    W tym przykładzie wykonanie jest wstrzymane z powodu naruszenia ujścia.

  • Sprawdź naruszenia zasad (Pole wyboru.).

    Wstrzymana w przypadku naruszenia zasad, gdy odpowiednie pole wyboru jest zaznaczone.

    W tym przykładzie wykonanie jest wstrzymane w przypadku naruszenia zasad. Zasady dotyczące zaufanego typu są konfigurowane za pomocą trustedTypes.createPolicy.

Więcej informacji o korzystaniu z interfejsu API znajdziesz w tych miejscach: