当尝试调试代码时,单步执行方法会导致调试器在某些点无故停止。例如:
- promiseInitHookWithDestroyTracking
- promiseInitHook
(both来源不明)
当在2-5个“看不见的”断点之后跳过这些断点时,我通常会到达我试图调试的方法。
我试图让调试器跳过这些点。我使用的调试配置包含属性:(launch.json)
"skipFiles": [
"<node_internals>/**"
]
为什么会发生这种情况,我如何才能阻止它发生?
示例:
我创建了以下名为“test.js”的文件:
main();
async function main() {
let i = await func();
console.log(i);
}
async function func() {
return 1;
}
我的launch.json包含:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/test.js",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}
我正在添加屏幕截图来描述这个问题。
When stopped on“let i = await func();“然后步入我得到以下内容:(查看调用堆栈)
after step into
after first step over
after second step over
after third step over
我希望在进入后立即进入上一个屏幕截图中的状态,调试器通常这样做。
2条答案
按热度按时间wfsdck301#
显然这是VSCode最新版本中的一个已知错误。
https://github.com/microsoft/vscode/issues/179293
fzwojiic2#
原因
这是vscode-js-debug扩展(内置于VS Code)中的一个bug。请参阅问题单Error processing scopes: TypeError: cannot read properties of undefined (reading createScope ) #1643,该问题已通过pull请求fix: cannot read createScope of undefined #1644修复,其中connor 4312声明:
这是一个被暴露的竞争,因为我们正在等待堆栈跟踪中的脚本进入。Node.js中的Turns不会为其第一个上下文发出Runtime.executionContextCreated。
参考nodejs/node#47438
此错误影响VS Code的1.77.0至1.77.3版本。VS Code将在下一个版本中提升其vscode-js-debug版本,该版本将于2023年5月初发布
问题票证在VS Code存储库中复制为Javascript debugger pauses on promiseInitHookWithDestroyTracking (Unknown Source) when stepping into async function #179293。
解决方案
(pick一)