Script Debugger and Session Log
Summarize
Summary of Script Debugger and Session Log
The Script Debugger in ServiceNow enables users with thescriptdebuggerrole to debug server-side JavaScript interactively. It provides a dedicated debug transaction scoped to the current session allowing breakpoints, step-through debugging, expression evaluation, and variable inspection. The Session Log feature, accessible by users with thelogdebuggerrole, provides viewing and downloading of logs related to business rules, script includes, and custom UIs like Agent Workspace.
Show less
Key Features
- Script Debugger capabilities for scriptdebugger role:
- Set, remove, and use breakpoints and conditional breakpoints to pause execution.
- Step through code line-by-line, step into/out of functions.
- View local, global, and closure variables and the call stack.
- Evaluate expressions at runtime via the Console when paused.
- Access the debugger from multiple interfaces: application navigator, Studio, or syntax editor.
- Supports multiple developers debugging independently without interference.
- Supports impersonation if the impersonated user has proper roles and access.
- Does not directly support breakpoints in Scripts - Background module scripts but supports scripts called by them.
- Works with domain separation, respecting domain-based data and access controls.
- Session Log capabilities for logdebugger role:
- View and download session logs in a separate tab.
- Filter logs by debug options to focus on required transactions and messages.
- Default limits are 100 transactions and 10,000 messages which can be configured via user preferences (
glide.debugger.log.transaction.countandglide.debugger.logmessageslimit). - Logs can be displayed either under forms/lists or exclusively on the Session Log tab, configurable via the system property
glide.debugger.log.ui.
Important Considerations
- The Script Debugger only pauses scripts running in interactive transactions where
GlideSystem.isInteractive()returns true. - Script execution runs in interpreted mode when debugging; scripts running in strict mode may cause debugger failures.
- Console statement history is cached per browser session with a configurable limit (
glide.debugger.console.cachedstmtlimit), but is lost on cache clear or different browsers. - Debugger sessions remain open while user session is valid and close upon logout or timeout.
Practical Benefits for ServiceNow Customers
This functionality allows developers to efficiently diagnose and resolve server-side script issues in real time without impacting other users or sessions. Administrators and developers can control debugging scope and access granularly through roles and domain separation. The Session Log enhances troubleshooting by allowing selective log viewing and downloads. Overall, these tools improve script reliability and reduce time spent on debugging complex server-side code in ServiceNow environments.
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.