VS Code的Javascript调试器可以调试节点11的新“工作线程”吗?工作线程是在具有少量额外功能的Web工作者之后建模的,并且可以从新的worker_threads包中获得(请参阅https://nodejs.org/api/worker_threads.html)。除了节点的子进程之外,还可以使用SharedArrayBuffers形式的工作线程共享内存。
我的VS Code启动配置如下所示:
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
"runtimeArgs": [
"--experimental-wasm-threads",
"--experimental-worker"
],
"args": [
"-u", "tdd",
"--timeout", "100000",
"--colors", "${workspaceFolder}/test"
],
"internalConsoleOptions": "openOnSessionStart",
"autoAttachChildProcesses": true
}
我可以调试主节点脚本,但“autoAttachChildProcesses”标志无法附加到生成的关闭工作线程,也没有在工作线程内运行的代码中添加“调试器”语句。
他们提到参考文档中的工作线程尚不支持“inspector”包,所以我想这可以解释为什么会这样。
在所有这些可能性中,还有人还成功调试VS Code中的工作线程吗?
免责声明:下面的答案描述了我调试工作线程的经验,但没有使用VS Code,这是最初的问题。我认为无论如何都知道替代选项会很有用,因为从今天开始,调试工作线程的唯一选择就是Webstorm。
Webstorm选项
可以使用Webstorm调试工作线程:https://blog.jetbrains.com/webstorm/2018/10/webstorm-2018-3-eap-6/我已经尝试过它并且它工作得非常好(如上面链接中所述)。
Chrome工具
我尝试使用chrome dev工具调试工作线程,遵循调试Web worker的相同方法,但它不起作用。在调试Web worker时,它们在chrome工具中显示如下
不幸的是,工作线程没有。当工作线程运行时,调试器不显示它,并且不允许您放置断点或单步执行代码。我怀疑这可能是因为:https://github.com/nodejs/node/issues/26609
VS代码
VSC没有调试工作线程的功能。有趣的是,VCS也没有调试Web Workers的功能。这是他们的明确决定:https://github.com/Microsoft/vscode-chrome-debug/issues/675