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

Логи и диагностика

Панель Logs — то место, где выясняется, чем на самом деле заняты отладчик и адаптер. Когда что-то не работает, смотреть нужно сюда в первую очередь. Открывается по Ctrl+L.

Четыре источника в одной ленте

Лента сводит четыре категории, у каждой свой тумблер:

Категория Что несёт
Program stdout и stderr отлаживаемой программы
Session смены фазы, старт и смерть адаптера, отказы DAP-запросов
DAP полная трасса запросов и ответов
Adapter stderr самого адаптера (dlv, codelldb, debugpy)

DAP выключена по умолчанию как самая шумная. Записи при этом собираются независимо от тумблеров, поэтому включить её можно уже после аварии и всё равно увидеть, что произошло.

Как читать время

Время показывается от начала сессии — +MM:SS.mmm — и отсчёт начинается заново после разделителя ── новая сессия ──.

Относительное время точнее отвечает на вопрос, который на самом деле возникает перед зависшим отладчиком: сколько уже висит?

Долгий запрос сообщает о себе сам

Каждые 30 секунд неотвеченный запрос отмечается в категории SESSION:

+00:30.001 SESSION запрос `launch` идёт 30 s (mode=debug, program=/repo/cmd/api):
                   dlv (pid 43912) ещё не ответил; таймаут через 90 s
+01:00.002 SESSION запрос `launch` идёт 60 s (mode=debug, program=/repo/cmd/api):
                   dlv (pid 43912) ещё не ответил; таймаут через 60 s

Молчащий отладчик неотличим от зависшего, поэтому в строке есть всё, что нужно для решения: сколько уже ждём, сколько осталось, какой процесс держит ответ — по pid его видно в ps — и что именно запускается.

Буфер, копирование и сохранение

Лента держит последние 20 000 записей.

Действие Что делает
Copy кладёт в буфер обмена то, что видно сейчас, с учётом фильтров
Save пишет весь буфер, независимо от фильтров, в <проект>/.bugsaur/logs/<unix-мс>.log

Для отчёта о проблеме пользуйтесь Save: фильтры, скрывшие причину от вас, скроют её и от того, кто будет читать отчёт.

Прокрутка

Лента по умолчанию следует за хвостом. G отключает слежение, чтобы можно было читать, не уезжая вниз; Shift+G возвращает его и прыгает в конец.

Секреты в лог не попадают

Значения env не появляются ни в логе, ни в этой панели: тела DAP-запросов не печатаются. Это инвариант, а не побочное свойство — трассировку запросов нельзя расширять, не вычистив предварительно значения env.

Именно поэтому в сообщении о долгом запросе из тела берутся только mode и program.

Что приложить к сообщению об ошибке

  1. Save лога — весь буфер, а не скриншот видимой части.
  2. Нужный профиль из .bugsaur/config.toml.
  3. Версию адаптера (dlv version, codelldb --version, python3 -m debugpy --version).
  4. Чего вы ждали и что произошло вместо этого.

Подробнее о том, как превратить лог в диагноз: Диагностика → Чтение логов.