Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Окно диспетчера наблюдения




Командная строка отладчика

Итак, вам должно быть ясно, что собой представляют выводимые результаты отладки сценария. А теперь вам нужно ознакомиться с назначением командной строки. Именно в этой строке вы можете вводить команды отладчика для перемещения по блокам кода, запроса и изменения содержимого переменных и выполне­ния команд MAXScript. Все это можно делать лишь в том случае, если выполнение сценария остановлено, т.е. в режиме прерывания (Break). На первый взгляд, в командной строке отладчика можно вводить все, что угодно, как и в приемнике команд. Но на самом деле в этой строке воспринимаются лишь некоторые пере­численные ниже команды.

• threads — перечисляет все потоки.

• setThread <целочисленный литерал> — задает указанный поток в качестве активного. По этой команде выводится также содержимое стека активного потока.

• setFrame <целочисленный литерал> — задает указанный кадр стека в качестве активного.

• locals {<строковый литерал>} — выводит содержимое переменных из активного потока и кадра стека либо содержимое отдельно указанной переменной.

• getVar <строковый литерал> — получает значение указанной переменной из активного или глобального кадра стека.

• setVar <строковый литерал> <выражение> — задает значение указанной переменной из активного или глобального кадра стека. Указанное выражение вычисляется в области действия активного кадра стека.


Приложение

• eval <выражение> — вычисляет выражение. Указанное выражение вычисляется в области действия активного кадра стека.

•? — выводит список команд отладчика.

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

При выборе кнопки Watch... (Наблюдение) в нижней части окна отладчика открывается окно Watch Manager (Диспетчер наблюдения). В этом окне выводится текущее значение любой переменной, введенной в столбце Variable.

 

 


Содержимое переменных выводится в этом окне после того, как сценарий ока­жется в режиме прерывания. При этом кнопка Break (Прервать) в нижней части окна отладчика недоступна, а кнопки Run (Выполнить) и Stop (Остановить) доступны. Щелкните на кнопке Run, чтобы возобновить выполнение сценария. А для остановки выполнения сценария щелкните на кнопке Stop. Кнопка Clear (Очистить) доступна всегда и просто очищает окно вывода из отладчика.

В окне Watch Manager можно запрашивать и изменять содержимое переменных, чтобы не делать этого из командной строки. В этом окне выводится содержимое только указанных вами переменных, чтобы не искать их в окне вывода из отладчика.

В сценариях иногда встречаются логические переходы, которые выполняются редко или не выполняются вообще. Например, длинный оператор if-then-else или case может содержать переходы к коду, который выполняется очень редко. (Оператор case реализует еще один способ управления ходом программы и может быть использован вместо условного оператора if-then-else.) В итоге получается плохо проверенный код сценария. Подобный недостаток устраняется путем изменения содержимого переменной условия непосредственно перед оператором if-then-else или case и последующей проверки каждого логического перехода в коде сценария. Благодаря этому существенно упрощается отладка сценария, осо­бенно если условное выражение глубоко скрыто внутри вызовов функций.

Аналогично командной строке отладчика окно Watch Manager может быть использовано для изменения содержимого переменных в режиме прерывания


Приложение

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

В следующем упражнении показано применение окна Watch Manager для изменения значения переменной во время выполнения сценария с целью проверки всех вариантов выполнения кода в операторе case.

1. Установите 3dsMax в исходное состояние. Откройте окно отладчика и выберите кнопку Watch, чтобы открыть окно Watch Manager. Откройте новое окно редактора сценариев и введите следующий сценарий:

h = 1

r = undefined

break()

r = case h of

(

1: (h * 2)

5: (h * 3)

"a": (h + "pple")

"b": (h + "at")

)

break()

2. Введите h и r в столбце Variable диалогового окна Watch Manager.

 

 


3. Сохраните сценарий и вычислите его. В окне Watch Manager сообщается, что переменная h имеет значение 1, а значение переменной r не определено.

 

 

 


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

4. Щелкните на кнопке Run в окне отладчика.

Как видите, выполнение сценария вновь остановлено. Это было сделано в последнем операторе break, введенном в конце данного сценария, чтобы вы могли просмотреть значение (в данном случае 2) переменной r в окне Watch Manager.


Приложение

 

 

 


5. Щелкните на кнопке Run, чтобы завершить сценарий.

Примечание. Если вы дошли по последнего оператора break в конце сценария, когда вывод результатов в приемнике команд завершился, значение переменной r будет по-прежнему выводиться как неопределенное. В таком случае вы можете просто выбрать кнопку Break, чтобы обновить содержимое окна Watch Manager.

6. Вычислите сценарий.

7. Как только выполнение сценария приостановится, воспользуйтесь командной строкой отладчика вместо окна Watch Manager, чтобы изменить значение переменной h.

Сначала запросите значение переменной h. Для этого введите в командной строке следующую команду и нажмите клавишу <Enter>:

getVar h

Введенная команда отображается в окне вывода из отладчика (Debugger Output Window). А в следующей строке этого окна выводится значение 1 указанной переменной.

8. Установите значение 5 переменной h. Для этого введите в командной строке следующую команду и нажмите клавишу <Enter>:

setVar h 5

Обратите внимание на то, что значение переменной h автоматически обновляется в окне Watch Manager.

9. Щелкните на кнопке Run.

Теперь значение переменной r равно 15.

 

 

 


Итак, вы успешно изменили ход сценария, организовав принудительное
выполнение второго оператора case с помощью отладчика.

10. Щелкните на кнопке Run, чтобы завершить сценарий.

11. Вычислите сценарий. Измените значение переменной h в окне Watch Manager,
введя строку "а". Присваивая строковый литерал переменной, обязательно
указывайте его в кавычках.


Приложение

12. Щелкните на кнопке Run.

Теперь переменная r содержит значение "apple" (яблоко).

13. Щелкните на кнопке Run, чтобы завершить сценарий.

14. Вычислите сценарий. Измените значение переменной h, введя на этот раз строку "b".

15. Щелкните на кнопке Run.

Теперь переменная r содержит значение "bat" (летучая мышь).




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 624; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.