Разработка¶
Этот раздел для тех, кто работает над 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 — представление.
Большинство проектных решений в этой кодовой базе — следствия этой фразы: сессия переживает редактор, конфиг читает отладчик, а не редактор, точки останова живут в проекте, а редактору никогда не отправляют переменные и содержимое стека на хранение.