Быстрый старт¶
Кратчайший путь от уже существующего проекта до окна отладчика.
1. Описать, что отлаживать¶
В корне своего проекта:
Команда ищет вверх по дереву маркер языка — Cargo.toml, go.mod,
composer.json или pyproject.toml / setup.py / requirements.txt — и пишет
.bugsaur/config.toml.
Сгенерированный файл — заготовка, а не догадка. Он появляется в git status и
предназначен для правки руками:
Каждый профиль говорит, что отлаживать и каким адаптером. Относительные пути считаются от корня проекта.
Конфиг принадлежит проекту, а не редактору
bugsaur из терминала и :DebugStart из Neovim читают один и тот же файл,
поэтому однажды исправленный профиль исправлен сразу для обоих.
2. Открыть окно¶
Окно открывается, адаптер стартует, программа выполняется и останавливается на строке 15.
Флаг --project указывает на любой каталог внутри проекта; корнем становится
ближайший вверх по дереву каталог с .bugsaur/. Профиль выбирается флагом
--profile <имя>, иначе берётся default.
Для Rust сборка не делается за вас
program у Rust указывает на артефакт сборки. Если его ещё нет, запуск
падает с program is not readable. Сначала соберите:
Go собирается автоматически, у Python и PHP собирать нечего.
3. Отлаживать¶
После остановки в окне видны стек, потоки и переменные в области видимости. Клавиши выполнения:
| Клавиша | Действие |
|---|---|
| F9 | продолжить |
| F8 | шаг с обходом |
| F7 | шаг внутрь |
| Shift+F8 | шаг наружу |
| Cmd+F2 / Ctrl+F2 | остановить |
F1 или ? показывает действующие привязки — те, что получились после применения всех слоёв конфигурации.
Каждая панель разобрана по очереди в Интерфейсе отладчика.
Без конфига проекта¶
Конфиг можно не заводить вовсе и назвать всё в командной строке:
bugsaur gui \
--adapter codelldb \
--program /absolute/path/to/program \
--break /absolute/path/to/source.rs:20
Это удобно для разового запуска. Учтите: без проекта нет и корня, поэтому рабочим каталогом становится тот, из которого вы запустили команду.
Дальше¶
Первая сессия отладки — тот же путь, но медленно: что должно произойти на каждом шаге и что делать, если не произошло.