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

Точки останова

Точка останова говорит отладчику, где остановиться. В Bugsaur она принадлежит проекту, а не сессии — и не окну отладчика.

Где живут точки останова

Точки хранятся в <корень>/.bugsaur/breakpoints.json, рядом с конфигом проекта. Этот файл пишет редактор, а читает отладчик, поэтому:

  • они переживают перезапуск редактора;
  • они переживают перезапуск отладчика;
  • терминальный отладчик и Neovim видят один и тот же набор.

Файл личный, а не общий: .bugsaur/.gitignore держит его вне контроля версий.

Как ставить и снимать

В Neovim:

:ToggleBreakpoint

на текущей строке. С аргументом точка становится условной — программа остановится, только когда выражение истинно, на языке самой отлаживаемой программы.

Из командной строки точки передаются при запуске:

bugsaur gui --project . --break src/main.rs:15 --break src/db.rs:42

Явный --break перебивает сохранённый набор целиком

Без --break Bugsaur берёт набор из .bugsaur/breakpoints.json. С ним сохранённый набор не подмешивается — командная строка выигрывает полностью.

Снять точку из окна нельзя

Это сделано намеренно. Набором точек останова файла владеет редактор. Удаление из окна отладчика прожило бы только до следующего изменения в Neovim или до перезапуска, а управляющий элемент, который сам себя молча откатывает, хуже, чем его отсутствие. Ставят и снимают точки в редакторе.

Панель Breakpoints

Открывается по Ctrl+B. Точки показаны плоским списком, по строке на точку: файл:строка слева, приглушённый каталог справа. Каталог — от корня проекта, а если не влезает, у него отнимаются сегменты с начала (…/gateway/library-basic): именно хвост и различает соседние строки. Полный путь — в подсказке по наведению.

Кружок слева

Кружок показывает, что про эту точку известно от адаптера:

Кружок Что означает
Залитый адаптер подтвердил
Жёлтое кольцо не подтвердил — строка могла оказаться неисполняемой
Приглушённое кольцо ответа ещё нет

Приглушённое кольцо — обычное дело для PHP: пока Xdebug не подключился, набор в окне уже виден, но спросить про него некого.

Переход к исходнику

Enter по выбранной точке — или двойной клик — просит редактор открыть файл на нужной строке. Исполнение при этом не двигается, знак «здесь мы стоим» не ставится.

Без подключённого source frontend просьбе некуда идти, и в окне, запущенном из терминала, она ничего не делает.

Когда точка не срабатывает

Самая частая причина — неисполняемая строка: пустая, комментарий, объявление. Адаптер тогда либо переносит точку на следующую исполняемую строку, либо отказывается её подтвердить — об этом и сообщает жёлтое кольцо.

Полное дерево разбора: Диагностика → Точки останова не срабатывают.