Debugger Domain
Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.
Methods
- Debugger.disable
- Debugger.enable
- Debugger.evaluateOnCallFrame
- Debugger.pause
- Debugger.removeBreakpoint
- Debugger.resume
- Debugger.setBreakpoint
- Debugger.setBreakpointByUrl
- Debugger.setBreakpointsActive
- Debugger.setPauseOnExceptions
- Debugger.stepInto
- Debugger.stepOut
- Debugger.stepOver
- Debugger.setBlackboxedRanges Experimental
- Debugger.setBlackboxPatterns Experimental
Events
Types
Methods
Debugger.disable #
Disables debugger for given page.
Handles Debugger.disable request @cdp Debugger.disable If domain is already disabled, will return success.
Debugger.enable #
Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
Handles Debugger.enable request @cdp Debugger.enable If domain is already enabled, will return success.
Parameters
maxScriptsCacheSizeOptional
numberThe maximum size in bytes of collected scripts (not referenced by other heap objects) the debugger can hold. Puts no limit if parameter is omitted.
Return object
debuggerId Debugger.evaluateOnCallFrame #
Evaluates expression on a given call frame.
In V8, @cdp Debugger.evaluateOnCallFrame populates the result
field with the exception value.
Parameters
callFrameId Call frame identifier to evaluate on.
expression stringExpression to evaluate.
objectGroupOptional
stringString object group name to put result into (allows rapid releasing resulting object handles
using releaseObjectGroup).
includeCommandLineAPIOptional
booleanSpecifies whether command line API should be available to the evaluated expression, defaults to false.
silentOptional
booleanIn silent mode exceptions thrown during evaluation are not reported and do not pause
execution. Overrides setPauseOnException state.
returnByValueOptional
booleanWhether the result is expected to be a JSON object that should be sent by value.
generatePreviewOptional
booleanWhether preview should be generated for the result.
throwOnSideEffectOptional
booleanWhether to throw an exception if side effect cannot be ruled out during evaluation.
timeoutOptional
Return object
result Object wrapper for the evaluation result.
exceptionDetailsOptional
Exception details.
Debugger.resume #
Resumes JavaScript execution.
Parameters
terminateOnResumeOptional
booleanSet to true to terminate execution upon resuming execution. In contrast to Runtime.terminateExecution, this will allows to execute further JavaScript (i.e. via evaluation) until execution of the paused code is actually resumed, at which point termination is triggered. If execution is currently not paused, this parameter has no effect.
Debugger.setBreakpoint #
Sets JavaScript breakpoint at a given location.
Parameters
location Location to set breakpoint in.
conditionOptional
stringExpression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
Return object
breakpointId Id of the created breakpoint for further reference.
actualLocation Location this breakpoint resolved into.
Debugger.setBreakpointByUrl #
Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this
command is issued, all existing parsed scripts will have breakpoints resolved and returned in
locations property. Further matching script parsing will result in subsequent
breakpointResolved events issued. This logical breakpoint will survive page reloads.
Parameters
lineNumber integerLine number to set breakpoint at.
urlOptional
stringURL of the resources to set breakpoint on.
urlRegexOptional
stringRegex pattern for the URLs of the resources to set breakpoints on. Either url or
urlRegex must be specified.
scriptHashOptional
stringScript hash of the resources to set breakpoint on.
columnNumberOptional
integerOffset in the line to set breakpoint at.
conditionOptional
stringExpression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
Return object
breakpointId Id of the created breakpoint for further reference.
locations array[ Location ]List of the locations this breakpoint resolved into upon addition.
Debugger.setBreakpointsActive #
Activates / deactivates all breakpoints on the page.
Handles Debugger.setBreakpointsActive @cdp Debugger.setBreakpointsActive Allowed even if domain is not enabled.
Parameters
active booleanNew value for breakpoints active state.
Debugger.setPauseOnExceptions #
Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions,
or caught exceptions, no exceptions. Initial pause on exceptions state is none.
Parameters
state stringPause on exceptions mode.
Allowed values: none, caught, uncaught, all
Debugger.stepInto #
Steps into the function call.
Parameters
breakOnAsyncCallOptional
booleanDebugger will pause on the execution of the first async task which was scheduled before next pause.
skipListOptional
array[ LocationRange ]The skipList specifies location ranges that should be skipped on step into.
Debugger.stepOver #
Steps over the statement.
Parameters
skipListOptional
array[ LocationRange ]The skipList specifies location ranges that should be skipped on step over.
Debugger.setBlackboxedRanges Experimental#
Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted.
Parameters
scriptId Id of the script.
positions array[ ScriptPosition ]Debugger.setBlackboxPatterns Experimental#
Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
Parameters
patterns array[ string ]Array of regexps that will be used to check script url for blackbox state.
skipAnonymousOptional
booleanIf true, also ignore scripts with no source url.
Events
Debugger.paused #
Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
Although the documentation lists the "data" field as optional for the @cdp Debugger.paused event: https://chromedevtools.github.io/devtools-protocol/tot/Debugger/#event-paused it is accessed unconditionally by the front-end when the pause reason is "exception". "data" is passed in as "auxData" via: https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/9a23d4c7c4c2d1a3d9e913af38d6965f474c4284/front_end/core/sdk/DebuggerModel.ts#L994 and "auxData" stored in a DebuggerPausedDetails instance: https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/9a23d4c7c4c2d1a3d9e913af38d6965f474c4284/front_end/core/sdk/DebuggerModel.ts#L642 which then has its fields accessed in: https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/main/front_end/panels/sources/DebuggerPausedMessage.ts#L225 If the "data" ("auxData") object is absent, accessing its fields will throw, breaking the display of pause information. Thus, we always populate "data" with an object. The "data" field has no schema in the protocol metadata that we use to generate message structures, so we need to manually construct a JSON object here. The structure expected by the front-end (specifically, the "description" field) can be inferred from the field access at the URL above. The front-end does gracefully handle missing fields on the "data" object, so we can consider the "description" field optional.
Parameters
callFrames array[ CallFrame ]Call stack the virtual machine stopped on.
reason stringPause reason.
Allowed values: ambiguous, assert, CSPViolation, debugCommand, DOM, EventListener, exception, instrumentation, OOM, other, promiseRejection, XHR, step
dataOptional
objectObject containing break-specific auxiliary properties.
hitBreakpointsOptional
array[ string ]Hit breakpoints IDs
asyncStackTraceOptional
Async stack trace, if any.
asyncStackTraceIdOptional
asyncCallStackTraceIdOptional
Debugger.scriptParsed #
Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
Parameters
scriptId Identifier of the script parsed.
url stringURL or name of the script parsed (if any).
startLine integerLine offset of the script within the resource with given URL (for script tags).
startColumn integerColumn offset of the script within the resource with given URL.
endLine integerLast line of the script.
endColumn integerLength of the last line of the script.
executionContextId Specifies script creation context.
hash stringContent hash of the script, SHA-256.
buildId stringFor Wasm modules, the content of the build_id custom section. For JavaScript the debugId magic comment.
executionContextAuxDataOptional
objectEmbedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}
isLiveEditOptional
booleanTrue, if this script is generated as a result of the live edit operation.
sourceMapURLOptional
stringURL of source map associated with script (if any).
hasSourceURLOptional
booleanTrue, if this script has sourceURL.
isModuleOptional
booleanTrue, if this script is ES6 module.
lengthOptional
integerThis script length.
stackTraceOptional
JavaScript top stack frame of where the script parsed event was triggered if available.
codeOffsetOptional
integerIf the scriptLanguage is WebAssembly, the code section offset in the module.
scriptLanguageOptional
debugSymbolsOptional
array[ Debugger.DebugSymbols ]If the scriptLanguage is WebAssembly, the source of debug symbols for the module.
embedderNameOptional
stringThe name the embedder supplied for this script.
resolvedBreakpointsOptional
array[ ResolvedBreakpoint ]The list of set breakpoints in this script if calls to setBreakpointByUrl
matches this script's URL or hash. Clients that use this list can ignore the
breakpointResolved event. They are equivalent.
Debugger.breakpointResolved Deprecated#
Fired when breakpoint is resolved to an actual script and location.
Deprecated in favor of resolvedBreakpoints in the scriptParsed event.
Parameters
breakpointId Breakpoint unique identifier.
location Actual breakpoint location.
Types
Debugger.DebugSymbols #
Debug symbols available for a wasm script.
Type: object
Properties
type stringType of the debug symbols.
Allowed values: SourceMap, EmbeddedDWARF, ExternalDWARF
externalURLOptional
stringURL of the external symbol source.
Debugger.ScriptLanguage #
Enum of possible script languages.
Type: string
Allowed values: JavaScript, WebAssembly