Script Debugger and Session Log
Summarize
Summary of Script Debugger and Session Log
The Script Debugger is a powerful tool designed for users with thescriptdebuggerrole to debug server-side JavaScript within ServiceNow. It enables detailed inspection and control of script execution during interactive transactions such as business rules, script includes, and UI actions. Users with thelogdebuggerrole can access the Session Log to view and download logs relevant to debugging activities.
Show less
Key Features
- Script Debugger Capabilities:
- Set, remove, and manage breakpoints and logpoints to pause or log messages during script execution.
- Pause and step through scripts line-by-line, including stepping into and out of functions or methods.
- Evaluate expressions and interact with variables (local, global, and private via closures) during runtime using a built-in Console.
- View call stacks, transaction details, and the current script line being executed.
- Support for multiple developers debugging simultaneously without interference.
- Impersonation support, provided the impersonated user has appropriate roles and access.
- Domain separation support to manage data and access control in multi-domain environments.
- Integration with Studio, application navigator, and syntax editor for ease of launching the debugger.
- Executed console statements are cached in the browser for easy reuse, configurable via user preferences.
- Session Log Features for logdebugger Role:
- View and download session logs related to business rules, script includes, and custom UIs such as Agent Workspace.
- Configure the number of transactions and messages displayed or retained using user preferences.
- Session Log UI can be customized to show logs on forms, lists, or a dedicated tab via a system property.
- Additional Notes:
- Debugging requires scripts to run outside of strict mode to ensure proper functionality.
- Scripts are paused only if they run in interactive transactions (verified by GlideSystem method
isInteractive()). - Scripts run in background via Scripts - Background cannot have direct breakpoints but can debug called script objects.
- Browser developer tools are recommended for client-side script debugging.
- Debugger transactions remain open as long as the user session is active; logging out or session timeout closes the debugger.
Practical Benefits for ServiceNow Customers
- Enables comprehensive server-side script troubleshooting to quickly identify and fix issues in business rules, script includes, and UI scripts.
- Reduces debugging time by allowing step-through code execution, expression evaluation, and access to detailed transaction context.
- Supports secure multi-developer environments and respects domain separation, ensuring governance in complex organizations.
- Session Log provides targeted log retrieval and download capabilities to streamline log analysis and troubleshooting.
- Customizable user preferences and system properties provide flexibility to adapt the debugging environment to specific team needs.
The Script Debugger enables users with the script_debugger role to debug server-side JavaScript. Users with the log_debugger role can use the Session Log to view and download required logs.
- Have a dedicated debug transaction, which applies only to the current session.
- Set and remove breakpoints.
- Pause the current session at a breakpoint.
- Evaluate expressions during runtime.
- Step through code line-by-line.
- Step into and out of function and method calls.
- View the value of local and global variables.
- View the value of private variables from function closures.
- View the call stack.
- View the transaction that the system is processing.
- Turn off the script debugger to resume running paused scripts.
- View session logs in a separate tab.
- Download a log.
- View logs for Agent Workspace.
- Specify debug options to view or download only the required logs.
- The Page option displays logs under forms and lists and on the Session Log tab.
- The Session option displays logs only on the Session Log tab.
For more information about the glide.debugger.log.ui system property, see Available system properties.
When you execute a statement in the Console, the executed statement is stored in the browser cache. You can use the up arrow key to get the previous statement and down arrow key to get the next statement from the browser cache. The user preference setting, glide.debugger.console.cached_stmt_limit, defines the number of statements cached in a browser session. The default statement cache value is 20 and the maximum value is 100. You can configure the statement cache value from user preferences.
- when a business rule runs a script include on a form submit that is an interactive transaction waiting on the form data to change before continuing.
- when a scheduled job runs the same script include that is a non-interactive background transaction that can also run other scripts simultaneously.
To debug client-side scripts, you can use browser-based developers tools.
A debugger transaction remains open as long as the user session is valid. If a user logs out or their session times out, the system closes the debugger transaction.
To view debug logs, see Display debugging logs.