Node.js调试 - 无法附加调试器子进程

时间:2018-03-07 12:19:36

标签: node.js visual-studio-code

基本上我无法将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

1 个答案:

答案 0 :(得分:0)

原来这是一个错误 -

https://github.com/Microsoft/vscode/issues/45320

现在它已在Insiders中修复,并且很快就会稳定下来。