Ich habe vor kurzem den Artikel Multi-Target-Electron-Debugging mit VSCode gelesen, dessen URL https://kwonoj.github.io/de/post/multi-target-dbg-electron-vscode/ lautet, und habe dazu geführt, dass es nahtlos in einer Oracle VM VirtuaBox funktioniert Manager, der das Betriebssystem RedHat Linux 7.1 mit Elektron 1.8.2, Knoten v8.9.4, vscode 1.17 und Firefox unter Verwendung des Inspector-Protokolls enthält. Hier ist mein launch.json, der Haltepunkte in main.js und main.cpp, einem C ++ - Addon, setzt, das berechnet, ob eine Ganzzahl eine Primzahl ist.
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type":"cppdbg", "program": "/home/hellodev/Downloads/node-v6.11.1-linux-x64/bin/node" "args": [ "--inspect-brk=5858", "main.js" ], "request": "launch", "stopAtEntry": false, "cwd": "$", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "serverLaunchTimeout": 50000 }, { "type": "node", "request": "attach", "timeout": 10000, "name": "Attach Program", "port": 5858, "protocol": "inspector" }, { "type":"node", "request":"launch", "name":"Electron Main", "runtimeExecutable":"/home/hellodev/node-cpp-addons/node_modules/electron/dist/electron" "protocol":"inspector" } ], "compounds": [ { "name": "Server/Client", "configurations": ["Electron Main","(gdb) Launch","Attach Program"] } ] }
Wie könnte ich diesen Artikel auch in demselben Oracle VM VirtuaBox Manager, der das Betriebssystem RedHat Linux 7.1 enthält, erweitern, um das ältere Protokoll, electron 1.6.7, node v6.11.1, vscode 1.17 und firefox zu verwenden, und wie würde das überarbeitete launch.json aussehen mögen?
Ohne Erfolg versuchte ich eine Elektronenvorauslösungstask, deren Aufgaben.json unten gezeigt wird. Der Grund für die Vorversuchstaskaufgabe ist, dass runtimeExecutable für das Inspektorprotokoll und nicht für das Legacyprotokoll reserviert ist. Der Prelaunch-Task verursacht jedoch einen Laufzeitfehler EADDRESSINUSE: Port 5858.
{ "version": "1.6.7", "command": "electron", "isShellCommand": true, "args": [ "--remote-debugging-port=5858", "$/main.js", ] }
und erhielt die Fehlermeldung "Verbindung zum Laufzeitprozess kann nicht hergestellt werden: Grund: Socket wurde von einer anderen Partei beendet", als ich die folgende launch.json mit dem grünen vscode-Pfeil zum Ausführen einer zusammengesetzten Startkonfiguration verwendete.
"configurations": [ { "name": "(gdb) Launch", "type":"cppdbg", "program": "/home/hellodev/Downloads/node-v6.11.1-linux-x64/bin/node" "args": [ "--inspect-brk=5858", "main.js" ], "request": "launch", "stopAtEntry": false, "cwd": "$", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "serverLaunchTimeout": 50000 }, { "type": "node", "request": "attach", "timeout": 10000, "name": "Attach Program", "port": 5858, "protocol": "legacy" }, { "type":"node", "request":"launch", "name":"Electron Main", "preLaunchTask": "electron", "protocol":"legacy", //Specify to use v8 inspector protocol "port": 5858, "timeout": 28000 } ], "compounds": [ { "name": "Server/Client", "configurations": ["Electron Main","(gdb) Launch","Attach Program"] } ] }
[Fenruary 24 2018] @Andre Weinand, ich zeige hier mein neuestes launch.json, das die Fehlermeldung "Verbindung zur Laufzeit kann nicht hergestellt wird; stellen Sie sicher, dass sich die Laufzeit im Debug-Modus" Legacy "befindet." anzeigen. Ich habe versucht, all Ihren früheren Empfehlungen zu folgen, stoße jedoch immer noch auf Probleme. Wenn ich auf den grünen vscode-Pfeil klicke, der der Server / Client-Compound-Startkonfiguration entspricht, wird "Electron Main" gestartet, die GDB-Haltepunkte jedoch nicht getroffen, die ich in main.cpp, einem C ++ - Addon, gesetzt habe. Ich verstehe, was Sie über das Einfügen von Debugger-Anweisungen in den C ++ - Addon-Quellcode sagen, aber ich würde es vorziehen, dies nicht zu tun. Wie kann ich meinen launch.json reparieren?
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type":"cppdbg", "program": "/home/xyzdev/Downloads/node-v6.11.1-linux-x64/bin/node" "args": [ "--debug=5858" "main.js" ], "request": "launch", "stopAtEntry": true, "cwd": "$", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "launchCompleteCommand": "None" }, { "type": "node", "request": "attach", "timeout": 10000, "name": "Attach Program", "port": 5858, "protocol": "legacy" }, { "type":"node", "request":"launch", "name":"Electron Main", "runtimeExecutable":"/home/xyzdev/node-cpp-addons/node_modules/electron/dist/electron", "runtimeArgs": [ "$/main.js", "--remote-debugging-port" //Set debugging port for renderer process ], "protocol":"legacy" } ], "compounds": [ { "name": "Server/Client", "configurations": ["Electron Main","(gdb) Launch","Attach Program"] } ] }
[26. Februar 2018] @Andre Weinand, ich habe gelesen, dass Sie am 10. Mai 2017 im github.com-Artikel https://github.com/Microsoft/vscode/issues/26411 Folgendes geschrieben haben: "Sie können entweder" Vermächtnis "verwenden. oder "Inspector" -Protokoll für Knotenversion> 6.3 und <8.0, aber Sie müssen sicherstellen, dass Sie das entsprechende Argument "--debug" oder "--inspect" verwenden.
Übrigens, diese Redundanz in der Launch-Config wird in der Mai-Version behoben: Sie müssen keinen Port mehr angeben, nur das Protokoll wird das Richtige tun. "Da ich die Knotenversion 6.11.1 verwende, ist dies der Fall > 6.3 und <8.0, fragte ich mich, ob ich unseren launch.json anstelle des Protokolls "Legacy" auf das Protokoll "inspector" umstellen könnte, um ein "nahtloses" Debugging zu erreichen, wie ich es mit Knoten 8.9.4 tun konnte. Vielen Dank