typescript VSCode 1.77 JS调试器在单步执行异步函数时停止在“不存在”的断点上

roqulrg3  于 2023-04-22  发布在  TypeScript
关注(0)|答案(2)|浏览(144)

当尝试调试代码时,单步执行方法会导致调试器在某些点无故停止。例如:

  • 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
我希望在进入后立即进入上一个屏幕截图中的状态,调试器通常这样做。

wfsdck30

wfsdck301#

显然这是VSCode最新版本中的一个已知错误。
https://github.com/microsoft/vscode/issues/179293

fzwojiic

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一)

  • 您可以等到VS Code的下一个版本。
  • 您可以切换到vscode-js-debug的夜间通道。
  • 您可以降级到VS Code 1.76.2(它可能有自己的bug)。

相关问题