【发布时间】: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