КАТЕГОРИИ: Архитектура-(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) |
Окно вывода из отладчика
Команда прерывания Как правило, выполнение сценария прекращается при появлении ошибки, исключительной ситуации или при срабатывании оператора throw. Например, всякая попытка получить доступ к свойству неопределенной переменной приводит к ошибке, а попытка выполнить деление на нуль — к исключительной ситуации и останову сценария. Метод throw также приводит к приостановке выполнения Приложение сценария. В отладчике внедрен новый метод, позволяющий останавливать или прерывать выполнение сценария вручную. Это так называемая функция прерывания, или контрольного останова. Её синтаксис довольно прост: <ok> Break() Данная функция возвращает постоянное значение "OK" и не воспринимает параметры, а просто останавливает выполнение сценария в данной точке. Если окно отладчика настроено на открытие по команде прерывания, то оно открывается при остановке сценария. Если выполнение сценария прекращается по ошибке или контрольному останову, информация о сценарии выводится из отладчика в специальное окно DebuggerOutputWindow. При этом отладчик запрещает доступ к пользовательскому интерфейсу 3dsMax, приемнику команд и любым открытым окнам редактора MAXScript Editor. Для того чтобы использовать отладчик, выполните следующее упражнение. 1. Установите 3dsMax в исходное состояние. 2. Откройте сначала отладчик, а затем диалоговое окно Debugger Parameters. 3. Установите флажок Stay On Top. 4. Откройте новое окно редактора сценариев и введите следующий фрагмент кода: ( a = 0 for i = 1 to 10 do ( a += 1.5 ss = i * 2 if ss == 18 do break() ) ) 5. Сохраните сценарий в файле debugger.ms. 6. Вычислите сценарий. Когда индекс цикла for достигнет 9, значение переменной ss станет равным 18 и будет вызвана команда прерывания. Затем в окне вывода из отладчика появится следующая информация: # **thread data: threadID:2848 **[stacklevel: 0] **In i loop; filename: C:\Program Files\3DSMax8\Scripts\debugger.ms; position: 89 **member of: anonymous codeblock --Parameters: --i: 9 --Locals: --SS:18 Приложение --i: 9 --Externals: --owner: <CodeBlock: anonymous> --a: 13.5 --Owner: --Locals: --a: 13.5 --Externals: **[stack level: 1] **called from anonymous codeblock; filename: C:\Program Files\3DSMax8\Scripts\debugger.ms; position: 93 --Locals: --a: 13.5 --Externals: **[stack level: 2] **calledfromtop-level Первая строка результатов отладки содержит идентификационный номер 2848 текущего потока (у вас этот номер может быть другим). Чаще всего идентификационные номера потоков не нужны для отладки, поэтому они здесь и не рассматриваются. Далее выводятся все уровни и кадры стека, называемые также блоками кода, заключенного в круглые скобки. Для каждого блока кода в MAXScript создается отдельный кадр стека, располагаемый в том порядке, в каком данный блок кода вызывается. Каждый кадр стека нумеруется начиная с нуля, соответствующего вершине стека (или последнему блоку кода). Таким образом, результаты отладки показывают, что прерывание сценария произошло в следующей строке кода: **[stacklevel: 0] Этот кадр стека связан с циклом for. Поэтому цикл for указывается во второй строке результатов отладки: **In i loop; filename: C:\Program Files\3DSMax8\Scripts\debugger.ms; position: 89 В этой строке указываются имя файла сценария и местоположение знака относительно начала файла, в котором произошло прерывание. В последующих строках результатов отладки перечисляются различные переменные, используемые в данном цикле for. • Под заголовком Parameters перечисляются любые параметры текущего блока кода. В данном случае индекс цикла i считается параметром блока кода, и поэтому указывается его значение 9. • Под заголовком Locals перечисляются любые локальные переменные, определенные внутри текущего блока кода. В данном случае перечислены переменные i и ss, а также их значения 9 и 18 соответственно. • Под заголовком Externals перечисляются любые внешние переменные из более обширной области действия, которые используются внутри текущего цикла for. В данном случае внешняя переменная a имеет локальную область действия и получает приращение на каждом шаге цикла for (ее значение равно 13,5). Приложение • Под заголовком Owner указывается владелец текущего блока кода. В данном случае сценарий выполнялся внутри пары круглых скобок. Такой блок кода называется анонимным, поскольку у него нет имени. Если бы это был конкретный сценарий Macro Script, у него было бы имя категории Macro Script и присоединяемое к нему через символ подчеркивания имя сценария Macro Script. После содержимого кадра стека нулевого уровня перечисляется содержимое выполнявшегося ранее кадра стека уровня 1, т.е. того блока кода, из которого вызывался цикл for: **[stacklevel: 1] Об этом свидетельствует следующая строка: **called from anonymous codeblock; filename: C:\Program Files\3DSMax8\Scripts\debugger.ms; position: 93 Далее указывается содержимое второго уровня стека, который соответствует глобальной области действия и называется верхним уровнем: **[stack level: 2] **called from top-level
Дата добавления: 2014-10-15; Просмотров: 682; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |