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

Интерфейс отладчика

Всё окно целиком и назначение каждой области.

Окно Bugsaur во время сессии отладки

Зоны

Окно делится на левую колонку и правую область, каждая — на две зоны:

+----------------+-----------------------------+
|                |                             |
|   top_left     |            main             |
|   ① Threads    |   ③ Variables · Watches     |
|                |     Evaluate · Logs         |
|                |     Inspector · Breakpoints |
+----------------+-----------------------------+  ← main_split
|                |                             |
|  bottom_left   |          bottom             |
|       ②        |       ④ Call Stack          |
+----------------+-----------------------------+
        ↑ left_split          ↑ left

По умолчанию слева во всю высоту стоит Threads, справа — стопка вкладок (Variables, Watches, Evaluate, Logs, Inspector, Breakpoints), под ней Call Stack.

Панели одной зоны становятся стопкой вкладок в порядке перечисления. Панель, не названная ни в одной зоне, не показывается вовсе — этим панели и убираются.

Состав зон и доли между ними задаёт проект секцией [ui.layout]: см. Настройка → Интерфейс.

Тулбар выполнения

Сверху: продолжить, шаг с обходом, шаг внутрь, шаг наружу, стоп, перезапуск. У каждой кнопки есть клавиша, работающая в любом месте окна — в том числе пока курсор стоит в поле ввода Evaluate или Watches.

Клавиша Действие
F9 продолжить
F8 шаг с обходом
F7 шаг внутрь
Shift+F8 шаг наружу
Cmd+F2 / Ctrl+F2 остановить

Что означает каждый шаг — на странице Шаги.

Фокус: одна активная панель

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

Аккорд Действие
Tab / Shift+Tab следующая и предыдущая панель по кругу
Ctrl+Tab / Ctrl+Shift+Tab то же самое
Ctrl+T Threads
Ctrl+C Call Stack
Ctrl+V Variables
Ctrl+W Watches
Ctrl+E Evaluate
Ctrl+L Logs
Ctrl+I Inspector
Ctrl+B Breakpoints

Цикл обходит всё окно, а не вкладки одной стопки. Панель, лежащая фоновой вкладкой, при переходе всплывает. Буква закреплена за панелью, а не за её местом в раскладке, и буква панели, которую раскладка не показывает, не делает ничего. Стартует фокус на Variables.

Почему Tab, а не стрелки

Собственный обход виджетов egui выключен: фокус не переходит на кнопки тулбара, и стрелки не таскают его между ними. Навигация в окне одна — по панелям и строкам, поэтому Tab и достался переключению панелей.

Движение внутри панели

Клавиши Действие
J / K, Down / Up строка вниз и вверх
G / Home, Shift+G / End начало и конец списка
H / L, Left / Right свернуть и развернуть узел дерева
Enter / Space применить
Esc выйти из поля ввода

Что означает «применить», зависит от панели:

Панель J / K Enter
Threads курсор по списку выбрать поток
Call Stack сразу выбирает фрейм
Variables выделение в дереве свернуть / развернуть узел
Watches курсор по выражениям войти в поле ввода (D / Del — удалить)
Evaluate войти в поле ввода
Logs прокрутка на строку
Breakpoints выделение точки открыть место в редакторе

Shift+G в Logs возвращает автопрокрутку за хвостом ленты, G её отключает.

У Variables есть собственный поиск: / открывает его, N и Shift+N ходят по найденному. Он достаёт и то, что ещё не раскрывали, — что именно он охватывает и чем ограничен, описано в разделе «Поиск» страницы Variables.

Пока курсор стоит в текстовом поле, буквы остаются буквами — навигацию они не трогают. Аккорды с модификатором, F-клавиши, Esc и Tab работают и оттуда: Tab частью выражения быть не может, а выход в соседнюю панель — то, чего от него и ждут.

Тема и шрифты

Окно несёт сразу обе схемы, тёмную и светлую; какую показать — решает проект:

[ui]
theme = "dark"   # dark (по умолчанию) | light | system

Умолчание — тёмная тема, а не системная. Окно отладчика открывается рядом с редактором, а не вместо него, и следовать настройке системы обязано только по явной просьбе — для этого есть system, с ним тема переключается на живой сессии.

Цвет в дереве переменных означает вид значения, а не важность строки: строки зелёные, числа и bool синие, nil приглушённый, тип серый в фигурных скобках. Контраст проверяется тестом для всех цветов на всех фонах в обеих темах — порог 4.5:1 для основного текста и 3:1 для вспомогательного.

Полные правила темы и приоритет относительно редактора — в Настройка → Интерфейс.

Справка прямо в окне

F1 или ? показывает действующие сейчас привязки — те, что получились после всех четырёх слоёв конфигурации, а не умолчания из документации. Если клавиша делает не то, чего вы ждёте, истина именно в этой панели.