Отладка

Снимок экрана TIDE с пояснениями.

Запуск, пауза, перезагрузка

В режиме отладки целевое устройство может находиться в одном из четырёх состояний: RUN, PAUSE, BREAK и ABORT. Подробнее см. Состояния целевого устройства, исключения.

Кнопка Run в TIDE.Состояние RUN включается нажатием [F5] или выбором Debug > Run.

Кнопка Pause в TIDE.Состояния PAUSE и BREAK включаются при выполнении Debug > Pause. Кроме того, виртуальная машина переходит в состояние BREAK, дойдя до точки останова.

Кнопка Restart в TIDE.Debug > Restart перезагружает целевое устройство. Выполнение приложения автоматически не начнётся: устройство загрузится в состоянии PAUSE и будет ждать, пока вы нажмёте [F5].

Точки останова

Точки останова - это места в коде, где выполнение приостанавливается. Чтобы переключить точку останова (установить или снять), щёлкните на сером поле в левой части панели исходного кода.

Точку останова в строке, где находится ваш | курсор, также можно переключить клавишей [F9]. Конечно, есть и пункт меню: View > Breakpoints открывает удобную панель Breakpoints.

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

Переключать точки останова можно в любое время - даже когда целевое устройство выполняет приложение (RUN).

Каждая точка останова немного снижает скорость выполнения.

Указатель программы и стек

Когда целевое устройство находится в состоянии BREAK, TIDE показывает указатель программы. Это ярко-жёлтая строка (и маленький треугольник слева), которая выделяет следующую выполняемую строку.

Другой вид выделения - синим цветом - показывает места в программе, которые сейчас находятся в стеке. Синим выделена строка, которая будет выполнена следующей после возврата управления в соответствующую процедуру.

View > Call Stack открывает панель Call Stack и показывает текущую «вложенность» процедур.

Профилирование

Снимок экрана таймера TIDE.Каждый раз, когда выполнение останавливается, TIDE показывает время, прошедшее с начала или возобновления выполнения. Это позволяет профилировать приложения (то есть измерять время выполнения различных частей кода).

Пошаговая отладка

Вот что можно делать, когда устройство находится в состоянии BREAK:

Кнопка Step Into в TIDE.[F8] или Debug > Step Into выполняет строку, на которой стоит указатель. Если текущая строка вызывает процедуру, вы «шагнёте внутрь» неё. Так выполняется наименьшая возможная часть программы.

В редких случаях пошаговое выполнение не работает. Например, нельзя пройти шагами бесконечный цикл (скажем, label1: goto label1). Нажатие [F8] здесь равносильно нажатию [F5].

Кнопка Step Over в TIDE.[F10] или Debug > Step Over похоже на «step into», но если текущая строка вызывает процедуру, эта процедура выполняется целиком. Выполнение остановится на следующей строке после вызова процедуры.

Это помогает «сосредоточиться» на текущей процедуре, не вникая в мелкие подробности работы подчинённых процедур.

Кнопка Step Out в TIDE.[SHIFT]+[F11] или Debug > Step Out выполняет код до конца текущей процедуры. Выполнение остановится на следующей строке после строки, вызвавшей эту процедуру.

Кнопка Run to Cursor в TIDE.[CTRL]+[F10] или Debug > Run to Cursor выполняет весь код от указателя программы до строки, в которой сейчас находится курсор.

Кнопка Jump to Cursor в TIDE.[CTRL]+[F11] или Debug > Jump to Cursor пропускает весь код между указателем программы и строкой, в которой сейчас находится курсор, - выполнения не происходит.

Это очень полезная возможность, позволяющая экспериментировать при отладке.

Список наблюдения

Кнопка Add to Watch List в TIDE.Когда целевое устройство находится в состоянии PAUSE или BREAK, можно просматривать значения переменных и свойств объектов.

Командой Debug > Add to Watch List добавьте выражение на панель Watch (View > Watch). Обратите внимание на слово выражение: оно здесь неспроста - панель Watch умеет гораздо больше, чем просто показывать значения переменных.

Есть и подсказки Watch - достаточно навести мышь на переменную или свойство объекта, чтобы увидеть значение. Однако для массивов, структур и объединений это не работает - их можно просмотреть только на панели Watch.

Подсказки работают и на панелях Browser-Project и Browser-File.

Используя подсказки Watch, помните о текущей области видимости (контексте).

Локальные переменные

Когда целевое устройство находится в состоянии BREAK, панель Locals автоматически показывает текущие значения всех локальных переменных, видимых в текущей области видимости.

Отладочный вывод

Метод sys.debugprint отправляет сообщения из вашего приложения на панель Output в TIDE (View > Output). Это очень полезно для трассировки выполнения:

...
sys.debugprint("Branch 1\x0D\x0A")
...
sys.debugprint("Point 1, x="+str(x)+"\x0D\x0A") 'Send along the current value of x
...

По мере выполнения приложения панель Output будет принимать отладочные сообщения от вашего устройства:

Branch 1
Point 1,x=10

Состояние связи с целевым устройством

Во время отладки строка состояния в нижней части окна показывает состояние связи с целевым устройством:

Зелёный шарик в TIDE, показывающий, что связь активна.Зелёный кружок движется из стороны в сторону: всё хорошо - устройство отвечает.

Жёлтый шарик в TIDE, показывающий, что связь прервана.Жёлтый кружок не движется или движется медленно и с перебоями: возможно, что-то не так.

Красный шарик в TIDE, показывающий, что связь с целевым устройством потеряна.Кружок красный и совсем не движется: связь с устройством потеряна!

Завершение отладки

Кнопка Stop в TIDE.Нажмите [ESC] или выберите Build > Stop Build/Upload/Debug, чтобы полностью выйти из режима отладки. Выход не влияет на состояние выполнения на целевом устройстве.

Исходный материал Tibbo обновлён 11 июля 2022Оригинал на docs.tibbo.com · Сообщить об ошибке