Параметры настройки отладчика
Доступ к отладчику
Отладчик MAXScript Debugger
Отладчик MAXScript Debugger, внедренный в версии 3dsMax 8, предназначен для оказания помощи в выявлении и устранении программных ошибок в сценарии. Такой отладчик состоит из нескольких инструментов, помогающих анализировать сценарии.
Этот раздел служит лишь введением в отладчик MAXScript Debugger, а сама отладка, в целом, представляет собой сложный процесс и требует некоторого опыта для полного освоения.
Раньше при аварийном завершении сценария приходилось полагаться на вывод результатов обратного отслеживания по стеку для определения состояния переменных и последовательности вызовов функций и обработчиков событий. Однако обратное отслеживание по стеку не всегда помогало. Например, можно было получить ошибку «Unknownproperty: «
in undefined» (Неизвестное свойство неопределенной переменной). Обнаружить неопределенную переменную было очень трудно, особенно если у функции было много таких переменных. Для разрешения подобных затруднений и отслеживания программных ошибок можно было бы попытаться использовать в сценарии несколько операторов print или format. Но это лишь усложнило бы код сценария.
В новом отладчике имеются инструменты, позволяющие решать упомянутые выше проблемы. Но сначала нужно научиться получать доступ к этому отладчику.
Окно отладчика MAXScript Debugger открывается из следующих меню.
• Из главного меню 3dsMax по команде MAXScript ⇨ Debugger Dialog
• Из меню Debugger приемника команд
• Из меню Debugger любого окна редактора сценариев
Когда окно отладчика MAXScript Debugger открывается в первый раз, оно имеет небольшие размеры. Но размеры этого окна можно изменить и сохранить вместе с его положением для последующего использования. Отладчик работает в автономном режиме по отношению к 3dsMax.
Для доступа к параметрам настройки отладчика выберите кнопку Config. (Настройка) в нижней части его окна. Откроется диалоговое окно MAXScript Debugger Parameters (Параметры отладчика).
Параметры настройки в этом диалоговом окне управляют отладчиком как при его открытии, так и в других режимах его работы. Непременно установите флажок Stay On Тор (Оставить сверху), чтобы окно отладчика случайно не оказалось позади окна 3dsMax. Дополнительные сведения о настройке параметров отладчика приведены в книге MAXScript Debugger справочного руководства по MAXScript.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
Using the MAXScript Debugger
The advantage of the MAXScript Debugger over using print/format is that when you hit the break, you can look at local variables, variables up the call tree (in each stack frame), and global variables. And if you can get to a scope via one of those, you can access variables in those scopes.
So, for example, you break in a scripted plug-in event handler. Normally you wouldnot see the scripted plug-in’s local variables or parameters. Using the Debugger you can not only see these, you can also change their value before continuing execution.
How many times have you gotten some sort of MAXScript error, and you couldn’t tell what exactly the problem was just by looking at the values printed in the error trace-back, but if you could do some more digging to see other variables you could (thus the adding of print/format statements in the hope that they give you enough info).
3ds Max is multithreaded, and when you hit a breakpoint there can be multiple scripts running in different threads. The usual case of this is when you hit a scripted plug-in or controller while rendering. If you hit a breakpoint or exception in this case, the Debugger will default to the thread that threw it. But if you broke by hitting the break button, then it defaults to the main thread. But you may want to see what’s running in a different thread, and can do so.
As you run a script and call functions, each function call creates its own stack frame. The stack frame simply contains the local variables associated with that function call. In each stack frame, the following variables are shown:
Parameters— the function arguments
Locals— the local variables
Externals— non-local variables used in the function
Owner— Parameters/Locals/Externals of the owner of the method
if you run the following code,
and then hit Break, you would get:
For level 0, first we have the function name (i loop), and then we say what owns the function. In this case its the code block defined by the outer parenthesis. This code block is anonymous because it doesn’t have a name. Other code blocks will.
if you drag the above code onto a toolbar to make a MacroScript, run the MacroScript and hit Break, the first couple of lines would look like:
Next thing shown is the Parameters, which for a for loop is just the for loop counter. The values shown here are the values passed to the function. Next are the Locals. There are 2- ss and i. Here, if a new value was assigned to variable i (the for loop counter), that new value would be shown. Next, the Externals are shown. These are variables that are used in the function, but are not local variables. They can be either defined in an outer scope, global scope, or some other outside scope. The owner variable allows you to access the owner of the function. If, for example, the function was in a scripted plug-in, the owner would be the scripted plug-in instance. Through this, you can get and set the owner’s variables.
Finally, if there is an owner, the information for the owner is shown. In this case it is not that important since the next stack level shows the same thing, but in general that is not true (functions in scripted plug-ins, MacroScripts, rollouts).
The next stack level dumps the info for the caller of the function, the anonymous code block.
Let’s say you wanted to change the value of variable ‘pi’. You can only change a variable if you can access the variable. In this case, you can access ‘pi’ from within the for loop function via: ‘owner.pi’
but if we had nested function calls, you wouldn’t be able toget to it that way. Instead, you would have to set the current stack level to the desired level and set the variable.
Compare the above to the error traceback from throwing the exception:
There is also a Stop button in the MAXScript Debugger. After doing a Break, if you hit Run you will continue executing the code, if you hit Stop, the script will stop running.
MAXScript Debugger
Господа, подскажите. После запуска Max 19 при переключение программ через (ALT + TAB), весит окошко «MAXScript Debugger». В диспетчере я такого процесса не нашел, это окно не как не реагирует, не открывается и не закрывается на «x». Я примерно понимаю что это за Debugger, но почему он там висит при открытие и не реагирует, нормально ли это?
Это отладчик скриптов. Возможно он находится за пределами рабочего стола. Помнится похожий глюк был с каким то из окон в предыдущих версиях, так же было открыто за пределами рабочего стола и сохранило в конфигах это положение.
Посмотрите в меню Scripting на тулбаре, чекнут ли пункт Debbuger Dialog и снять галочку, если стоит.
Либо скопировать эту команду в поле Listener (розовое поле в нижнем, левом углу) и нажать энтер.
actionMan.executeAction 0 «576»
Если окно дебагера было открыто, (в белой строке появится true, что значит команда выполнена) окно должно закрыться. после перезапустите макс и проверьте. По сути эта команда то же самое что и чек\унчек галочки в меню тулбара.
Галочка есть не всегда, я несколько раз перезапускал MAX и она всего раз появилась, убрав галочку либо открыв окно дебагера и закрыв он пропадает, но после перезапуска открывается вновь и висит также. Может где то есть автозапуск этой штуки?
Это отладчик скриптов. Возможно он находится за пределами рабочего стола. Помнится похожий глюк был с каким то из окон в предыдущих версиях, так же было открыто за пределами рабочего стола и сохранило в конфигах это положение.
Посмотрите в меню Scripting на тулбаре, чекнут ли пункт Debbuger Dialog и снять галочку, если стоит.
Либо скопировать эту команду в поле Listener (розовое поле в нижнем, левом углу) и нажать энтер.
actionMan.executeAction 0 «576»
Если окно дебагера было открыто, (в белой строке появится true, что значит команда выполнена) окно должно закрыться. после перезапустите макс и проверьте. По сути эта команда то же самое что и чек\унчек галочки в меню тулбара.
Галочка есть не всегда, я несколько раз перезапускал MAX и она всего раз появилась, убрав галочку либо открыв окно дебагера и закрыв он пропадает, но после перезапуска открывается вновь и висит также. Может где то есть автозапуск этой штуки?
Дебагер автономен. По идее, даже когда он запущен и вы закрываете макс, при следующем запуске он не будет чекнут и не должен запускаться. Вызов дебагера происходит либо вручную, либо из скрипта, где так же идет обращение к нему функцией. Но это только при отладке. Тут сложно сказать наверняка точную причину. Возможно автор какого то скрипта забыл удалить эту функцию, возможно глюк самого макса.
Создайте новый, текстовый документ и скопируйте этот код в него
if mxsdebugger.isDialogOpen == true then mxsdebugger.closeDialog()
скопируйте этот файл по пути
при запуске макса дебагер будет принудительно закрываться
Либо «глобальная панацея»
переименовываете папку ENU в ENU_BACK
это сбросит все настройки макса на дефолтные
Когда будете ставить кастомные скрипты, проверяйте после установки каждого перезапуском. Я более склоняюсь к тому, что вызов дебагера происходит из какого то скрипта.
Глобальная панацея не помогает. И так же не помог фокус с закрытием диалога дебагера через скрипт в автозапуске (
Дебагер автономен. По идее, даже когда он запущен и вы закрываете макс, при следующем запуске он не будет чекнут и не должен запускаться. Вызов дебагера происходит либо вручную, либо из скрипта, где так же идет обращение к нему функцией. Но это только при отладке. Тут сложно сказать наверняка точную причину. Возможно автор какого то скрипта забыл удалить эту функцию, возможно глюк самого макса.
Создайте новый, текстовый документ и скопируйте этот код в него
if mxsdebugger.isDialogOpen == true then mxsdebugger.closeDialog()
скопируйте этот файл по пути
при запуске макса дебагер будет принудительно закрываться
Либо «глобальная панацея»
переименовываете папку ENU в ENU_BACK
это сбросит все настройки макса на дефолтные
Когда будете ставить кастомные скрипты, проверяйте после установки каждого перезапуском. Я более склоняюсь к тому, что вызов дебагера происходит из какого то скрипта.
Глобальная панацея не помогает. И так же не помог фокус с закрытием диалога дебагера через скрипт в автозапуске (
Решил проблему? Такая же у меня
Дебагер автономен. По идее, даже когда он запущен и вы закрываете макс, при следующем запуске он не будет чекнут и не должен запускаться. Вызов дебагера происходит либо вручную, либо из скрипта, где так же идет обращение к нему функцией. Но это только при отладке. Тут сложно сказать наверняка точную причину. Возможно автор какого то скрипта забыл удалить эту функцию, возможно глюк самого макса.
Создайте новый, текстовый документ и скопируйте этот код в него
if mxsdebugger.isDialogOpen == true then mxsdebugger.closeDialog()
скопируйте этот файл по пути
при запуске макса дебагер будет принудительно закрываться
Либо «глобальная панацея»
переименовываете папку ENU в ENU_BACK
это сбросит все настройки макса на дефолтные
Когда будете ставить кастомные скрипты, проверяйте после установки каждого перезапуском. Я более склоняюсь к тому, что вызов дебагера происходит из какого то скрипта.
Глобальная панацея не помогает. И так же не помог фокус с закрытием диалога дебагера через скрипт в автозапуске (
Решил проблему? Такая же у меня
Такая же проблема, раньше ее не было, потом появилась в 2016 максе, удалил все под 0, поставил новенький 2020 и в нем такая же лабуда. Причем из за этой лабуды, 3д макс грузиться достаточно долго* Причем не 1 плагина не 1 скрипта не стоит
За 2 дня решения так и не найдено!. Спасибо NIK, что уделил время этой проблеме. Скорее всего тут только сносить винду и заного все ставить в надежде что его отпустит) так как никакие чисти и полный снос и удаление всего и вся в реестре не помогли. Болячка перекочевала из 2016 в 2020. Но что бы не раздражало это окошко, предлагаю Вам такой скрипт просто поставьте в папку /Autodesk\3ds Max 2020\scripts\StartupВот это файлик, просто вызывает диалоговое окно и тут же его закрывает.
3dddland
Спасибо за решение.
Установил Ваш скрипт, после этого окно пропало, но макс грузиться быстрее не стал)
3dddland
Спасибо за решение.
Установил Ваш скрипт, после этого окно пропало, но макс грузиться быстрее не стал)
2 дня тестировал, чистый макс запускался 24-30 секунд (до момента когда можно создать бокс)устаналивал плагины, и т.д поставил корону, все ок было)как только поставил Vray запуск стал 80-90 секунд (до момента когда можно создать бокс)
3dddland
Спасибо за решение.
Установил Ваш скрипт, после этого окно пропало, но макс грузиться быстрее не стал)
2 дня тестировал, чистый макс запускался 24-30 секунд (до момента когда можно создать бокс)устаналивал плагины, и т.д поставил корону, все ок было)как только поставил Vray запуск стал 80-90 секунд (до момента когда можно создать бокс)
@David Sousa
Bestviz
Такая же проблема, раньше ее не было, потом появилась в 2016 максе, удалил все под 0, поставил новенький 2020 и в нем такая же лабуда. Причем из за этой лабуды, 3д макс грузиться достаточно долго* Причем не 1 плагина не 1 скрипта не стоит
За 2 дня решения так и не найдено!. Спасибо NIK, что уделил время этой проблеме. Скорее всего тут только сносить винду и заного все ставить в надежде что его отпустит) так как никакие чисти и полный снос и удаление всего и вся в реестре не помогли. Болячка перекочевала из 2016 в 2020. Но что бы не раздражало это окошко, предлагаю Вам такой скрипт просто поставьте в папку /Autodesk\3ds Max 2020\scripts\StartupВот это файлик, просто вызывает диалоговое окно и тут же его закрывает.
Сносить винду и ставить на чисто, так же не помогало. Собирал новый, комп накидывал винду и ставил 19 макс, проблема актуальна.
Заходите вот сюда в зависимости от версии C:\Program Files\Autodesk\3ds Max 2019\scripts\Startup и создаете там скрипт с содержимым без кавычек
в 2019 версии полет нормальный
MAXScript Debugger
Господа, подскажите. После запуска Max 19 при переключение программ через (ALT + TAB), весит окошко «MAXScript Debugger». В диспетчере я такого процесса не нашел, это окно не как не реагирует, не открывается и не закрывается на «x». Я примерно понимаю что это за Debugger, но почему он там висит при открытие и не реагирует, нормально ли это?
Это отладчик скриптов. Возможно он находится за пределами рабочего стола. Помнится похожий глюк был с каким то из окон в предыдущих версиях, так же было открыто за пределами рабочего стола и сохранило в конфигах это положение.
Посмотрите в меню Scripting на тулбаре, чекнут ли пункт Debbuger Dialog и снять галочку, если стоит.
Либо скопировать эту команду в поле Listener (розовое поле в нижнем, левом углу) и нажать энтер.
actionMan.executeAction 0 «576»
Если окно дебагера было открыто, (в белой строке появится true, что значит команда выполнена) окно должно закрыться. после перезапустите макс и проверьте. По сути эта команда то же самое что и чек\унчек галочки в меню тулбара.
Галочка есть не всегда, я несколько раз перезапускал MAX и она всего раз появилась, убрав галочку либо открыв окно дебагера и закрыв он пропадает, но после перезапуска открывается вновь и висит также. Может где то есть автозапуск этой штуки?
Это отладчик скриптов. Возможно он находится за пределами рабочего стола. Помнится похожий глюк был с каким то из окон в предыдущих версиях, так же было открыто за пределами рабочего стола и сохранило в конфигах это положение.
Посмотрите в меню Scripting на тулбаре, чекнут ли пункт Debbuger Dialog и снять галочку, если стоит.
Либо скопировать эту команду в поле Listener (розовое поле в нижнем, левом углу) и нажать энтер.
actionMan.executeAction 0 «576»
Если окно дебагера было открыто, (в белой строке появится true, что значит команда выполнена) окно должно закрыться. после перезапустите макс и проверьте. По сути эта команда то же самое что и чек\унчек галочки в меню тулбара.
Галочка есть не всегда, я несколько раз перезапускал MAX и она всего раз появилась, убрав галочку либо открыв окно дебагера и закрыв он пропадает, но после перезапуска открывается вновь и висит также. Может где то есть автозапуск этой штуки?
Дебагер автономен. По идее, даже когда он запущен и вы закрываете макс, при следующем запуске он не будет чекнут и не должен запускаться. Вызов дебагера происходит либо вручную, либо из скрипта, где так же идет обращение к нему функцией. Но это только при отладке. Тут сложно сказать наверняка точную причину. Возможно автор какого то скрипта забыл удалить эту функцию, возможно глюк самого макса.
Создайте новый, текстовый документ и скопируйте этот код в него
if mxsdebugger.isDialogOpen == true then mxsdebugger.closeDialog()
скопируйте этот файл по пути
при запуске макса дебагер будет принудительно закрываться
Либо «глобальная панацея»
переименовываете папку ENU в ENU_BACK
это сбросит все настройки макса на дефолтные
Когда будете ставить кастомные скрипты, проверяйте после установки каждого перезапуском. Я более склоняюсь к тому, что вызов дебагера происходит из какого то скрипта.
Глобальная панацея не помогает. И так же не помог фокус с закрытием диалога дебагера через скрипт в автозапуске (
Дебагер автономен. По идее, даже когда он запущен и вы закрываете макс, при следующем запуске он не будет чекнут и не должен запускаться. Вызов дебагера происходит либо вручную, либо из скрипта, где так же идет обращение к нему функцией. Но это только при отладке. Тут сложно сказать наверняка точную причину. Возможно автор какого то скрипта забыл удалить эту функцию, возможно глюк самого макса.
Создайте новый, текстовый документ и скопируйте этот код в него
if mxsdebugger.isDialogOpen == true then mxsdebugger.closeDialog()
скопируйте этот файл по пути
при запуске макса дебагер будет принудительно закрываться
Либо «глобальная панацея»
переименовываете папку ENU в ENU_BACK
это сбросит все настройки макса на дефолтные
Когда будете ставить кастомные скрипты, проверяйте после установки каждого перезапуском. Я более склоняюсь к тому, что вызов дебагера происходит из какого то скрипта.
Глобальная панацея не помогает. И так же не помог фокус с закрытием диалога дебагера через скрипт в автозапуске (
Решил проблему? Такая же у меня
Дебагер автономен. По идее, даже когда он запущен и вы закрываете макс, при следующем запуске он не будет чекнут и не должен запускаться. Вызов дебагера происходит либо вручную, либо из скрипта, где так же идет обращение к нему функцией. Но это только при отладке. Тут сложно сказать наверняка точную причину. Возможно автор какого то скрипта забыл удалить эту функцию, возможно глюк самого макса.
Создайте новый, текстовый документ и скопируйте этот код в него
if mxsdebugger.isDialogOpen == true then mxsdebugger.closeDialog()
скопируйте этот файл по пути
при запуске макса дебагер будет принудительно закрываться
Либо «глобальная панацея»
переименовываете папку ENU в ENU_BACK
это сбросит все настройки макса на дефолтные
Когда будете ставить кастомные скрипты, проверяйте после установки каждого перезапуском. Я более склоняюсь к тому, что вызов дебагера происходит из какого то скрипта.
Глобальная панацея не помогает. И так же не помог фокус с закрытием диалога дебагера через скрипт в автозапуске (
Решил проблему? Такая же у меня
Такая же проблема, раньше ее не было, потом появилась в 2016 максе, удалил все под 0, поставил новенький 2020 и в нем такая же лабуда. Причем из за этой лабуды, 3д макс грузиться достаточно долго* Причем не 1 плагина не 1 скрипта не стоит
За 2 дня решения так и не найдено!. Спасибо NIK, что уделил время этой проблеме. Скорее всего тут только сносить винду и заного все ставить в надежде что его отпустит) так как никакие чисти и полный снос и удаление всего и вся в реестре не помогли. Болячка перекочевала из 2016 в 2020. Но что бы не раздражало это окошко, предлагаю Вам такой скрипт просто поставьте в папку /Autodesk\3ds Max 2020\scripts\StartupВот это файлик, просто вызывает диалоговое окно и тут же его закрывает.
3dddland
Спасибо за решение.
Установил Ваш скрипт, после этого окно пропало, но макс грузиться быстрее не стал)
3dddland
Спасибо за решение.
Установил Ваш скрипт, после этого окно пропало, но макс грузиться быстрее не стал)
2 дня тестировал, чистый макс запускался 24-30 секунд (до момента когда можно создать бокс)устаналивал плагины, и т.д поставил корону, все ок было)как только поставил Vray запуск стал 80-90 секунд (до момента когда можно создать бокс)
3dddland
Спасибо за решение.
Установил Ваш скрипт, после этого окно пропало, но макс грузиться быстрее не стал)
2 дня тестировал, чистый макс запускался 24-30 секунд (до момента когда можно создать бокс)устаналивал плагины, и т.д поставил корону, все ок было)как только поставил Vray запуск стал 80-90 секунд (до момента когда можно создать бокс)
@David Sousa
Bestviz
Такая же проблема, раньше ее не было, потом появилась в 2016 максе, удалил все под 0, поставил новенький 2020 и в нем такая же лабуда. Причем из за этой лабуды, 3д макс грузиться достаточно долго* Причем не 1 плагина не 1 скрипта не стоит
За 2 дня решения так и не найдено!. Спасибо NIK, что уделил время этой проблеме. Скорее всего тут только сносить винду и заного все ставить в надежде что его отпустит) так как никакие чисти и полный снос и удаление всего и вся в реестре не помогли. Болячка перекочевала из 2016 в 2020. Но что бы не раздражало это окошко, предлагаю Вам такой скрипт просто поставьте в папку /Autodesk\3ds Max 2020\scripts\StartupВот это файлик, просто вызывает диалоговое окно и тут же его закрывает.
Сносить винду и ставить на чисто, так же не помогало. Собирал новый, комп накидывал винду и ставил 19 макс, проблема актуальна.
Заходите вот сюда в зависимости от версии C:\Program Files\Autodesk\3ds Max 2019\scripts\Startup и создаете там скрипт с содержимым без кавычек
в 2019 версии полет нормальный








