Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 649; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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