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

Отладка

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

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

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

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

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

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

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

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

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

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

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

  • Отладка через последовательный порт проверена на настоящей плате только на Linux. На macOS она должна работать, но на железе ещё не проверялась. На Windows она пока не поддерживается, и кнопка Upload (debug) недоступна. Обычные компиляция и загрузка работают везде, где работает arduino-cli.

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

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

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

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

У каждого проекта есть история версий, никак не связанная с отладчиком, — пункт меню Скетч > История версий открывает в правой боковой панели список всех сохранённых версий, от новых к старым (в той же панели открывается и ИИ-агент, Скетч > Агент; одновременно показывается что-то одно). Приложение автоматически сохраняет новую версию, когда вы возвращаетесь к скетчу после перерыва (настраивается в Настройки > Версионирование…, по умолчанию — три часа) — она фиксирует скетч ровно таким, каким вы его оставили, до того как вступит в силу следующее изменение, а не по таймеру во время активного редактирования. Текущую версию в любой момент можно назвать, чтобы отметить её как настоящую контрольную точку — автосохранённые версии по умолчанию скрыты за переключателем «Показывать автосохранённые версии», чтобы список оставался читаемым.

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

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

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