2012-04-06 21 views
548

Chcę wymusić chrom debugger złamać na linii poprzez kod, albo też za pomocą jakiegoś komentarza tagu takie jak coś podobnego console.break().Ustaw punkt przerwania javascript w kodzie - w chrome?

Czy istnieje sposób, aby to zrobić?

+36

próbowałeś 'debugger;' lub po prostu za pomocą regularnych punktów przerwania na pasku narzędzi dewelopera? – diaho

+0

masz na myśli ustawić punkty przerwania z samego kodu, zamiast ustawiać je za pomocą modułu do śledzenia skryptów w narzędziach programistycznych? –

+1

A może lepiej: [Ustaw punkt przerwania w XHR w Chrome] (http://stackoverflow.com/questions/3249696/set-a-breakpoint-in-xhr-in-chrome). –

Odpowiedz

949

Możesz użyć debugger; w swoim kodzie. Jeśli konsola programisty jest otwarta, wykonanie zostanie przerwane. Działa również w firebug.

+4

A miłą sztuczką jest wyzwolenie debuggera po kilku sekundach: 'setTimeout (function() {debugger;}, 3000);' – Shahar

+28

Czy zegar sztuczki jest powszechną praktyką? Weryfikacja/uzasadnienie? –

+3

Jest to bardzo pomocne. Zwróć uwagę, że 'debugger;' jest obsługiwany we wszystkich głównych przeglądarkach. Aby uzyskać więcej informacji: http://www.w3schools.com/jsref/jsref_debugger.asp – ScottyG

5

Na karcie "Skrypty" przejdź do miejsca, w którym znajduje się Twój kod. Po lewej stronie numeru linii kliknij. Spowoduje to ustawienie punktu przerwania.

Zrzut ekranu:

screenshot of breakpoint in chrome

Będziesz wtedy mógł śledzić swoje punkty przerwania w prawą kartę (jak pokazano na zrzucie ekranu).

+38

To nie odpowiada na pytanie, chce być w stanie to zrobić * w kodzie * – robertc

+34

xn .: "Oto zdjęcie z mojej odpowiedzi, kiedy było to małe dziecko z 0 głosami. . " – AaronLS

+3

Jeśli załadujesz skrypt JS z wywołaniem Ajax, nie pojawi się on tutaj, stąd potrzeba punktu przerwania w kodzie. – Petruza

3

Jest to możliwe i istnieje wiele powodów, dla których warto to zrobić. Na przykład debugowanie nieskończonej pętli javascript w pobliżu początku ładowania strony, która zatrzymuje ładowanie zestawu narzędzi programisty chrome (lub firebug).

Patrz punkt 2

http://www.laurencegellert.com/2012/05/the-three-ways-of-setting-breakpoints-in-javascript/

lub po prostu dodaj wiersz zawierający słowo debugera do kodu w wymaganym punkcie pomiarowym.

16

Skonfiguruj Kliknij przycisk słuchacza i nazywają debugger;

Przykład z

$("#myBtn").click(function() { 
debugger; 
}); 

Demo

http://jsfiddle.net/hBCH5/

Resources debugowanie w JavaScript

+1

Ustawia punkt przerwania w obsłudze kliknięcia, prawdopodobnie nie to, co OP chciał uzyskać. –

4

debugger jest zarezerwowanym kluczowe podane przez ECMAScript i opcjonalne semantyka od ES5

W rezultacie może być używany nie tylko w przeglądarce Chrome, ale także Firefox i Node.js via node debug myscript.js.

standard says:

Składnia

DebuggerStatement : 
    debugger ; 

Semantyka

Ocenianie produkcję DebuggerStatement może umożliwić realizację spowodować przerwania kiedy pracował w debugger. Jeśli debugger nie jest obecny lub aktywny, to instrukcja nie ma zauważalnego efektu.

Producer DebuggerStatement: debugger; ocenia się następująco:

  1. Jeśli implementacja zdefiniowany obiekt debugowanie jest dostępna i włączona,
    1. Wykonaj realizacji określono działania debugowania.
    2. Niech wynik będzie zdefiniowaną implementacją Wartość końcowa.
  2. Else
    1. wynik Pozwolić (normalny, pusty, puste).
  3. Wynik zwrotu.
12

Można również użyć debug(function), złamać, gdy function nazywa.

Command Line API Reference: debug

+1

Bardzo ładne - wydaje się być w tej chwili tylko Chrome, ale to i tak jest moja podstawowa platforma. Teraz po prostu muszę pamiętać, aby przestać wywoływać flagę debugowania globalnego debugowania ... – brichins

2

Breakpoint: -

breakpoint zatrzyma wykonywanie i pozwala badać wartości JavaScript.

Po przejrzeniu wartości można wznowić wykonywanie kodu (zwykle za pomocą przycisku odtwarzania).

Debugger: -

Debugger; zatrzymuje wykonywanie JavaScript i wywołuje funkcję debugowania.

Instrukcja debugera zawiesza wykonywanie, ale nie zamyka żadnych plików ani nie usuwa żadnych zmiennych.

Example:- 
function checkBuggyStuff() { 
    debugger; // do buggy stuff to examine. 
}; 
Powiązane problemy