VS代码:调试器永远不会脱离生成器功能

时间:2020-04-04 08:45:02

标签: typescript debugging visual-studio-code

VSC 1.43.2,TS 3.8.3,节点v13.11.0

使用默认的编译目标,TSC将生成器功能展开到switch语句中。然后,交互式调试器可以在每次调用生成器的next()方法时出入调用。

但是,当以保留生成器功能的JS编译目标为目标时,调试器可以进入调用以创建生成器,但是在生成器内部进行 stepping 绝不会导致调试器退出。

例如,如果您中断了对示例文件中gen()的调用,然后按F11进入生成器功能,则按F10的任何量都不会退出该功能。文件的其余部分将在调试器仍在生成器范围内的情况下执行。如果您在打给next()的电话时打断电话,然后按F11键,则行为相同。

这是VSC调试器的限制,还是我需要设置一些其他配置以获得更直观的交互式调试体验?

启动配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "some name",
            "program": "${file}",
            "outFiles": ["${workspaceFolder}/**/*.js"],
            "runtimeArgs": ["--experimental-modules", "--es-module-specifier-resolution=node"],
            "smartStep": true,
        }
    ]
}

TS配置:

{
    "compilerOptions": {
        "sourceMap": true,
        "target": "ESNext"
    },
}

TS文件示例:

function* gen() {
    for (let i = 0; i < 3; i++) {
        yield i;
    }
}

const x = gen();
const y = 2 + 2;
console.log(x.next());
console.log(x.next());
console.log(x.next());

0 个答案:

没有答案