Script Debugger and Session Log

  • Release version: Washingtondc
  • Updated February 1, 2024
  • 3 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Script Debugger and Session Log

    The Script Debugger and Session Log tools in ServiceNow provide users with the ability to debug server-side JavaScript and manage session logs effectively. Users with thescriptdebuggerrole can utilize the Script Debugger, while those with thelogdebuggerrole can access the Session Log for viewing and downloading logs.

    Show full answer Show less

    Key Features

    • Script Debugger: Allows users to debug code with features such as setting breakpoints, pausing execution, stepping through code, and viewing variable values.
    • Session Log: Users can view and download logs related to business rules, script includes, and UI components like ServiceNow® Agent Workspace. The logs can be filtered based on specific debug options.
    • Configuration Options: Users can adjust transaction and message limits through user preferences, with defaults set to 100 transactions and 10,000 messages.
    • Browser Cache: Executed console statements are stored temporarily, allowing users to navigate through previous commands easily.
    • Script Tracer: Facilitates quick identification of script issues by filtering changes made during execution.
    • Multi-Developer Support: Multiple developers can debug their sessions simultaneously without interference.
    • Domain Separation: Supports logical grouping of data and processes, enhancing security and access control.

    Key Outcomes

    By using the Script Debugger and Session Log, ServiceNow customers can efficiently troubleshoot and debug their applications, leading to faster resolution of issues and improved productivity. The ability to pause and step through scripts allows for a deeper understanding of code behavior, while session logs provide valuable insights for analysis and debugging. Additionally, adjustable configurations help tailor the debugging experience to specific user 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.

    Users with the script_debugger role can perform these actions using Script Debugger:
    • 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.
    Use the Session Log tab to retrieve the session log for business rules, script includes, and a custom UI such as ServiceNow® Agent Workspace that has a GraphQL component. Users with the log_debugger role can:
    • 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.
    By default, 100 transactions and 10,000 messages appear on the Session Log tab. If the transaction or message count exceeds the default value, the session log is cleared and the next transactions or messages appear. You can configure this transaction and message count using the glide.debugger.log.transaction.count and glide.debugger.log_messages_limit user preferences respectively. For more information about the glide.debugger.log.transaction.count and glide.debugger.log_messages_limit user preferences, see User preference settings.
    Note:
    Enable Session Log as a separate tab with Script Debugger using the glide.debugger.log.ui system property.
    • 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.

    Note:
    The cached statements are not available when the browser cache is cleared or when you log in from a different browser or a different computer.
    The Script Debugger can pause any server-side script that runs in an interactive transaction such as business rules, script includes, script actions, or UI actions that require a response to proceed. If the GlideSystem method isInteractive() returns True when running the script in context, then the Script Debugger can pause it.
    Note:
    Some script objects, such as script includes, can be called from multiple contexts. For example:
    • 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.

    Note:
    When the Script Debugger is enabled, code is executed in interpreted mode. If parts of the script are set to run in strict mode, the debugger is not able to find the correct objects and the debugger fails. The Script Debugger must run on scripts outside of strict mode.