Visual studio code VSCode调试适配器未调用启动请求

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", "

我试图学习调试器API,并决定尝试为SBCL调试器编写一个调试器扩展,作为实践。我不知道为什么我的代码只调用initializeRequest和disconnectRequest

下面是我的package.json中的内容

        "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
请求发送它