Я пытаюсь изучить 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;