2016-05-06 8 views
7

Gibt es eine Option, um etwas wie "Haltepunkt" für eine Datei in der Chrome-Konsole (Art von Verknüpfung, um Haltepunkt auf jeder Codezeile in der Datei festzulegen)?Chrome-Konsole - Haltepunkt über ganze Datei

Wäre sehr nützlich beim Versuch, Skripte von Drittanbietern zu verstehen, von denen Sie wissen, dass sie ausgeführt werden, aber keine Ahnung haben, welcher Teil des Codes und von wo wann ausgeführt wird.

Mein derzeitiges Anwendungsbeispiel: Ich habe ein Skript heruntergeladen (Formularvalidierung), das nicht wie erwartet funktioniert. Der schnellste Weg zur Lösung des Problems besteht darin, die Ausführung jederzeit zu unterbrechen, wenn JS Runtime diese Datei eingibt und von dort aus die Suche beginnt.

Antwort

3

Ich denke, das wird für Sie von Nutzen sein. Ich habe vor kurzem einige Arbeiten an der JavaScript Breakpoint Collection Chrome Extension erstellt von Matt Zeunert, die Sie in den Code zur Laufzeit injizieren können - einschließlich brechen auf Eigentum Zugriff/Änderungen, Funktionen, Scrollen Ereignisse, etc. Sie können auf beliebige Objekte zu brechen sowie die vordefinierten über die Konsolen-API.

Überprüfen Sie das Projekt here.

0

Nein. Sie müssten den verschiedenen Eingangspunkten der Funktion Haltepunkte hinzufügen, die enthalten sind, um überall einzufangen.

1

Wenn Sie die Funktionen auflisten können, die öffentlich von Ihrem Drittanbieter-Skript verfügbar gemacht werden (z. B. wenn sie alle Eigenschaften eines Objekts sind oder ihr Name ein Muster hat), können Sie ein anderes Skript erstellen, das alle diese Funktionen dynamisch ersetzt und erzwingt ein Haltepunkt:

thirdpartfunc = (function() { 
    var oldfunc = thirdpartfunc; 
    return function() { 
    debugger; 
    oldfunc.call(null, arguments); 
}()); 

Mit der entsprechenden Bindung an diese (wenn anwendbar).

0

Können Sie nicht einfach einen Haltepunkt in der ersten Zeile jeder Funktion in der Datei von Interesse platzieren?

+4

Natürlich kann ich, aber es ist immer noch zu nervig und nichtelegante Lösung – amik

0

Wenn Sie die Funktion (en) kennen genannt wird, können Sie function breakpoints

debug(function); 
function(...args); 

verwenden Wenn Sie die Funktion aufrufen, wird es den Haltepunkt erreicht. Diese werden beim erneuten Laden der Seite nicht gespeichert. Sie können jedoch einen Zeilenumbruchspunkt setzen, sobald Sie den Funktionshaltepunkt erreicht haben.

Dies kann jedoch etwas mühsam werden.

Wenn Sie eine Reihe von Funktionen haben, können Sie

[function0, function1].map(debug) 

@Tibos Antwort in einem anderen Beitrag tun gut wäre, wenn es irgendeine Art von babel war verwandeln debugger; am Anfang jeder Funktion einzufügen, statt es manuell einfügen.

Verwandte Themen