Visual studio code VSCode调试适配器未调用启动请求
我试图学习调试器API,并决定尝试为SBCL调试器编写一个调试器扩展,作为实践。我不知道为什么我的代码只调用initializeRequest和disconnectRequest 下面是我的package.json中的内容Visual studio code VSCode调试适配器未调用启动请求,visual-studio-code,vscode-extensions,vscode-debugger,Visual Studio Code,Vscode Extensions,Vscode Debugger,我试图学习调试器API,并决定尝试为SBCL调试器编写一个调试器扩展,作为实践。我不知道为什么我的代码只调用initializeRequest和disconnectRequest 下面是我的package.json中的内容 "debuggers": [ { "type": "common-lisp", "label": "Common Lisp REPL", "
"debuggers": [
{
"type": "common-lisp",
"label": "Common Lisp REPL",
"initialConfigurations": [
{
"type": "common-lisp",
"name": "Common Lisp REPL",
"request": "launch"
}
]
}
],
我的工厂类在它自己的模块中定义
const { DebugAdapterInlineImplementation } = require('vscode');
module.exports.Factory = class {
createDebugAdapterDescriptor(session) {
return new DebugAdapterInlineImplementation(new Session());
}
};
const { LoggingDebugSession } = require('vscode-debugadapter');
module.exports.Session = class extends LoggingDebugSession {
constructor() {
super('common-lisp-debug.txt');
}
initializeRequest(response, args) {
console.log('initializeRequest');
response.body = {
supportsConfigurationDoneRequest: true,
};
this.sendResponse(response);
}
disconnectRequest(response, args) {
console.log('disconnectRequest');
}
configurationDoneRequest(response, args) {
console.log('configurationDoneRequest');
super.configurationDoneRequest(response, args);
}
launchRequest(response, args) {
console.log('launchRequest');
this.sendResponse(response);
}
};
我的课程在自己的模块中
const { DebugAdapterInlineImplementation } = require('vscode');
module.exports.Factory = class {
createDebugAdapterDescriptor(session) {
return new DebugAdapterInlineImplementation(new Session());
}
};
const { LoggingDebugSession } = require('vscode-debugadapter');
module.exports.Session = class extends LoggingDebugSession {
constructor() {
super('common-lisp-debug.txt');
}
initializeRequest(response, args) {
console.log('initializeRequest');
response.body = {
supportsConfigurationDoneRequest: true,
};
this.sendResponse(response);
}
disconnectRequest(response, args) {
console.log('disconnectRequest');
}
configurationDoneRequest(response, args) {
console.log('configurationDoneRequest');
super.configurationDoneRequest(response, args);
}
launchRequest(response, args) {
console.log('launchRequest');
this.sendResponse(response);
}
};
My extension.js在激活调用中包含此代码
const factory = new Factory();
ctx.subscriptions.push(vscode.debug.registerDebugAdapterDescriptorFactory('common-lisp', factory));
if ('dispose' in factory) {
ctx.subscriptions.push(factory);
}
我开始调试扩展,这将打开EDH窗口。我创建了一个调试配置,它执行它应该执行的操作,并创建了这个launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "common-lisp",
"name": "Common Lisp REPL",
"request": "launch"
}
]
}
当我从那里启动调试器时,我看到initializeRequest被打印出来,但没有其他内容。调试窗口有一个蓝点进程,它在一个循环中无限期地穿过它。当我单击停止调试时,我看到disconnectRequest被打印出来
为什么没有调用configurationDoneRequest和launchRequest?此外,LoggingDebugSession将日志文件放在哪里
更新:当我启动调试器时,CPU使用率跳到35%,所以它正在做一些事情。当我点击pause时,几乎每次它都停在timers.js中
function processTimers(now) {
debug('process timer lists %d', now); // Debugger pauses on this line
nextExpiry = Infinity;
我也有同样的问题,尽管我的调试适配器服务器是用Java编写的。原来我没有在
初始化
请求期间/之后发送初始化
事件,请参阅DAP文档中关于的部分
编辑:规格说明初始化
事件必须在初始化
请求之后发送。VSCode可以从attach
请求发送它