Диагностика: как понять, что сломалось¶
Отлаживать отладчик — отдельный навык, и состоит он в основном в том, чтобы знать, какой вопрос задать первым. Эта страница — дерево решений, страницы ниже — ответы.
Начните отсюда¶
Найдите первое утверждение, которое для вашей сессии ложно, и идите по нему.
1. Окно открывается
↓ нет → бинарник или адаптер
2. Сессия стартует и программа выполняется
↓ нет → адаптер или профиль
3. Программа где-то останавливается
↓ нет → точки останова
4. Остановка показывает правильный исходник
↓ нет → пути
5. Остановка показывает правильное состояние
↓ нет → сборка
| Симптом | Скорее всего | Страница |
|---|---|---|
| Окно вообще не появляется | bugsaur не там, где вы думаете, или у проекта нет конфига |
Адаптер не запускается |
| Окно открылось, ничего не происходит | адаптер не стартовал или launch отклонён |
Адаптер не запускается |
| Программа отрабатывает целиком | точка останова не привязалась или код не выполнялся | Точки останова не срабатывают |
| Останавливается, но исходника нет | отладчик и отлаживаемое расходятся в путях | Исходник не найден |
| Останавливается, но переменных нет | оптимизированная сборка или фрейм без отладочной информации | Точки останова не срабатывают |
| Neovim ничего не делает | плагин не подключён | Интеграция с Neovim |
Один инструмент отвечает на всё это¶
Каким бы ни был симптом, улики лежат в панели Logs — Ctrl+L.
- Включите категорию
Sessionи читайте сверху. Смены фазы, старт и смерть адаптера, отказы DAP-запросов — всё там. - Если этого мало, включите
Adapter— собственный stderr адаптера, где появляются жалобы, специфичные для языка. - И только потом
DAP, полную трассу запросов. Она шумная, но записи собираются и при выключенной категории, поэтому включить её можно постфактум и всё равно увидеть, что было.
Подробности: Чтение логов.
Три проверки, которые стоит сделать прежде всего¶
Они занимают меньше минуты и покрывают большую долю всех отказов.
Виден ли адаптер отладчику?
PATH того окружения, где запускается Bugsaur, не обязательно совпадает с вашим
шеллом — особенно когда окно запускает Neovim.
Существует ли program?
Для Rust и C/C++ это обязан быть собранный бинарник, и Bugsaur его не собирает.
Какой профиль на самом деле отработал?
:DebugStart <имя> выбирает явно; без имени берётся default из конфига.
Отладка не того профиля выглядит ровно как сломанный отладчик.
Когда ответ — «так и должно быть»¶
Часть неожиданностей — это задуманное поведение. Прежде чем копать дальше, проверьте, не попали ли вы в один из этих случаев:
| Неожиданность | Объяснение |
|---|---|
| Точку останова нельзя снять из окна | ими владеет редактор — Точки останова |
| Запуск теста игнорирует сохранённые точки | так задумано — Тест под курсором |
cwd и env ничего не делают для PHP |
адаптер ничего не запускает — PHP |
| Rust за вас не собирается | собирается только Go — Rust |
| Незнакомый ключ конфига останавливает запуск | схема закрытая — Настройка |
gui_theme ничего не меняет |
выигрывает [ui] проекта — Интерфейс |