Адаптер отладки VSCode не вызывает launchRequest - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь изучить API отладчика и решил попробовать написать расширение отладчика для отладчика SBCL на практике. Я не уверен, почему весь мой код выполняет вызов initializeRequest и disconnectRequest.

Вот что у меня в пакете. json

        "debuggers": [
            {
                "type": "common-lisp",
                "label": "Common Lisp REPL",
                "initialConfigurations": [
                    {
                        "type": "common-lisp",
                        "name": "Common Lisp REPL",
                        "request": "launch"
                    }
                ]
            }
        ],

Мой класс Factory определен в своем собственном module,

const { DebugAdapterInlineImplementation } = require('vscode');

module.exports.Factory = class {
    createDebugAdapterDescriptor(session) {
        return new DebugAdapterInlineImplementation(new Session());
    }
};

Мой класс 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. Я создаю конфигурацию отладки, которая делает то, что она должна, и создает этот запуск. 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 печатается, но больше ничего. Окно отладки имеет синюю точку прогресса, которая проходит через него в oop бесконечно. Когда я нажимаю «Остановить отладку», я вижу, что DisnectRequest печатается.

Почему не вызывается configurationDoneRequest и launchRequest? Кроме того, куда LoggingDebugSession помещает файл журнала?

Обновление: когда я запускаю отладчик, загрузка ЦП увеличивается до 35%, поэтому он что-то делает. Когда я нажимаю паузу, почти каждый раз, когда она останавливается здесь в таймерах. js

  function processTimers(now) {
    debug('process timer lists %d', now); // Debugger pauses on this line
    nextExpiry = Infinity;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...