Перейти к содержимому
falang.ruEN

Отладка

Визуальный отладчик работает и на реальном железе: можно остановить скетч на любом операторе прямо во время его выполнения на плате, увидеть, на какой именно иконке произошла остановка, и посмотреть переменные, доступные в этой точке — тот же отладчик, что используется в workflow-продукте, только общается с платой через тот же USB-serial порт, через который был загружен скетч.

  • Кликните правой кнопкой по любому оператору (действие, лог, цикл, вызов другой функции, …) и выберите Поставить точку останова. У края иконки появится полый красный кружок.

  • Точки останова сохраняются рядом с проектом (файл .falang-debug.json рядом с project.json) — это персональная настройка разработчика, а не часть самого скетча, так что в сгенерированный файл .ino они не попадают.

  • Точку останова можно переключить в любой момент, в том числе пока отладчик уже подключён к плате: кружок становится сплошным, как только прошивка его подхватывает.

Откройте Build & Upload, выберите плату и порт и нажмите Upload (debug) вместо обычной кнопки Upload. Это соберёт отладочную сборку (с включённой трассировкой), загрузит её и подключится к плате — если точек останова ещё нет, сессия сразу останавливается на самом первом отслеживаемом операторе, иначе выполнение идёт до первой точки останова, на которую наткнётся.

Обычная (не отладочная) загрузка по-прежнему доступна — отладочные сборки строго опциональны, и лишняя инструментация полностью пропускается, если вы не выбрали именно Upload (debug).

  • Иконка, на которой остановилось выполнение, подсвечивается на холсте, а вид панорамируется к ней, если она за пределами экрана.

  • Боковая панель показывает переменные, доступные в этой точке, которые отладчик умеет показывать — обычные числа и булевы значения. Массивы, структуры и строки пока не передаются по проводу (см. «Что важно знать» ниже).

  • Продолжить — выполнение идёт до следующей точки останова.

  • Шаг с обходом — выполнение идёт до следующего оператора на той же глубине вызова: остановки внутри функции, вызванной с текущей строки, не будет, только после того как она вернёт управление.

  • Остановить — завершает сессию полностью.

  • Сегодня в качестве переменных можно показать только обычные числа и булевы значения — у прошивки пока нет способа передать массив, структуру или строку по serial-каналу. Остальная часть отладчика (точки останова, пауза, шаги) при этом работает как обычно.

  • Подключение отладчика перезагружает плату — это нормально (открытие serial-порта делает это на большинстве плат Arduino) и как раз то, что гарантирует: точки останова, поставленные до подключения, никогда не будут пропущены, даже внутри setup.

  • Отладочная сборка занимает больше флеш-памяти — один вызов трассировки на оператор плюс один вызов на каждую отслеживаемую переменную. На маленькой плате (32 КБ у Uno) большой скетч может не поместиться в отладочном режиме, даже если помещается в обычном — при загрузке об этом сообщат.

  • Пока отладчик подключён, serial-порт платы занят им — собственное использование Serial скетчем для чего-то ещё в это время не видно.

У каждого проекта есть история версий, никак не связанная с отладчиком, — кнопка «История» над вкладками (и пункт меню Sketch > Version History) открывает панель со списком всех сохранённых версий, от новых к старым. Приложение автоматически сохраняет новую версию, когда вы возвращаетесь к скетчу после перерыва (настраивается в Settings > Versioning…, по умолчанию — три часа) — она фиксирует скетч ровно таким, каким вы его оставили, до того как вступит в силу следующее изменение, а не по таймеру во время активного редактирования. Текущую версию в любой момент можно назвать, чтобы отметить её как настоящую контрольную точку — автосохранённые версии по умолчанию скрыты за переключателем «Показывать автосохранённые версии», чтобы список оставался читаемым.

  • Сравнить открывает две версии рядом — добавленные, удалённые и изменённые иконки подсвечиваются прямо на холсте, а для выбранной иконки показывается список изменившихся полей.

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

  • История версий хранится в настоящем git-репозитории (расположение репозитория и автор коммитов настраиваются в Settings > Versioning…) — по умолчанию это отдельный репозиторий, который создаётся внутри папки проекта при первом сохранении.