基本上我无法将VS Code调试器附加到我的Node应用程序中的子进程。它只附加到主进程。
我已阅读并遵循此处的官方文档 - https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_automatically-attach-debugger-to-nodejs-subprocesses
我的节点代码使用群集模块来分叉一些工作者。非常标准,它遵循集群示例代码。
if (cluster.isMaster) {
console.log(`Master process ${process.pid} starting...`);
for (let i = 0; i < numCPUs && i < maxNumThreads; i++) {
cluster.fork(); // Create a worker
}
} else {
startClusterWorkers();
}
function startClusterWorkers() {
// xxxxxx
}
我的launch.json已经定义了autoAttachChildProcesses。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch app.js",
"program": "${workspaceFolder}\\app.js",
"restart": true,
"autoAttachChildProcesses": true,
// "console": "integratedTerminal"
},
{
"type": "node",
"request": "launch",
"name": "Launch test.js",
"program": "${workspaceFolder}\\test.js"
}
]
}
但与官方文档不同,子进程不会出现在调用堆栈或浮动调试器控件中。调试器控制台也没有说出有关子进程的任何信息。当然,子进程中设置的断点(上面的startClusterWorkers()
函数)不起作用。
Debugging with inspector protocol because Node.js v8.9.1 was detected.
node --inspect-brk=31761 app.js
Debugger listening on ws://127.0.0.1:31761/54919117-38ae-4455-82c6-e21ade314bdd
Master process 10096 starting...
任何想法,我做错了吗?
VS Code ver 1.20.1(最新) 节点版本8.9.1
答案 0 :(得分:0)