v5.0
Sets or returns the Boolean
value on the registry key
(HKEY_CURRENT_USER\Software\Microsoft\Windows
Script\Settings\JITDebug) that controls whether the external script
debugger starts when a script error occurs in Softimage.
Script debugging requires a debugger such as Microsoft Script
Debugger or the Microsoft Visual Studio .Net debugger.
The debugger starts when a script error occurs, or when a VBScript
stop statement or JScript debugger statement is executed.
You cannot edit your scripting code in the debugger, but you can
often solve tough scripting problems by checking variable values
and stepping through code line by line and viewing variable
values.
Typically, it is more convenient to enable the external debugger
only when you want to debug your scripts, and to disable it during
normal use. If you leave the debugger enabled, errors that are
normally handled by Softimage may stop execution of your script.
For example, clicking Cancel on a modal property page can raise an
error that is normally handled by Softimage, but which will start
the debugger if it is enabled.
Tip: You can enable the external debugger from the script editor
(for VBScript and JScript code). In the editing pane, right-click
and then click Tools > Enable External Debugger.
Note: ExternalScriptDebugger does not apply to Python scripts
(which have their own debugger), Linux, or Netview-based script
code. It is a global setting, so it may also cause "Just-In-Time
Debugger" messages to appear when viewing Web pages in Internet
Explorer.
// get accessor Boolean rtn = XSIUtils.ExternalScriptDebugger; // set accessor XSIUtils.ExternalScriptDebugger = Boolean; |
/* This script demonstrates how XSIUtils.EnableScriptDebugger works when a simple runtime error occurs. */ XSIUtils.ExternalScriptDebugger = true ; // Runtime error - calling a function that doesn't exist // will open the debugger BogusFunction() ; |
/* This script demonstrates how XSIUtils.EnableScriptDebugger works with exception handling. */ XSIUtils.ExternalScriptDebugger = true ; // Try/catch is great for robust code, // but because it handles script errors it // can be harder to debug try { BogusFunction() ; } catch(e) { Application.LogMessage( "Caught error before debugger sees it" ) ; } // If you want to find out where inside a try/catch // the error actually happens, you can either temporarily // comment out the try/catch, or step through the // code line by line by adding a temporary call // to "debugger" try { debugger ; BogusFunction() ; } catch(e) { Application.LogMessage( "Code jumps here, but you are already in debugger" ) ; } |
' ' This script demonstrates how the XSIUtils.EnableScripDebugger works with ' a simple runtime error. ' option explicit XSIUtils.ExternalScriptDebugger = true ' Runtime error - uninitialized variable ' starts the script debugger ' (the error is caught because option explicit is enabled) x = 45 |
' Demonstration of how "on error resume next" ' interfers with the script debugger ' ' This script demonstrates how "on error resume next" interferes with the ' XSIUtils.EnableScriptDebugger. ' option explicit XSIUtils.ExternalScriptDebugger = true ' This On Error statement means that VBscript ' ignores the undefined variable name, even ' though Option Explicit is on on error resume next x = 45 ' The error info is stored in the "err" ' global object Application.LogMessage err.description ' To debug this sort of code, try temporarily ' commenting out all "On Error Resume Next" statements, ' or set a break point (with the "stop" keyword) ' and step line by line through the code stop x = 45 |
# # This script demonstrates how Python ignores the ExternalScriptDebugger # XSIUtils.ExternalScriptDebugger = 1 # So if you uncomment this line it # will just log an error inside Softimage #Foobar() # However you can open a debugger like this import pywin.debugger pywin.debugger.brk() # And then step to reach this error within # the debugger Foobar() |