Node.js 调试 - 无法附加调试器子进程
Posted
技术标签:
【中文标题】Node.js 调试 - 无法附加调试器子进程【英文标题】:Node.js debugging - cannot attach debugger subprocesses 【发布时间】:2018-08-15 13:10:49 【问题描述】:基本上,我无法将 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 1.20.1 版(最新) 节点版本 8.9.1
【问题讨论】:
【参考方案1】:这原来是一个错误 -
https://github.com/Microsoft/vscode/issues/45320
现已在 Insiders 中修复,应该很快就会稳定。
【讨论】:
以上是关于Node.js 调试 - 无法附加调试器子进程的主要内容,如果未能解决你的问题,请参考以下文章
无法从 WebStorm 调试远程 docker node.js 应用程序
Node.js:如何附加到正在运行的进程并使用控制台调试服务器?
Node.js:如何附加到正在运行的进程并使用控制台调试服务器?
docker-compose 用于将 VS Code 中的 node.js 调试器附加到 WSL docker 中的节点进程