Come impostare un breakpoint JavaScript dal codice in Chrome?


688

Voglio forzare il debugger di Chrome a interrompere una riga tramite codice , oppure usando una sorta di tag di commento come qualcosa del genere console.break().


46
hai provato debugger;o hai semplicemente utilizzato punti di interruzione regolari nella barra degli strumenti dello sviluppatore?
diaho,

vuoi dire impostare punti di interruzione dal codice stesso piuttosto che impostarli usando lo script watcher negli strumenti di sviluppo?
Faris M,


9
Non un duplicato. "in Chrome" vs "in code" sono due cose diverse e questa domanda è applicabile a molti scenari non XHR. Sì 1 delle risposte nell'altra domanda risponde a questa domanda, ma altre non sono applicabili. Ho letteralmente cercato su Google "imposta il breakpoint javascript dal codice chrome" e questo è il primo risultato, e l'altra domanda non è nemmeno nella prima pagina.
AaronLS,

Risposte:


1162

Puoi usare debugger;nel tuo codice. Se la console per sviluppatori è aperta, l'esecuzione verrà interrotta. Funziona anche in firebug.


8
Un bel trucco è innescare il debugger dopo alcuni secondi:setTimeout(function(){debugger;}, 3000);
Shahar

30
Il trucco del timer è pratica comune? Verifica / giustificazione?
Justus Eapen,

4
Questo è molto utile Nota debugger;è supportata anche in tutti i principali browser. Per maggiori informazioni: w3schools.com/jsref/jsref_debugger.asp
ScottyG

16
@ScottyG MDN è meno brillante, più utile: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
jpaugh

@JustusEapen Il problema è che Javascript è a thread singolo, quindi non può interrompere l'esecuzione del codice.
Vitruvio

27

Impostare un listener di clic sui pulsanti e chiamare il debugger;

Esempio

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

dimostrazione

http://jsfiddle.net/hBCH5/

Risorse sul debug in JavaScript


1
Ciò imposta un punto di interruzione nel gestore dei clic, probabilmente non quello che OP voleva
ᆼ ᆺ ᆼ

@PeterV Lo troverei utile se stessi solo cercando di aprire il mio codice in un posto vicino a un blocco di codice sul quale stavo eseguendo il debug ... ma non volevo eseguire il debug tutto il tempo ... ma sì , se è solo per aprire il debugger ... allora c'è un tasto premuto per quello.
Armstrongest

27

Puoi anche usare debug(function), per interrompere quando functionviene chiamato.

Riferimento API della riga di comando: debug


2
Molto bello - sembra essere Chrome solo in questo momento, ma questa è comunque la mia piattaforma principale. Ora devo solo ricordare di smettere di chiamare il mio flag di debug globale "debug" ...
brichins,

Il riferimento all'API della riga di comando di Debugger di Chrome in realtà contiene alcune altre cose piuttosto utili di cui non ero a conoscenza. Grazie!
Peter T.


8

Nella scheda "Script", vai dove si trova il tuo codice. A sinistra del numero di riga, fai clic su. Questo imposterà un breakpoint.

Immagine dello schermo:

screenshot del breakpoint in cromo

Sarai quindi in grado di tracciare i tuoi punti di interruzione nella scheda a destra (come mostrato nello screenshot).


41
Questo non risponde alla domanda, vuole essere in grado di farlo in codice
robertc

39
xn .: "Ecco una foto della mia risposta, quando era solo un bambino piccolo con 0 voti. Ora è tutto cresciuto."
AaronLS,

3
Se carichi uno script JS con una chiamata Ajax, non verrà mostrato qui, quindi la necessità di un punto di interruzione nel codice.
Petruza,

@FlorianMargaine, Non esiste più la scheda Script. Si prega di aggiornare l'immagine.
Pacerier

In alcuni framework, come Drupal, JS ottiene un suffisso di stringa di query busting della cache aggiunto. Se svuoti le cache, aggiorna spesso questo suffisso che può cancellare tutti i punti di interruzione che hai impostato sul caricamento precedente.
Nick,

7

debugger è una parola chiave riservata di EcmaScript e ha fornito la semantica opzionale da ES5

Di conseguenza, può essere utilizzato non solo su Chrome, ma anche su Firefox e Node.js tramitenode debug myscript.js .

Lo standard dice :

Sintassi

DebuggerStatement :
    debugger ;

Semantica

La valutazione della produzione di DebuggerStatement può consentire a un'implementazione di causare un punto di interruzione quando viene eseguita in un debugger. Se un debugger non è presente o attivo questa affermazione non ha alcun effetto osservabile.

La produzione DebuggerStatement: debugger; è valutato come segue:

  1. Se è disponibile e abilitata una funzione di debug definita dall'implementazione, allora
    1. Eseguire un'azione di debug definita dall'implementazione.
    2. Lascia che il risultato sia un valore di completamento definito dall'implementazione.
  2. Altro
    1. Lascia che il risultato sia (normale, vuoto, vuoto).
  3. Risultato di ritorno.

Nessuna modifica in ES6.


3

È possibile e ci sono molte ragioni per cui potresti voler fare questo. Ad esempio il debug di un ciclo infinito javascript vicino all'inizio del caricamento della pagina, che interrompe il corretto caricamento del set di strumenti per sviluppatori Chrome (o firebug).

Vedere la sezione 2 di

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

oppure aggiungi semplicemente una riga contenente la parola debugger al tuo codice nel punto di test richiesto.


3

Punto di rottura :-

il punto di interruzione interromperà l'esecuzione e consentirà di esaminare i valori JavaScript.

Dopo aver esaminato i valori, è possibile riprendere l'esecuzione del codice (in genere con un pulsante di riproduzione).

Debugger: -

Il debugger; interrompe l'esecuzione di JavaScript e chiama la funzione di debug.

L'istruzione debugger sospende l'esecuzione, ma non chiude alcun file né cancella alcuna variabile.

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


2

Esistono molti modi per eseguire il debug del codice JavaScript. I seguenti due approcci sono ampiamente utilizzati per eseguire il debug di JavaScript tramite codice

  1. Utilizzo console.log()per stampare i valori nella console del browser. (Questo ti aiuterà a capire i valori in determinati punti del tuo codice)

  2. Parola chiave debugger. Aggiungi debugger;alle posizioni in cui desideri eseguire il debug, apri la console per gli sviluppatori del browser e vai alla scheda delle fonti.

Per ulteriori strumenti e modi in cui eseguire il debug del codice JavaScript, vengono forniti in questo collegamento da W3School .


1
Il +1 e l'utilizzo di console.log sono utili anche per individuare il codice, poiché in genere il file / riga # viene visualizzato accanto al messaggio e puoi fare clic per aprire il codice nel debugger, impostare il punto di interruzione, ecc.
John Henckel

0

Non consiglierei debugger;se vuoi semplicemente uccidere e interrompere il codice javascript, dal momento debugger;che congelerà temporaneamente il tuo codice javascript e non lo fermerà permanentemente.

Se vuoi uccidere e fermare correttamente il codice javascript al tuo comando usa quanto segue:

throw new Error("This error message appears because I placed it");

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.