Как отладить дочерний процесс Node.JS в коде Visual Studio?
Как отлаживать дочерний процесс Node.JS в VS Code?
Вот пример кода, который я пытаюсь отладить:
var spawn = require('child_process').spawn;
var scriptPath = './child-script.js';
var runner_ = spawn('node', [scriptPath]);
3 ответа
Вы можете легко добавить новую конфигурацию запуска в launch.json, которая позволяет подключаться к экземпляру работающего узла с определенным портом:
{
"name": "Attach to Node",
"type": "node",
"address": "localhost",
"port": 5870,
}
Просто убедитесь, что вы создаете / запускаете процесс вашего узла с аргументом --debug или --debug-brk.
В вашей конфигурации запуска добавьте "autoAttachChildProcesses": true
как показано ниже
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"autoAttachChildProcesses": true,
"program": "${workspaceFolder}/index.js"
}
Ищите этот модуль npm child-process-debug.
Я создал 2 отдельные конфигурации запуска в vscode:
Один для мастер-процесса, другой для дочернего процесса
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858,
"address": "localhost",
"restart": false,
"sourceMaps": false,
"outFiles": [],
"localRoot": "${workspaceRoot}",
"remoteRoot": null
},
{
"name": "Attach child",
"type": "node",
"request": "attach",
"port": 5859,
"address": "localhost",
"restart": false,
"sourceMaps": false,
"outFiles": [],
"localRoot": "${workspaceRoot}",
"remoteRoot": null
}
Рабочий процесс выглядит следующим образом:
- Начать процесс главного узла с
--debug
переключатель командной строки$ node --debug master.js
- Прикрепить к
master.js
процесс узла с использованиемAttach
через панель отладки - Поместите точку останова в
child.js
процесс - Быстро отсоединиться от
main
обрабатывать и прикреплять кchild
процесс с использованиемAttach child
В целях отладки вы можете отложить отправку сообщений между процессами, используя setTimeout
// master.js
var child = child_process.fork(__dirname + './child.js')
setTimeout(function() {
child.send('...')
}, 5000)
Просто добавьте это в файл конфигурации отладчика
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
}
Чтобы прикрепить отладчик к идентификатору процесса. При запуске этой конфигурации будет предложен список процессов, в котором вы можете выбрать процесс, к которому вы хотите присоединить отладчик.