2016-07-12 10 views
0

In NodeJS können Sie ein Skript mit der Option --debug-brk ausführen, das Ihr Skript in der ersten Zeile anhält. Sie können dann mit einem Debugger verbinden und fortfahren, um sicherzustellen, dass Sie jeden beliebigen Haltepunkt erreichen können, egal wie früh es in Ihrem Skript ist.Starten von Chrome mit JS-Skripten, die beim Start angehalten wurden

Gibt es in Chrome/Chrome Debugging Protocol ähnliche Funktionen?

Ich verwende einen externen Debugger, um JS in Chrome zu debuggen. Chrome wird über die Befehlszeile gestartet, wobei das Remote-Debugging aktiviert ist und auf einen lokalen Server mit meiner Website/App verweist. Sobald Chrome gestartet ist, wird der Debugger an die Seite angehängt, aber das braucht Zeit - bis der Debugger angeschlossen ist, wurden die Skripts schon fast ausgeführt, was bedeutet, dass ich keine Breakpoints im Lebenszyklus der Website/App erreichen kann.

Ich dachte an das Hinzufügen von debugger; Anweisungen am Anfang jedes Skripts, aber das würde im Laufe der Zeit ärgerlich sein. Ich denke auch, dass die Chrome-Dev-Tools für debugger; Statements offen sein müssen, um tatsächlich zu pausieren, damit das nicht mal funktioniert.

Antwort

1

In Chrome DevTools können Sie 'Event Listener Breakpoints' verwenden, um zu erzwingen, dass die Ausführung bei 'Script First Statement' angehalten wird. Es gibt andere, wie load, die etwas später passiert. Sie können dann die Ausführung fortsetzen, bis die relevanten Haltepunkte erreicht werden.

Event Listener Breakpoints

+0

Wissen Sie, ob es einen Weg gibt diese Checkbox von Befehlszeilenargumente zu steuern, wenn Nachricht Chrome, oder vielleicht über ein Chrome-Debugging-Protokoll startet? Da ich einen externen Debugger verwende, müsste ich dieses Kontrollkästchen von außerhalb der Chrome-Entwicklungstools aktivieren können. – jenkins

+0

Die ausgewählte Einstellung bleibt bestehen, bis Sie sie deaktivieren. Ich kenne Ihr Setup nicht, aber sagen Sie, dass ein Chrome-Host auf einem Computer mit dem Flag "--remote-debugging-port" ausgeführt wurde und Sie Ihre App öffnen. Auf einem anderen Computer öffnen Sie Chrome und navigieren zum Host: Portadresse und wählen Sie die Registerkarte. Wenn Sie den Ereignislistener-Haltepunkt auf dem Client festlegen und dann die App auf dem Host aktualisieren, sollte sie auf dem Client unterbrochen werden. Wenn Sie einen anderen Debugger mit dem Endpoint/JSON verwenden, dann ist es wahrscheinlich, dass der Debugging-Client die Möglichkeit hat, das erste Skript zu pausieren? –

+0

Interessant, dann sollte es eine Möglichkeit geben, den Breakpoint für den Event Listener remote zu setzen, da in Ihrem Beispiel der Chrome-Client eine Möglichkeit benötigt, den Chrome-Host zu benachrichtigen, dass er diesen Event pausieren soll. Nachdem ich mich schnell mit dem Chrome Debugging Protocol befasst habe, kann ich scheinbar nichts damit anfangen, aber es muss einen Weg geben ... Ich werde weiter nach – jenkins