J'ai récemment lu l'article sur le débogage électronique multi-cibles avec VSCode dont l'URL est https://kwonoj.github.io/en/post/multi-target-dbg-electron-vscode/ et je l'ai fait fonctionner de manière transparente dans une machine virtuelle Oracle VM VirtuaBox. Gestionnaire contenant le système d'exploitation RedHat Linux 7.1 avec electron 1.8.2, node v8.9.4, vscode 1.17 et firefox à l'aide du protocole inspecteur. Voici mon launch.json qui définit les points d'arrêt dans main.js et main.cpp, un addon C ++ permettant de calculer si un entier est un nombre premier.
{
"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": "${workspaceFolder}",
"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"]
}
]
}
Comment puis-je également étendre cet article dans le même Oracle VM VirtuaBox Manager contenant le système d’exploitation RedHat Linux 7.1 afin d’utiliser le protocole hérité, electron 1.6.7, node v6.11.1, vscode 1.17 et firefox, et quelle apparence donnerait la version révisée launch.json comme?
Sans succès, j'ai essayé une tâche de prelaunch électronique dont le fichier tasks.json est présenté ci-dessous. La raison pour laquelle j'ai essayé une tâche de prelaunch est que runtimeExecutable est réservé au protocole de l'inspecteur plutôt qu'au protocole hérité. Cependant, la tâche de pré-lancement entraîne une erreur d'exécution EADDRESSINUSE: port 5858.
{
"version": "1.6.7",
"command": "electron",
"isShellCommand": true,
"args": [
"--remote-debugging-port=5858",
"${workspaceRoot}/main.js",
]
}
et j'ai reçu le message d'erreur «Impossible de se connecter au processus d'exécution: motif: le socket s'est terminé par un tiers» lorsque j'ai utilisé le fichier launch.json suivant avec la flèche verte vscode pour exécuter une configuration de lancement composée.
"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": "${workspaceFolder}",
"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"]
}
]
}
[24 janvier 2018] @Andre Weinand, je montre ici mon plus récent fichier launch.json qui provoque le message d'erreur "Connexion impossible à l'exécution; assurez-vous que celle-ci est en mode de débogage" traditionnel "." afficher. J'ai essayé de suivre toutes vos recommandations précédentes, mais je rencontre toujours des problèmes. Par conséquent, lorsque je clique sur la flèche verte vscode correspondant à la configuration de lancement composée Server / Client, il lance "Electron Main" mais n'atteint pas les points d'arrêt GDB que j'ai définis dans main.cpp, qui est un addon C ++. Je comprends ce que vous dites sur l'insertion d'instructions de débogueur dans le code source de l'additif C ++, mais je préférerais ne pas le faire. Comment pourrais-je réparer mon launch.json?
{
"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": "${workspaceFolder}",
"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": [
"${workspaceRoot}/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 février 2018] @Andre Weinand, j'ai lu que vous aviez écrit le 10 mai 2017 dans l'article de github.com https://github.com/Microsoft/vscode/issues/26411 qui disait : "Vous pouvez utiliser l'un ou l'autre" hérité " ou protocole "inspecteur" pour les versions de noeud> 6.3 et <8.0, mais vous devez vous assurer que vous utilisez l'argument correspondant "--debug" ou "--inspect".
En passant, cette redondance dans la configuration de lancement sera corrigée dans la version de mai: vous n’aurez plus besoin de spécifier de port, seul le protocole fonctionnera correctement. "Étant donné que j'utilise la version 6.11.1 du noeud, qui est > 6.3 et <8.0, je me demandais si je pouvais basculer notre launch.json sur le protocole "inspecteur" au lieu du protocole "hérité" pour obtenir un débogage "en continu" comme je pouvais le faire avec le noeud 8.9.4? Merci