it-swarm.com.de

So deaktivieren Sie im Knotendebugger "Pause in erster Linie"

Gibt es ein Befehlszeilenargument oder eine Umgebungsvariable, die die Funktion "Break on first line" des Knotendebuggers deaktiviert?

43

Gemäss dieser Ausgabe habe ich im Knoten Repo geöffnet, dies ist derzeit nicht möglich. Dies ist auch etwas, das die Knoten-Jungs nicht als eine Funktion ansehen, die es wert ist, zu implementieren, weil es irgendwie sinnlos erscheint. […] Das Anhängen an einen laufenden Prozess bewirkt genau "" dasselbe. Siehe den Rest der Diskussion in der erwähnten Ausgabe.

Wenn Sie der Meinung sind, dass Sie eine solche Funktion wünschen, stimmen Sie diesem zu, hinterlassen Sie einen Kommentar in der Github-Ausgabe, und falls keine Antwort vorliegt, öffnen Sie eine neue und veröffentlichen Sie sie ebenfalls hier.

23

Es gibt tatsächlich zwei Debugger-Konzepte im Knoten: den V8-Debugger (mit seinem TCP-basierten Protokoll) und einen Befehlszeilen-Debugger (CLI) für Knoten.

Wenn Sie node debug app.js ausführen, wird im Master-Knotenprozess eine Debugger-CLI ausgeführt, und für das debugged-Skript (node --debug-brk app.js) wird ein neuer untergeordneter Knotenprozess erzeugt. Die Option --debug oder --debug-brk wird verwendet, um den V8-Debugger im untergeordneten Prozess zu aktivieren.

Der Unterschied zwischen --debug und --debug-brk besteht darin, dass der letztere einen Haltepunkt in der ersten Zeile hinzufügt, so dass die Ausführung dort sofort anhält.

Ich würde dir diese Lösung vorschlagen:

  1. Wenn Sie einen untergeordneten Prozess von Ihrem Webserver aus erstellen, führen Sie node --debug anstelle von node debug aus. Auf diese Weise wird nur ein untergeordneter Prozess erstellt, der die Anwendung ausführt und nicht in der ersten Zeile angehalten wird.

  2. Jetzt können Sie ein beliebiges Debugging-Tool verwenden, das V8-Debuggerprotokoll - Node-eingebaute CLI-Debugger, Node-Inspector unterstützt, oder Sie können Ihr eigenes Debugger-Front-End (GUI) bei Bedarf implementieren. (Ich vermute, dies ist das, was Sie durch Ausführen des CLI-Debuggers im Hintergrund erreichen möchten.)

    Wenn Sie sich für die Verwendung der integrierten CLI entschieden haben, rufen Sie einfach einen weiteren untergeordneten Prozess auf und teilen Sie dem CLI-Debugger des Knotens mit, die Verbindung zu dem in Schritt 1 gestarteten Prozess herzustellen:

    node debug localhost:5858

    und weiter wie bisher.

30

Dies habe ich bei der Suche nach der Antwort selbst gefunden - Sie können einfach laufen 

node-debug --debug-brk=0 (progname)

Hoffe das hilft jemandem.

8
jnadro52

Schreiben Sie eine Chrome-Erweiterung, um auf die Start-Schaltfläche zu klicken

1. Führen Sie die Shell aus

mkdir run_as_devtools
cd run_as_devtools
touch manifest.json
touch run_as_devtools.js

2. Bearbeiten Sie die Dateien

run_as_devtools.js:

if (location.protocol === 'chrome-devtools:' && location.href.match(/ws=localhost/))(function () {
    'use strict';
    setTimeout(function () {
        try {
            document.querySelector('html /deep/ .long-click-glyph').click();
        } catch (e) {
            console.log(e);
        }
    }, 500);    
})();

manifest.json: (verwendet den Schlüssel von chromevox, also nicht mit chromevox)

{
   "content_scripts": [{
      "js": [ "run_as_devtools.js" ],
      "matches": [ "<all_urls>" ]
   }],
   "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB",
   "manifest_version": 2,
   "name": "Elevated Devtools extension",
   "version": "1.0"
}

3. Installieren Sie die Erweiterung

Chrome-Einstellungen - Weitere Tools - Erweiterungen - Entwicklermodus - Ungepackte Erweiterung laden - Ordner "run_as_devtools" auswählen

P.S. Verwenden Sie es besser mit dem Node Inspector Manager https://stackoverflow.com/a/43018133/4831179

Referenz: https://stackoverflow.com/a/17044405/4831179

1
blackmiaool

Ich habe dasselbe Problem gelöst, indem ich von Knoten v6 zu v7 gewechselt habe

1
Sami

Ähnlich wie bei blackmiaool, aber einfacher: Mit dem Knoten v8 können Sie das Skript mit --inspect starten. Wenn Sie den folgenden Code enthalten, gelangen Sie beim Öffnen des Debug-Fensters in Chrome devtools direkt zum Debugger-Punkt. Außerdem können Sie asynchronen Code ausführen, indem Sie auf die Schaltfläche "Weiter" klicken, wodurch Ihr Code ausgeführt werden kann, bevor Sie zur Replik zurückkehren:

// app_Shell.js

var UserModel = require("./some_user_model");

function looper() {
    var Tmp = { UserModel: UserModel };
    debugger;
    setTimeout(looper, 100);
}
looper();

Und in einem Shell-Skript können Sie Folgendes tun:

echo "Click the 'Open dedicated DevTools for Node' link"
python -mwebbrowser about:inspect
node --inspect app_Shell.js

Siehe hier für mehr Info

0
AJP