【问题标题】:Debug extension pauseRequest not called未调用调试扩展 pauseRequest
【发布时间】:2020-04-21 21:14:43
【问题描述】:

我正在开发调试器扩展。我把它放到它加载的地方,当在调试控制台中输入某些内容时,我会调用 evaluateRequest()。但是,当我单击暂停按钮时,不会调用 pauseRequest()。

class Session extends DebugSession {
    constructor() {
        super();

        this.setDebuggerLinesStartAt1(false);
        this.setDebuggerColumnsStartAt1(false);
    }

    initializeRequest(resp, args) {
        resp.body.supportsDataBreakpoints = false;
        resp.body.supportsBreakpointLocationsRequest = false;

        this.sendResponse(resp);
    }

    launchRequest(resp, args) {
        console.log('launchRequest');
        this.sendResponse(resp);
    }

    pauseRequest(resp, args) {
        console.log('pauseRequest');
        this.sendResponse(resp);
    }

    evaluateRequest(resp, args, req) {
        const text = req.arguments.expression;

        console.log(`evaluateRequest ${text}`);
        this.sendResponse(resp);
    }
}

class InlineDebugAdapterFactory {
    createDebugAdapterDescriptor(_session) {
        return new vscode.DebugAdapterInlineImplementation(new Session());
    }
}

module.exports.activate = (ctx) => {
    const factory = new InlineDebugAdapterFactory();

    ctx.subscriptions.push(vscode.debug.registerDebugAdapterDescriptorFactory('my-debugger', factory));
    ctx.subscriptions.push(factory);
}

我不知道如何弄清楚为什么没有调用 pauseRequest。有没有办法在按下暂停按钮时让 VSCode 中断,以便我可以单步执行?

编辑: 显然,暂停按钮在它知道来自 threadsRequest() 的线程被调用之前不起作用。我发现强制发生这种情况的唯一方法是发送 StoppedEvent。

有没有办法在运行状态下启动调试器?

【问题讨论】:

    标签: visual-studio-code vscode-debugger


    【解决方案1】:

    这感觉像是一个 hack,但它确实有效。在 launchRequest() 中,发送停止事件而不指定线程号。这将迫使它调用 threadsRequest() 并且暂停按钮开始工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      相关资源
      最近更新 更多