Недавно я прочитал статью «Многоцелевая отладка 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": "${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"]
}
]
}
Как я мог бы расширить эту статью в том же 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",
"${workspaceRoot}/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": "${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 февраля 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": "${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 февраля 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? Спасибо