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

Диагностика: как понять, что сломалось

Отлаживать отладчик — отдельный навык, и состоит он в основном в том, чтобы знать, какой вопрос задать первым. Эта страница — дерево решений, страницы ниже — ответы.

Начните отсюда

Найдите первое утверждение, которое для вашей сессии ложно, и идите по нему.

1. Окно открывается
        ↓ нет  → бинарник или адаптер
2. Сессия стартует и программа выполняется
        ↓ нет  → адаптер или профиль
3. Программа где-то останавливается
        ↓ нет  → точки останова
4. Остановка показывает правильный исходник
        ↓ нет  → пути
5. Остановка показывает правильное состояние
        ↓ нет  → сборка
Симптом Скорее всего Страница
Окно вообще не появляется bugsaur не там, где вы думаете, или у проекта нет конфига Адаптер не запускается
Окно открылось, ничего не происходит адаптер не стартовал или launch отклонён Адаптер не запускается
Программа отрабатывает целиком точка останова не привязалась или код не выполнялся Точки останова не срабатывают
Останавливается, но исходника нет отладчик и отлаживаемое расходятся в путях Исходник не найден
Останавливается, но переменных нет оптимизированная сборка или фрейм без отладочной информации Точки останова не срабатывают
Neovim ничего не делает плагин не подключён Интеграция с Neovim

Один инструмент отвечает на всё это

Каким бы ни был симптом, улики лежат в панели LogsCtrl+L.

  1. Включите категорию Session и читайте сверху. Смены фазы, старт и смерть адаптера, отказы DAP-запросов — всё там.
  2. Если этого мало, включите Adapter — собственный stderr адаптера, где появляются жалобы, специфичные для языка.
  3. И только потом DAP, полную трассу запросов. Она шумная, но записи собираются и при выключенной категории, поэтому включить её можно постфактум и всё равно увидеть, что было.

Подробности: Чтение логов.

Три проверки, которые стоит сделать прежде всего

Они занимают меньше минуты и покрывают большую долю всех отказов.

Виден ли адаптер отладчику?

command -v codelldb    # или dlv, php-dbgp-adapter

PATH того окружения, где запускается Bugsaur, не обязательно совпадает с вашим шеллом — особенно когда окно запускает Neovim.

Существует ли program?

ls -l "$(pwd)/target/debug/my-binary"

Для Rust и C/C++ это обязан быть собранный бинарник, и Bugsaur его не собирает.

Какой профиль на самом деле отработал?

:DebugStart <имя> выбирает явно; без имени берётся default из конфига. Отладка не того профиля выглядит ровно как сломанный отладчик.

Когда ответ — «так и должно быть»

Часть неожиданностей — это задуманное поведение. Прежде чем копать дальше, проверьте, не попали ли вы в один из этих случаев:

Неожиданность Объяснение
Точку останова нельзя снять из окна ими владеет редактор — Точки останова
Запуск теста игнорирует сохранённые точки так задумано — Тест под курсором
cwd и env ничего не делают для PHP адаптер ничего не запускает — PHP
Rust за вас не собирается собирается только Go — Rust
Незнакомый ключ конфига останавливает запуск схема закрытая — Настройка
gui_theme ничего не меняет выигрывает [ui] проекта — Интерфейс