Script Debugger and Session Log
Summarize
Summary of Script Debugger and Session Log
The Script Debugger in ServiceNow allows users with thescriptdebuggerrole to debug server-side JavaScript interactively, while users with thelogdebuggerrole can view and download session logs. This tool is essential for troubleshooting and refining server-side scripts such as business rules, script includes, script actions, and UI actions during interactive transactions.
Show less
Key Features
- Script Debugger capabilities for scriptdebugger role:
- Create dedicated debug transactions scoped to the current session.
- Set, remove, and conditionally configure breakpoints and logpoints to pause or log messages at specific script lines.
- Pause execution at breakpoints, step through code line-by-line, and navigate into or out of functions and methods.
- Evaluate expressions and define variables/functions at runtime using the Console, which requires paused execution.
- View values of local, global, and private closure variables, inspect the call stack, and monitor the current transaction.
- Supports multiple developers debugging independently without interference.
- Impersonation support is available if the impersonated user has the scriptdebugger role and script access.
- Domain separation is supported, allowing data and process segregation according to domains.
- Session Log capabilities for logdebugger role:
- View session logs in a dedicated tab, which can be configured to show logs under forms, lists, or only in the Session Log tab.
- Download logs and specify debug options to filter required messages.
- By default, the Session Log tab displays up to 100 transactions and 10,000 messages; these limits are configurable via user preferences.
- Supports viewing logs for Agent Workspace and custom UIs with GraphQL components.
- Additional Configuration and Behavior:
- Console statement history is cached per browser session, configurable up to 100 statements, but cleared on browser cache reset or different device access.
- The Script Debugger only pauses scripts running in interactive transactions where
GlideSystem.isInteractive()returns true. - Scripts running in strict mode are incompatible with the debugger and may cause failures.
- Scripts - Background module does not support direct breakpoints but allows debugging of called script objects.
- The debugger session persists while the user session is active and closes on logout or timeout.
- Access and User Interface:
- Accessible via the application navigator, Studio, or the syntax editor.
- The UI provides visibility into breakpoints, call stack, executing line number, variable states, transaction details, and console status.
Practical Benefits for ServiceNow Customers
By leveraging the Script Debugger and Session Log, ServiceNow developers can efficiently identify and fix issues in server-side scripts during interactive transactions, improving the reliability and quality of customizations. The ability to pause execution, inspect variables, and step through code enhances troubleshooting precision. Session logs provide comprehensive visibility into script execution outcomes, enabling better monitoring and audit of script activity. The support for multiple developers, impersonation, and domain separation ensures that debugging aligns with enterprise security and organizational structures.
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.