Инструкции Отладки

Следующие инструкции служат для отладочных целей:

beep;
Издает короткий звук. Полезно при разработке функции поскольку позволяет быстро выяснять, была ли достигнута некоторая инструкция или некоторая функция была выполнена вообще. Звук можно давать через имя beep_sound, например:
sound beep_sound = ;

breakpoint;
Инструкция останавливает выполнение функции и активизирует отладчик(debugger). Игра останавливается, на экране в сокращенной форме показаны текущая инструкция или выражение, которое следует за контрольной точкой. Нажатием [Space] выполняется текущая инструкция и результат (если есть) появляется в начале строки. Строки скроллируются вверх и становятся видимой следующая линия кода. Дальнейшим нажатием [Space] инструкции выполняются строка за строкой, результаты каждого выражения могут быть исследованы. Отладочная информация показана предопределенным текстовым объектом _debug_txt, который может быть размещен где-нибудь на экране.
Нажатием [Ctrl-Space] отладчик отключается и возобнавляется обычное выполнение функции пока не будет достигнута та-же самая или другая контрольная точка. Нажатием [Esc] отладка отключается совсем для текущей сессии и все дальнейшие контрольные точки игнорируются. Контрольные точки также игнорируются в runtime-модуле. Обратите внимание что при размещении контрольных точек в событийных функцию случах или в первой часть действия сущности (перед первым wait), с другими сущностями могут случаться забавные вещи — они не обновляются в течение отладки, и таким образом могут появляться в неправильных местах (и оставаться там пока они не начнут двигаются снова) — это не бага отладки. Условные контрольные точки могут быть помещены простым добавлением условия if , подобно следующему:
if (key_b != 0) { breakpoint; } // breakpoint only if [B] is pressed
if (my == null) { breakpoint; } // breakpoint only if MY is an empty pointer
Для проверки переменных в процессе отладки можно использовать несколько строк в скрипте, или панель отладки(debug panel ) (см. учебник, пример debug.wdl), или могут быть добавлены фиктивные выражения:
temp = my.pan;
temp = vector.x;

Добавить комментарий