Перейти к содержанию

Разработка

Этот раздел для тех, кто работает над Bugsaur

Здесь описано устройство изнутри. Если вы пришли отлаживать свою программу, вам нужны Работа с Bugsaur или Диагностика — ничто на этих страницах для использования отладчика не требуется.

Крейты workspace

Крейт За что отвечает
bugsaur бинарник: CLI, сборка сессии, каталог адаптеров, логи, IPC-сервер
dap-protocol типы DAP, сгенерированные из схемы протокола
dap-client DAP-клиент: транспорты, кадрирование, управление запросами
debugger-core доменное состояние: команды, события, редукция, модель сессии
debugger-ui окно: панели на egui, раскладка, клавиши, тема
project-config .bugsaur/config.toml, определение языка, .env, точки останова
source-frontend-protocol типы обмена между отладчиком и редактором
nvim-ipc сервер на Unix-сокете для source frontend
php-dbgp-adapter собственный DBGp-адаптер Bugsaur для PHP
test-discovery поиск теста по позиции курсора
fake-dap-adapter управляемый сценарием адаптер для тестов

Этот раздел

Страница О чём
Архитектура как части складываются вместе и кто чем владеет
Модель DAP как представлен и как ведётся протокол
IPC граница между отладчиком и редактором
Участие в разработке сборка, тесты и ловушка с тулчейном
Architecture Decision Records почему сделано именно так

Инвариант, из которого следует всё остальное

Сессией отладки владеет Bugsaur. Он единственный DAP-клиент и хозяин состояния. Редактор — заменяемый source frontend, а GUI — представление.

Большинство проектных решений в этой кодовой базе — следствия этой фразы: сессия переживает редактор, конфиг читает отладчик, а не редактор, точки останова живут в проекте, а редактору никогда не отправляют переменные и содержимое стека на хранение.