Недавно я прочитал статью «Многоцелевая отладка Electron с помощью VSCode», URL-адрес которой https://kwonoj.github.io/en/post/multi-target-dbg-electron-vscode/, и убедился, что она бесперебойно работает в Oracle VM VirtuaBox. Менеджер, содержащий операционную систему RedHat Linux 7.1 с электронным 1.8.2, узлом v8.9.4, vscode 1.17 и firefox с использованием протокола инспектора. Вот мой launch.json, который устанавливает точки останова внутри main.js и main.cpp, аддона C ++, который вычисляет, является ли целое число простым числом.
{ "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"] } ] }
Как я мог бы расширить эту статью в том же Oracle VM VirtuaBox Manager, содержащем операционную систему RedHat Linux 7.1, чтобы использовать устаревший протокол, Electron 1.6.7, узел v6.11.1, vscode 1.17 и Firefox, и что будет выглядеть в пересмотренном файле launch.json лайк?
Безуспешно я попытался выполнить предварительную задачу электронов, чьи tasks.json показан ниже. Причина, по которой я попытался выполнить предварительную задачу, заключается в том, что runtimeExecutable зарезервирован для протокола инспектора, а не для устаревшего протокола. Однако предварительная задача вызывает ошибку времени выполнения EADDRESSINUSE: порт 5858.
{ "version": "1.6.7", "command": "electron", "isShellCommand": true, "args": [ "--remote-debugging-port=5858", "$/main.js", ] }
и получил сообщение об ошибке «Не удается подключиться к процессу выполнения: причина: сокет завершен другой стороной», когда я использовал следующий файл launch.json с зеленой стрелкой vscode для запуска конфигурации составного запуска.
"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"] } ] }
[24 февраля 2018 года] @Andre Weinand, я показываю здесь мой новейший файл launch.json, который вызывает сообщение об ошибке «Не удается подключиться к среде выполнения; убедитесь, что среда выполнения находится в« устаревшем »режиме отладки». для отображения. Я пытался следовать всем вашим предыдущим рекомендациям, но все еще сталкиваюсь с проблемами. Поэтому, когда я нажимаю зеленую стрелку vscode, соответствующую конфигурации запуска составного соединения сервер / клиент, он запускает «Electron Main», но не достигает точек останова GDB, которые я установил в main.cpp, который является аддоном C ++. Я понимаю, что вы говорите о размещении операторов отладчика в исходном коде дополнения C ++, но я бы предпочел этого не делать. Как я могу исправить свой 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": "$", "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 февраля 2018 года] @ Андрей Вейнанд, я читал, что вы написали 10 мая 2017 года в статье на github.com https://github.com/Microsoft/vscode/issues/26411, в которой говорится: «Вы можете использовать любой« устаревший » или протокол «инспектора» для версии узла> 6.3 и <8.0, но вы должны убедиться, что используете соответствующий аргумент «--debug» или «--inspect».
Кстати, эта избыточность в конфигурации запуска будет исправлена в майской версии: вам больше не нужно будет указывать порт, просто протокол будет работать правильно. "Поскольку я использую версию узла 6.11.1, которая > 6.3 и <8.0, мне было интересно, смогу ли я переключить наш launch.json на протокол «инспектора» вместо «устаревшего» протокола для достижения «бесшовной» отладки, как я смог сделать с узлом 8.9.4? Спасибо