Точки останова¶
Точка останова говорит отладчику, где остановиться. В Bugsaur она принадлежит проекту, а не сессии — и не окну отладчика.
Где живут точки останова¶
Точки хранятся в <корень>/.bugsaur/breakpoints.json, рядом с конфигом проекта.
Этот файл пишет редактор, а читает отладчик, поэтому:
- они переживают перезапуск редактора;
- они переживают перезапуск отладчика;
- терминальный отладчик и Neovim видят один и тот же набор.
Файл личный, а не общий: .bugsaur/.gitignore держит его вне контроля версий.
Как ставить и снимать¶
В Neovim:
на текущей строке. С аргументом точка становится условной — программа остановится, только когда выражение истинно, на языке самой отлаживаемой программы.
Из командной строки точки передаются при запуске:
Явный --break перебивает сохранённый набор целиком
Без --break Bugsaur берёт набор из .bugsaur/breakpoints.json. С ним
сохранённый набор не подмешивается — командная строка выигрывает полностью.
Снять точку из окна нельзя¶
Это сделано намеренно. Набором точек останова файла владеет редактор. Удаление из окна отладчика прожило бы только до следующего изменения в Neovim или до перезапуска, а управляющий элемент, который сам себя молча откатывает, хуже, чем его отсутствие. Ставят и снимают точки в редакторе.
Панель Breakpoints¶
Открывается по Ctrl+B. Точки показаны плоским списком, по строке на точку:
файл:строка слева, приглушённый каталог справа. Каталог — от корня проекта, а
если не влезает, у него отнимаются сегменты с начала (…/gateway/library-basic):
именно хвост и различает соседние строки. Полный путь — в подсказке по
наведению.
Кружок слева¶
Кружок показывает, что про эту точку известно от адаптера:
| Кружок | Что означает |
|---|---|
| Залитый | адаптер подтвердил |
| Жёлтое кольцо | не подтвердил — строка могла оказаться неисполняемой |
| Приглушённое кольцо | ответа ещё нет |
Приглушённое кольцо — обычное дело для PHP: пока Xdebug не подключился, набор в окне уже виден, но спросить про него некого.
Переход к исходнику¶
Enter по выбранной точке — или двойной клик — просит редактор открыть файл на нужной строке. Исполнение при этом не двигается, знак «здесь мы стоим» не ставится.
Без подключённого source frontend просьбе некуда идти, и в окне, запущенном из терминала, она ничего не делает.
Когда точка не срабатывает¶
Самая частая причина — неисполняемая строка: пустая, комментарий, объявление. Адаптер тогда либо переносит точку на следующую исполняемую строку, либо отказывается её подтвердить — об этом и сообщает жёлтое кольцо.
Полное дерево разбора: Диагностика → Точки останова не срабатывают.