Wie kann ich beim Durchlaufen von JavaScript-Code im Google Chrome-Debugger die Skriptausführung beenden, wenn ich nicht fortfahren möchte? Ich habe nur das Browserfenster geschlossen.
Durch Drücken von "Diese Seite neu laden" wird der Rest des Codes ausgeführt und es werden sogar Formulare gesendet, als ob Sie F8 "Weiter" drücken würden.
UPDATE :
Wenn Sie F5 (Aktualisieren) drücken, während ein Skript angehalten ist:
- Google Chrome (v22) führt das Skript aus. Wenn das Skript eine HTTP-Anforderung sendet, wird die HTTP-Antwort für diese Anforderung angezeigt. Die Originalseite wird nicht aktualisiert.
- IE 9 friert nur ein. IE hat jedoch eine Option "Debugging beenden", die das Skript außerhalb des Debuggers weiterhin ausführt, wenn sie gedrückt wird (vorausgesetzt, Sie haben zuvor nicht F5 gedrückt).
- Firebug verhält sich identisch mit Chrome.
Das Schließen und anschließende Öffnen des Browserfensters ist nicht immer der nächst einfachere Weg, da dadurch der Sitzungsstatus des Browsers beendet wird. Dies kann wichtig sein. Alle Ihre Haltepunkte gehen ebenfalls verloren.
UPDATE (Januar 2014) :
Beim Debuggen aktualisieren:
- Chrome v31: Ermöglicht die Ausführung von Skripten und stoppt an weiteren Haltepunkten (sendet jedoch keine Ajax-Anforderungen) und wird dann aktualisiert.
- IE 11: Aktualisieren bewirkt nichts, aber Sie können F5 drücken, um fortzufahren.
- Firefox v26: Ermöglicht die Ausführung von Skripten, stoppt jedoch nicht an weiteren Haltepunkten, sendet Ajax-Anforderungen und wird dann aktualisiert.
Art von Fortschritt!
Navigieren Sie beim Debuggen zur gleichen Seite:
- Chrome v31: wie Aktualisieren.
- IE 11: Skripte werden beendet, neue Browsersitzung wird gestartet (wie beim Schließen und erneuten Öffnen).
- Firefox v26: nichts passiert.
Auch Juacala schlug eine effektive Problemumgehung vor. Wenn Sie beispielsweise jQuery verwenden, wird durch Ausführen von delete $ from console die Ausführung gestoppt, sobald eine jQuery-Methode gefunden wird. Ich habe es in allen oben genannten Browsern getestet und kann bestätigen, dass es funktioniert.
UPDATE (März 2015) :
Nach über 2 Jahren und fast 10.000 Ansichten wurde die richtige Antwort von Alexander K. gegeben. Google Chrome verfügt über einen eigenen Task-Manager, der einen Tab-Prozess beenden kann, ohne den Tab selbst zu schließen, wobei alle Haltepunkte und andere Elemente intakt bleiben.
Ich ging sogar bis zu BrowserStack.com, um es in Chrome v22 zu testen, und stellte fest, dass dies auch zu diesem Zeitpunkt so funktionierte.
Die Problemumgehung von Juacala ist beim Debuggen in IE oder Firefox weiterhin hilfreich.
UPDATE (Januar 2019) :
Chrome Dev Tools hat endlich einen geeigneten Weg hinzugefügt, um die Skriptausführung zu stoppen, was nett ist (obwohl ein bisschen versteckt). Einzelheiten finden Sie in der Antwort von James Gentes.
debugger;
in die dev tools console ein und es werden sofort Dinge in den Debugger gestellt und das Skript gestoppt.Antworten:
In Chrome gibt es einen "Task-Manager", auf den über Shift+ ESCoder über zugegriffen werden kann
Sie können Ihre Seitenaufgabe auswählen und beenden, indem Sie auf die Schaltfläche "Prozess beenden" klicken.
quelle
chrome 48
Dies wird nur das Dev-Tool schließen und nicht beenden, es erneut öffnen. Sie können sehen, dass das Programm noch läuft (tried setInterval()
)Ab April 2018 können Sie Endlosschleifen in Chrome stoppen :
Beachten Sie auch die Tastenkombinationen: F8und Ctrl+\
quelle
body
Element hier auf SO ausgewählt, eine "Pause auf -> Teilbaummodifikationen" gesetzt und dann überall geklickt habe. Die Schaltfläche sieht aus wie in dem Screenshot, den ich gepostet habe.Eine Möglichkeit, dies zu tun, besteht darin, das Skript anzuhalten. Sehen Sie sich an, welcher Code dort folgt, wo Sie gerade gestoppt sind, z.
Gehen Sie in der Konsole wie folgt vor:
Spielen Sie dann das Skript ab: Es wird einen schwerwiegenden Fehler verursachen, wenn versucht wird, darauf zuzugreifen
somethingElse
, und das Skript stirbt ab. Voila, du hast das Skript beendet.EDIT: Ursprünglich habe ich eine Variable gelöscht. Das ist nicht gut genug. Sie müssen eine Funktion oder ein Objekt löschen, von dem JavaScript versucht, auf eine Eigenschaft zuzugreifen.
quelle
you have to delete a function or an object
so ein böser Hack! (in der Benutzeroberfläche würde es gut passen, um alle Knöpfe zu töten )2020 April Update
Ab Chrome 80 funktioniert keine der aktuellen Antworten. Es ist keine Schaltfläche "Pause" sichtbar. Sie müssen lange auf die Schaltfläche "Wiedergabe" klicken, um auf das Stoppsymbol zuzugreifen:
quelle
Wenn Sie dies bei der Verwendung der
debugger
Anweisung feststellen,... dann denke ich, dass die Seite für immer weiter läuft, bis die js-Laufzeit nachgibt oder die nächste Pause. Angenommen, Sie befinden sich im Break-on-Error-Modus (Umschalten des Pause-Symbols), können Sie sicherstellen, dass eine Unterbrechung auftritt, indem Sie stattdessen Folgendes tun:
oder rufen Sie eine nicht vorhandene Funktion auf:
(Natürlich hilft dies nicht, wenn Sie versuchen, Funktionen zu durchlaufen, obwohl Sie möglicherweise dynamisch ein
throw 1
oderz()
oder etwas im Quellenbedienfeld hinzufügen , Strg-S zum Speichern und Strg-R zum Aktualisieren ... dies kann jedoch einen Haltepunkt überspringen, funktioniert aber möglicherweise, wenn Sie sich in einer Schleife befinden.)Wenn Sie eine Schleife ausführen und erwarten, dass die
debugger
Anweisung erneut ausgelöst wird, können Siethrow 1
stattdessen einfach eingeben.Wenn Sie dann Strg-R drücken, wird der nächste Wurf ausgeführt und die Seite wird aktualisiert.
(getestet mit Chrome v38, circa April 2017)
quelle
Gute Frage hier. Ich denke, Sie können die Skriptausführung nicht beenden. Obwohl ich nie danach gesucht habe, benutze ich den Chrome-Debugger schon ziemlich lange bei der Arbeit. Normalerweise setze ich Haltepunkte in meinem Javascript-Code und debugge dann den Teil des Codes, an dem ich interessiert bin. Wenn ich mit dem Debuggen dieses Codes fertig bin, führe ich normalerweise nur den Rest des Programms aus oder aktualisiere den Browser.
Wenn Sie verhindern möchten, dass der Rest des Skripts ausgeführt wird (z. B. aufgrund von AJAX-Aufrufen, die ausgeführt werden sollen) , können Sie diesen Code nur im laufenden Betrieb in der Konsole entfernen und so diese Aufrufe verhindern Wenn Sie nicht ausgeführt werden , können Sie den verbleibenden Code problemlos ausführen.
Ich hoffe das hilft!
PS: Ich habe in einigen Tutorials / Anleitungen wie den folgenden versucht, eine Option zum Beenden der Ausführung zu finden, konnte sie jedoch nicht finden. Wie ich bereits sagte, gibt es wahrscheinlich keine solche Option.
http://www.codeproject.com/Articles/273129/Beginner-Guide-to-Page-and-Script-Debugging-with-C
http://www.nsbasic.com/app/tutorials/TT10.htm
quelle
Unter Bezugnahme auf die Antwort von @scottndecker auf die folgende Frage bietet Chrome jetzt unter Entwicklertools die Option "JavaScript deaktivieren":
...
oben rechtsGut, dass Sie anhalten und erneut ausführen können, indem Sie es aktivieren / deaktivieren.
quelle
Sie können es tun, aber Sie müssen zuerst Ihren Code vorbereiten.
Anweisungen zum Anhalten der Skriptausführung in den Google Chrome Dev Tools:
(1) Bereiten Sie zuerst Ihren Code vor, indem Sie eine globale Variable erstellen :
(2) Testen Sie den Wert dieser Variablen an jedem Ort, an dem Sie möglicherweise beenden möchten:
(3) Unterbrechen Sie die Ausführung des Skripts an oder vor den obigen Testzeilen.
(4) Wechseln Sie zur Konsole
(5) Typ:
(6) Setzen Sie die Skriptausführung fort. Das Skript wird ausgeführt,
return false
wenn der Test aus Schritt (2) oben ausgeführt wirdAnmerkungen:
(A) Dieser Trick funktioniert mit globalen Variablen und Objekten, aber nicht mit lokalen Variablen. Beachten Sie Folgendes:
newVar = 'never used before';
Erstellt eine neue Eigenschaft des Fensterobjekts (funktioniert mit dem obigen Trick), während dies:
var newVar = 'never used before';
eine lokale Variable erstellt (funktioniert NICHT mit dem obigen Trick!)
(B) Sie können diesen Trick also weiterhin mit bereits ausgeführtem Code verwenden wenn Sie entweder eine globale Variable oder ein Objekt haben, das false zurückgibt, wenn es einen bestimmten Wert hat.
(C) Zur Not können Sie den Trick von Juacala verwenden und ein Element aus dem DOM (auf der Registerkarte Elemente) löschen, das einen Javascript-Fehler verursacht. Angenommen, Sie haben Code.
var cartype = $('#cartype').val();
Wenn Sie das Element mit ID =cartype
vor dieser Codezeile löschen, wird das js in dieser Zeile unterbrochen. Das Element fehlt jedoch weiterhin, wenn Sie versuchen, den Code erneut auszuführen.Mit dem oben beschriebenen Trick können Sie den Code ad infinitum ausführen und erneut ausführen .Weitere Hinweise:
(a) Haltepunkt in Code einfügen: Geben Sie einfach
debugger;
eine Zeile für sich ein. Wenn DevTools geöffnet ist, springt das Skript zu diesem Zeitpunkt in den Debugger. Wenn DevTools nicht geöffnet wird, ignoriert der Code die Anweisung.(b) Möchten Sie vermeiden, beim Debuggen von Code in die jQuery-Bibliothek zu springen? Blackbox es. Siehe Blackbox-Anweisungen für Chrome - oder - für Firefox
Dankbarkeit (bitte besuchen und abstimmen):
Javascript Debugging Zeile für Zeile mit Google Chrome
Ist es möglich, Javascript-Variablenwerte beim Debuggen in Google Chrome zu ändern?
quelle
Any place where you may wish to quit, test the value of this variable
Das ist schrecklich! Ich möchte aufhören, wo immer ich gerade bin, ich weiß nicht im Voraus, wo das sein könnte!Sie können bei jedem XHR-Muster pausieren, das ich beim Debuggen solcher Szenarien sehr nützlich finde.
Zum Beispiel habe ich einen Haltepunkt für ein URL-Muster angegeben, das "/" enthält.
quelle
Wenn Sie eine Rogue-Schleife haben, halten Sie den Code im Google Chrome-Debugger an (der kleine "
||
Schaltfläche " auf der Registerkarte "Quellen").Wechseln Sie zurück zu Chrome selbst, öffnen Sie "Task-Manager" ( Shift+ ESC), wählen Sie Ihre Registerkarte aus und klicken Sie auf die Schaltfläche "Prozess beenden".
Sie erhalten die Aww Snap-Nachricht und können dann neu laden ( F5).
Wie andere angemerkt haben, entspricht das Neuladen der Seite zum Zeitpunkt des Anhaltens dem Neustart der Rogue-Schleife und kann zu unangenehmen Abstürzen führen, wenn der Debugger dann auch gesperrt wird (in einigen Fällen führt dies zum Neustart von Chrome oder sogar des PCs). Der Debugger benötigt eine "Stop" -Taste. Nb: Die akzeptierte Antwort ist insofern veraltet, als einige Aspekte jetzt offensichtlich falsch sind. Wenn Sie mich abstimmen, erklären Sie bitte :) .
quelle
Öffnen Sie die Registerkarte "Quelle" in "Entwicklertools", klicken Sie in einem laufenden Skript auf eine Zeilennummer. Dadurch wird ein Haltepunkt erstellt und der Debugger wird dort unterbrochen.
quelle
Es gibt viele geeignete Lösungen für dieses Problem, wie oben in diesem Beitrag erwähnt, aber ich habe einen kleinen Hack gefunden, der in das Skript eingefügt oder in die Chromes-Konsole (Debugger) eingefügt werden kann, um dies zu erreichen:
Dies führt dazu, dass die Ausführung angehalten wird, wenn Sie drücken
F12
.quelle