v8/include/js_protocol.pdl
Sigurd Schneider 9e52d5c5d7 [debugger] Allow termination-on-resume when paused at a breakpoint
This CL implements functionality to allow an embedder to mark a
debug scope as terminate-on-resume. This results in a termination
exception when that debug scope is left and execution is resumed.
Execution of JavaScript remains possible after a debug scope is
marked as terminate-on-resume (but before execution of the paused
code resumes).
This is used by blink to correctly prevent resuming JavaScript
execution upon reload while being paused at a breakpoint.

This is important for handling reloads while paused at a breakpoint
in blink. The resume command terminates blink's nested message loop
that is used while to keep the frame responsive while the debugger
is paused. But if a reload is triggered while execution is paused
on a breakpoint, but before execution is actually resumed from the
 breakpoint (that means before returning into the V8 JavaScript
frames that are paused on the stack below the C++ frames that belong
to the nested message loop), we re-enter V8 to do tear-down actions
of the old frame. In this case Runtime.terminateExecution() cannot be
used before Debugger.resume(), because the tear-down actions that
re-enter V8 would trigger the termination exception and crash the
browser (because the browser expected the tear-down to succeed).

Hence we introduce this flag on V8 that says: It is OK if someone
re-enters V8 (to execute JS), but upon resuming from the breakpoint
(i.e. returning to the paused frames that are on the stack below),
generate a termination exception.

We deliberated adding a corresponding logic on the blink side (instead
of V8) but we think this is the simplest solution.

More details in the design doc:

https://docs.google.com/document/d/1aO9v0YhoKNqKleqfACGUpwrBUayLFGqktz9ltdgKHMk

Bug: chromium:1004038, chromium:1014415

Change-Id: I896692d4c21cb0acae89c1d783d37ce45b73c113
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924366
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66084}
2020-02-03 16:33:29 +00:00

1562 lines
55 KiB
Plaintext

# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
version
major 1
minor 3
# This domain is deprecated - use Runtime or Log instead.
deprecated domain Console
depends on Runtime
# Console message.
type ConsoleMessage extends object
properties
# Message source.
enum source
xml
javascript
network
console-api
storage
appcache
rendering
security
other
deprecation
worker
# Message severity.
enum level
log
warning
error
debug
info
# Message text.
string text
# URL of the message origin.
optional string url
# Line number in the resource that generated this message (1-based).
optional integer line
# Column number in the resource that generated this message (1-based).
optional integer column
# Does nothing.
command clearMessages
# Disables console domain, prevents further console messages from being reported to the client.
command disable
# Enables console domain, sends the messages collected so far to the client by means of the
# `messageAdded` notification.
command enable
# Issued when new console message is added.
event messageAdded
parameters
# Console message that has been added.
ConsoleMessage message
# Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing
# breakpoints, stepping through execution, exploring stack traces, etc.
domain Debugger
depends on Runtime
# Breakpoint identifier.
type BreakpointId extends string
# Call frame identifier.
type CallFrameId extends string
# Location in the source code.
type Location extends object
properties
# Script identifier as reported in the `Debugger.scriptParsed`.
Runtime.ScriptId scriptId
# Line number in the script (0-based).
integer lineNumber
# Column number in the script (0-based).
optional integer columnNumber
# Location in the source code.
experimental type ScriptPosition extends object
properties
integer lineNumber
integer columnNumber
# JavaScript call frame. Array of call frames form the call stack.
type CallFrame extends object
properties
# Call frame identifier. This identifier is only valid while the virtual machine is paused.
CallFrameId callFrameId
# Name of the JavaScript function called on this call frame.
string functionName
# Location in the source code.
optional Location functionLocation
# Location in the source code.
Location location
# JavaScript script name or url.
string url
# Scope chain for this call frame.
array of Scope scopeChain
# `this` object for this call frame.
Runtime.RemoteObject this
# The value being returned, if the function is at return point.
optional Runtime.RemoteObject returnValue
# Scope description.
type Scope extends object
properties
# Scope type.
enum type
global
local
with
closure
catch
block
script
eval
module
# Object representing the scope. For `global` and `with` scopes it represents the actual
# object; for the rest of the scopes, it is artificial transient object enumerating scope
# variables as its properties.
Runtime.RemoteObject object
optional string name
# Location in the source code where scope starts
optional Location startLocation
# Location in the source code where scope ends
optional Location endLocation
# Search match for resource.
type SearchMatch extends object
properties
# Line number in resource content.
number lineNumber
# Line with match content.
string lineContent
type BreakLocation extends object
properties
# Script identifier as reported in the `Debugger.scriptParsed`.
Runtime.ScriptId scriptId
# Line number in the script (0-based).
integer lineNumber
# Column number in the script (0-based).
optional integer columnNumber
optional enum type
debuggerStatement
call
return
# Continues execution until specific location is reached.
command continueToLocation
parameters
# Location to continue to.
Location location
optional enum targetCallFrames
any
current
# Disables debugger for given page.
command disable
# Enables debugger for the given page. Clients should not assume that the debugging has been
# enabled until the result for this command is received.
command enable
parameters
# The maximum size in bytes of collected scripts (not referenced by other heap objects)
# the debugger can hold. Puts no limit if paramter is omitted.
experimental optional number maxScriptsCacheSize
returns
# Unique identifier of the debugger.
experimental Runtime.UniqueDebuggerId debuggerId
# Evaluates expression on a given call frame.
command evaluateOnCallFrame
parameters
# Call frame identifier to evaluate on.
CallFrameId callFrameId
# Expression to evaluate.
string expression
# String object group name to put result into (allows rapid releasing resulting object handles
# using `releaseObjectGroup`).
optional string objectGroup
# Specifies whether command line API should be available to the evaluated expression, defaults
# to false.
optional boolean includeCommandLineAPI
# In silent mode exceptions thrown during evaluation are not reported and do not pause
# execution. Overrides `setPauseOnException` state.
optional boolean silent
# Whether the result is expected to be a JSON object that should be sent by value.
optional boolean returnByValue
# Whether preview should be generated for the result.
experimental optional boolean generatePreview
# Whether to throw an exception if side effect cannot be ruled out during evaluation.
optional boolean throwOnSideEffect
# Terminate execution after timing out (number of milliseconds).
experimental optional Runtime.TimeDelta timeout
returns
# Object wrapper for the evaluation result.
Runtime.RemoteObject result
# Exception details.
optional Runtime.ExceptionDetails exceptionDetails
# Returns possible locations for breakpoint. scriptId in start and end range locations should be
# the same.
command getPossibleBreakpoints
parameters
# Start of range to search possible breakpoint locations in.
Location start
# End of range to search possible breakpoint locations in (excluding). When not specified, end
# of scripts is used as end of range.
optional Location end
# Only consider locations which are in the same (non-nested) function as start.
optional boolean restrictToFunction
returns
# List of the possible breakpoint locations.
array of BreakLocation locations
# Returns source for the script with given id.
command getScriptSource
parameters
# Id of the script to get source for.
Runtime.ScriptId scriptId
returns
# Script source (empty in case of Wasm bytecode).
string scriptSource
# Wasm bytecode.
optional binary bytecode
# This command is deprecated. Use getScriptSource instead.
deprecated command getWasmBytecode
parameters
# Id of the Wasm script to get source for.
Runtime.ScriptId scriptId
returns
# Script source.
binary bytecode
# Returns stack trace with given `stackTraceId`.
experimental command getStackTrace
parameters
Runtime.StackTraceId stackTraceId
returns
Runtime.StackTrace stackTrace
# Stops on the next JavaScript statement.
command pause
experimental deprecated command pauseOnAsyncCall
parameters
# Debugger will pause when async call with given stack trace is started.
Runtime.StackTraceId parentStackTraceId
# Removes JavaScript breakpoint.
command removeBreakpoint
parameters
BreakpointId breakpointId
# Restarts particular call frame from the beginning.
command restartFrame
parameters
# Call frame identifier to evaluate on.
CallFrameId callFrameId
returns
# New stack trace.
array of CallFrame callFrames
# Async stack trace, if any.
optional Runtime.StackTrace asyncStackTrace
# Async stack trace, if any.
experimental optional Runtime.StackTraceId asyncStackTraceId
# Resumes JavaScript execution.
command resume
parameters
# Set 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.
optional boolean terminateOnResume
# Searches for given string in script content.
command searchInContent
parameters
# Id of the script to search in.
Runtime.ScriptId scriptId
# String to search for.
string query
# If true, search is case sensitive.
optional boolean caseSensitive
# If true, treats string parameter as regex.
optional boolean isRegex
returns
# List of search matches.
array of SearchMatch result
# Enables or disables async call stacks tracking.
command setAsyncCallStackDepth
parameters
# Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async
# call stacks (default).
integer maxDepth
# 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.
experimental command setBlackboxPatterns
parameters
# Array of regexps that will be used to check script url for blackbox state.
array of string patterns
# 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.
experimental command setBlackboxedRanges
parameters
# Id of the script.
Runtime.ScriptId scriptId
array of ScriptPosition positions
# Sets JavaScript breakpoint at a given location.
command setBreakpoint
parameters
# Location to set breakpoint in.
Location location
# Expression to use as a breakpoint condition. When specified, debugger will only stop on the
# breakpoint if this expression evaluates to true.
optional string condition
returns
# Id of the created breakpoint for further reference.
BreakpointId breakpointId
# Location this breakpoint resolved into.
Location actualLocation
# Sets instrumentation breakpoint.
command setInstrumentationBreakpoint
parameters
# Instrumentation name.
enum instrumentation
beforeScriptExecution
beforeScriptWithSourceMapExecution
returns
# Id of the created breakpoint for further reference.
BreakpointId breakpointId
# 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.
command setBreakpointByUrl
parameters
# Line number to set breakpoint at.
integer lineNumber
# URL of the resources to set breakpoint on.
optional string url
# Regex pattern for the URLs of the resources to set breakpoints on. Either `url` or
# `urlRegex` must be specified.
optional string urlRegex
# Script hash of the resources to set breakpoint on.
optional string scriptHash
# Offset in the line to set breakpoint at.
optional integer columnNumber
# Expression to use as a breakpoint condition. When specified, debugger will only stop on the
# breakpoint if this expression evaluates to true.
optional string condition
returns
# Id of the created breakpoint for further reference.
BreakpointId breakpointId
# List of the locations this breakpoint resolved into upon addition.
array of Location locations
# Sets JavaScript breakpoint before each call to the given function.
# If another function was created from the same source as a given one,
# calling it will also trigger the breakpoint.
experimental command setBreakpointOnFunctionCall
parameters
# Function object id.
Runtime.RemoteObjectId objectId
# Expression to use as a breakpoint condition. When specified, debugger will
# stop on the breakpoint if this expression evaluates to true.
optional string condition
returns
# Id of the created breakpoint for further reference.
BreakpointId breakpointId
# Activates / deactivates all breakpoints on the page.
command setBreakpointsActive
parameters
# New value for breakpoints active state.
boolean active
# Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or
# no exceptions. Initial pause on exceptions state is `none`.
command setPauseOnExceptions
parameters
# Pause on exceptions mode.
enum state
none
uncaught
all
# Changes return value in top frame. Available only at return break position.
experimental command setReturnValue
parameters
# New return value.
Runtime.CallArgument newValue
# Edits JavaScript source live.
command setScriptSource
parameters
# Id of the script to edit.
Runtime.ScriptId scriptId
# New content of the script.
string scriptSource
# If true the change will not actually be applied. Dry run may be used to get result
# description without actually modifying the code.
optional boolean dryRun
returns
# New stack trace in case editing has happened while VM was stopped.
optional array of CallFrame callFrames
# Whether current call stack was modified after applying the changes.
optional boolean stackChanged
# Async stack trace, if any.
optional Runtime.StackTrace asyncStackTrace
# Async stack trace, if any.
experimental optional Runtime.StackTraceId asyncStackTraceId
# Exception details if any.
optional Runtime.ExceptionDetails exceptionDetails
# Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
command setSkipAllPauses
parameters
# New value for skip pauses state.
boolean skip
# Changes value of variable in a callframe. Object-based scopes are not supported and must be
# mutated manually.
command setVariableValue
parameters
# 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch'
# scope types are allowed. Other scopes could be manipulated manually.
integer scopeNumber
# Variable name.
string variableName
# New variable value.
Runtime.CallArgument newValue
# Id of callframe that holds variable.
CallFrameId callFrameId
# Steps into the function call.
command stepInto
parameters
# Debugger will pause on the execution of the first async task which was scheduled
# before next pause.
experimental optional boolean breakOnAsyncCall
# Steps out of the function call.
command stepOut
# Steps over the statement.
command stepOver
# Fired when breakpoint is resolved to an actual script and location.
event breakpointResolved
parameters
# Breakpoint unique identifier.
BreakpointId breakpointId
# Actual breakpoint location.
Location location
# Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
event paused
parameters
# Call stack the virtual machine stopped on.
array of CallFrame callFrames
# Pause reason.
enum reason
ambiguous
assert
debugCommand
DOM
EventListener
exception
instrumentation
OOM
other
promiseRejection
XHR
# Object containing break-specific auxiliary properties.
optional object data
# Hit breakpoints IDs
optional array of string hitBreakpoints
# Async stack trace, if any.
optional Runtime.StackTrace asyncStackTrace
# Async stack trace, if any.
experimental optional Runtime.StackTraceId asyncStackTraceId
# Never present, will be removed.
experimental deprecated optional Runtime.StackTraceId asyncCallStackTraceId
# Fired when the virtual machine resumed execution.
event resumed
# Fired when virtual machine fails to parse the script.
event scriptFailedToParse
parameters
# Identifier of the script parsed.
Runtime.ScriptId scriptId
# URL or name of the script parsed (if any).
string url
# Line offset of the script within the resource with given URL (for script tags).
integer startLine
# Column offset of the script within the resource with given URL.
integer startColumn
# Last line of the script.
integer endLine
# Length of the last line of the script.
integer endColumn
# Specifies script creation context.
Runtime.ExecutionContextId executionContextId
# Content hash of the script.
string hash
# Embedder-specific auxiliary data.
optional object executionContextAuxData
# URL of source map associated with script (if any).
optional string sourceMapURL
# True, if this script has sourceURL.
optional boolean hasSourceURL
# True, if this script is ES6 module.
optional boolean isModule
# This script length.
optional integer length
# JavaScript top stack frame of where the script parsed event was triggered if available.
experimental optional Runtime.StackTrace stackTrace
# Fired when virtual machine parses script. This event is also fired for all known and uncollected
# scripts upon enabling debugger.
event scriptParsed
parameters
# Identifier of the script parsed.
Runtime.ScriptId scriptId
# URL or name of the script parsed (if any).
string url
# Line offset of the script within the resource with given URL (for script tags).
integer startLine
# Column offset of the script within the resource with given URL.
integer startColumn
# Last line of the script.
integer endLine
# Length of the last line of the script.
integer endColumn
# Specifies script creation context.
Runtime.ExecutionContextId executionContextId
# Content hash of the script.
string hash
# Embedder-specific auxiliary data.
optional object executionContextAuxData
# True, if this script is generated as a result of the live edit operation.
experimental optional boolean isLiveEdit
# URL of source map associated with script (if any).
optional string sourceMapURL
# True, if this script has sourceURL.
optional boolean hasSourceURL
# True, if this script is ES6 module.
optional boolean isModule
# This script length.
optional integer length
# JavaScript top stack frame of where the script parsed event was triggered if available.
experimental optional Runtime.StackTrace stackTrace
experimental domain HeapProfiler
depends on Runtime
# Heap snapshot object id.
type HeapSnapshotObjectId extends string
# Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.
type SamplingHeapProfileNode extends object
properties
# Function location.
Runtime.CallFrame callFrame
# Allocations size in bytes for the node excluding children.
number selfSize
# Node id. Ids are unique across all profiles collected between startSampling and stopSampling.
integer id
# Child nodes.
array of SamplingHeapProfileNode children
# A single sample from a sampling profile.
type SamplingHeapProfileSample extends object
properties
# Allocation size in bytes attributed to the sample.
number size
# Id of the corresponding profile tree node.
integer nodeId
# Time-ordered sample ordinal number. It is unique across all profiles retrieved
# between startSampling and stopSampling.
number ordinal
# Sampling profile.
type SamplingHeapProfile extends object
properties
SamplingHeapProfileNode head
array of SamplingHeapProfileSample samples
# Enables console to refer to the node with given id via $x (see Command Line API for more details
# $x functions).
command addInspectedHeapObject
parameters
# Heap snapshot object id to be accessible by means of $x command line API.
HeapSnapshotObjectId heapObjectId
command collectGarbage
command disable
command enable
command getHeapObjectId
parameters
# Identifier of the object to get heap object id for.
Runtime.RemoteObjectId objectId
returns
# Id of the heap snapshot object corresponding to the passed remote object id.
HeapSnapshotObjectId heapSnapshotObjectId
command getObjectByHeapObjectId
parameters
HeapSnapshotObjectId objectId
# Symbolic group name that can be used to release multiple objects.
optional string objectGroup
returns
# Evaluation result.
Runtime.RemoteObject result
command getSamplingProfile
returns
# Return the sampling profile being collected.
SamplingHeapProfile profile
command startSampling
parameters
# Average sample interval in bytes. Poisson distribution is used for the intervals. The
# default value is 32768 bytes.
optional number samplingInterval
command startTrackingHeapObjects
parameters
optional boolean trackAllocations
command stopSampling
returns
# Recorded sampling heap profile.
SamplingHeapProfile profile
command stopTrackingHeapObjects
parameters
# If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken
# when the tracking is stopped.
optional boolean reportProgress
optional boolean treatGlobalObjectsAsRoots
command takeHeapSnapshot
parameters
# If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken.
optional boolean reportProgress
# If true, a raw snapshot without artifical roots will be generated
optional boolean treatGlobalObjectsAsRoots
event addHeapSnapshotChunk
parameters
string chunk
# If heap objects tracking has been started then backend may send update for one or more fragments
event heapStatsUpdate
parameters
# An array of triplets. Each triplet describes a fragment. The first integer is the fragment
# index, the second integer is a total count of objects for the fragment, the third integer is
# a total size of the objects for the fragment.
array of integer statsUpdate
# If heap objects tracking has been started then backend regularly sends a current value for last
# seen object id and corresponding timestamp. If the were changes in the heap since last event
# then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
event lastSeenObjectId
parameters
integer lastSeenObjectId
number timestamp
event reportHeapSnapshotProgress
parameters
integer done
integer total
optional boolean finished
event resetProfiles
domain Profiler
depends on Runtime
depends on Debugger
# Profile node. Holds callsite information, execution statistics and child nodes.
type ProfileNode extends object
properties
# Unique id of the node.
integer id
# Function location.
Runtime.CallFrame callFrame
# Number of samples where this node was on top of the call stack.
optional integer hitCount
# Child node ids.
optional array of integer children
# The reason of being not optimized. The function may be deoptimized or marked as don't
# optimize.
optional string deoptReason
# An array of source position ticks.
optional array of PositionTickInfo positionTicks
# Profile.
type Profile extends object
properties
# The list of profile nodes. First item is the root node.
array of ProfileNode nodes
# Profiling start timestamp in microseconds.
number startTime
# Profiling end timestamp in microseconds.
number endTime
# Ids of samples top nodes.
optional array of integer samples
# Time intervals between adjacent samples in microseconds. The first delta is relative to the
# profile startTime.
optional array of integer timeDeltas
# Specifies a number of samples attributed to a certain source position.
type PositionTickInfo extends object
properties
# Source line number (1-based).
integer line
# Number of samples attributed to the source line.
integer ticks
# Coverage data for a source range.
type CoverageRange extends object
properties
# JavaScript script source offset for the range start.
integer startOffset
# JavaScript script source offset for the range end.
integer endOffset
# Collected execution count of the source range.
integer count
# Coverage data for a JavaScript function.
type FunctionCoverage extends object
properties
# JavaScript function name.
string functionName
# Source ranges inside the function with coverage data.
array of CoverageRange ranges
# Whether coverage data for this function has block granularity.
boolean isBlockCoverage
# Coverage data for a JavaScript script.
type ScriptCoverage extends object
properties
# JavaScript script id.
Runtime.ScriptId scriptId
# JavaScript script name or url.
string url
# Functions contained in the script that has coverage data.
array of FunctionCoverage functions
# Describes a type collected during runtime.
experimental type TypeObject extends object
properties
# Name of a type collected with type profiling.
string name
# Source offset and types for a parameter or return value.
experimental type TypeProfileEntry extends object
properties
# Source offset of the parameter or end of function for return values.
integer offset
# The types for this parameter or return value.
array of TypeObject types
# Type profile data collected during runtime for a JavaScript script.
experimental type ScriptTypeProfile extends object
properties
# JavaScript script id.
Runtime.ScriptId scriptId
# JavaScript script name or url.
string url
# Type profile entries for parameters and return values of the functions in the script.
array of TypeProfileEntry entries
# Collected counter information.
experimental type CounterInfo extends object
properties
# Counter name.
string name
# Counter value.
integer value
command disable
command enable
# Collect coverage data for the current isolate. The coverage data may be incomplete due to
# garbage collection.
command getBestEffortCoverage
returns
# Coverage data for the current isolate.
array of ScriptCoverage result
# Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
command setSamplingInterval
parameters
# New sampling interval in microseconds.
integer interval
command start
# Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code
# coverage may be incomplete. Enabling prevents running optimized code and resets execution
# counters.
command startPreciseCoverage
parameters
# Collect accurate call counts beyond simple 'covered' or 'not covered'.
optional boolean callCount
# Collect block-based coverage.
optional boolean detailed
returns
# Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
number timestamp
# Enable type profile.
experimental command startTypeProfile
command stop
returns
# Recorded profile.
Profile profile
# Disable precise code coverage. Disabling releases unnecessary execution count records and allows
# executing optimized code.
command stopPreciseCoverage
# Disable type profile. Disabling releases type profile data collected so far.
experimental command stopTypeProfile
# Collect coverage data for the current isolate, and resets execution counters. Precise code
# coverage needs to have started.
command takePreciseCoverage
returns
# Coverage data for the current isolate.
array of ScriptCoverage result
# Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
number timestamp
# Collect type profile.
experimental command takeTypeProfile
returns
# Type profile for all scripts since startTypeProfile() was turned on.
array of ScriptTypeProfile result
# Enable run time call stats collection.
experimental command enableRuntimeCallStats
# Disable run time call stats collection.
experimental command disableRuntimeCallStats
# Retrieve run time call stats.
experimental command getRuntimeCallStats
returns
# Collected counter information.
array of CounterInfo result
event consoleProfileFinished
parameters
string id
# Location of console.profileEnd().
Debugger.Location location
Profile profile
# Profile title passed as an argument to console.profile().
optional string title
# Sent when new profile recording is started using console.profile() call.
event consoleProfileStarted
parameters
string id
# Location of console.profile().
Debugger.Location location
# Profile title passed as an argument to console.profile().
optional string title
# Reports coverage delta since the last poll (either from an event like this, or from
# `takePreciseCoverage` for the current isolate. May only be sent if precise code
# coverage has been started. This event can be trigged by the embedder to, for example,
# trigger collection of coverage data immediatelly at a certain point in time.
experimental event preciseCoverageDeltaUpdate
parameters
# Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
number timestamp
# Identifier for distinguishing coverage events.
string occassion
# Coverage data for the current isolate.
array of ScriptCoverage result
# Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects.
# Evaluation results are returned as mirror object that expose object type, string representation
# and unique identifier that can be used for further object reference. Original objects are
# maintained in memory unless they are either explicitly released or are released along with the
# other objects in their object group.
domain Runtime
# Unique script identifier.
type ScriptId extends string
# Unique object identifier.
type RemoteObjectId extends string
# Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,
# `-Infinity`, and bigint literals.
type UnserializableValue extends string
# Mirror object referencing original JavaScript object.
type RemoteObject extends object
properties
# Object type.
enum type
object
function
undefined
string
number
boolean
symbol
bigint
# Object subtype hint. Specified for `object` type values only.
optional enum subtype
array
null
node
regexp
date
map
set
weakmap
weakset
iterator
generator
error
proxy
promise
typedarray
arraybuffer
dataview
# Object class (constructor) name. Specified for `object` type values only.
optional string className
# Remote object value in case of primitive values or JSON values (if it was requested).
optional any value
# Primitive value which can not be JSON-stringified does not have `value`, but gets this
# property.
optional UnserializableValue unserializableValue
# String representation of the object.
optional string description
# Unique object identifier (for non-primitive values).
optional RemoteObjectId objectId
# Preview containing abbreviated property values. Specified for `object` type values only.
experimental optional ObjectPreview preview
experimental optional CustomPreview customPreview
experimental type CustomPreview extends object
properties
# The JSON-stringified result of formatter.header(object, config) call.
# It contains json ML array that represents RemoteObject.
string header
# If formatter returns true as a result of formatter.hasBody call then bodyGetterId will
# contain RemoteObjectId for the function that returns result of formatter.body(object, config) call.
# The result value is json ML array.
optional RemoteObjectId bodyGetterId
# Object containing abbreviated remote object value.
experimental type ObjectPreview extends object
properties
# Object type.
enum type
object
function
undefined
string
number
boolean
symbol
bigint
# Object subtype hint. Specified for `object` type values only.
optional enum subtype
array
null
node
regexp
date
map
set
weakmap
weakset
iterator
generator
error
# String representation of the object.
optional string description
# True iff some of the properties or entries of the original object did not fit.
boolean overflow
# List of the properties.
array of PropertyPreview properties
# List of the entries. Specified for `map` and `set` subtype values only.
optional array of EntryPreview entries
experimental type PropertyPreview extends object
properties
# Property name.
string name
# Object type. Accessor means that the property itself is an accessor property.
enum type
object
function
undefined
string
number
boolean
symbol
accessor
bigint
# User-friendly property value string.
optional string value
# Nested value preview.
optional ObjectPreview valuePreview
# Object subtype hint. Specified for `object` type values only.
optional enum subtype
array
null
node
regexp
date
map
set
weakmap
weakset
iterator
generator
error
experimental type EntryPreview extends object
properties
# Preview of the key. Specified for map-like collection entries.
optional ObjectPreview key
# Preview of the value.
ObjectPreview value
# Object property descriptor.
type PropertyDescriptor extends object
properties
# Property name or symbol description.
string name
# The value associated with the property.
optional RemoteObject value
# True if the value associated with the property may be changed (data descriptors only).
optional boolean writable
# A function which serves as a getter for the property, or `undefined` if there is no getter
# (accessor descriptors only).
optional RemoteObject get
# A function which serves as a setter for the property, or `undefined` if there is no setter
# (accessor descriptors only).
optional RemoteObject set
# True if the type of this property descriptor may be changed and if the property may be
# deleted from the corresponding object.
boolean configurable
# True if this property shows up during enumeration of the properties on the corresponding
# object.
boolean enumerable
# True if the result was thrown during the evaluation.
optional boolean wasThrown
# True if the property is owned for the object.
optional boolean isOwn
# Property symbol object, if the property is of the `symbol` type.
optional RemoteObject symbol
# Object internal property descriptor. This property isn't normally visible in JavaScript code.
type InternalPropertyDescriptor extends object
properties
# Conventional property name.
string name
# The value associated with the property.
optional RemoteObject value
# Object private field descriptor.
experimental type PrivatePropertyDescriptor extends object
properties
# Private property name.
string name
# The value associated with the private property.
optional RemoteObject value
# A function which serves as a getter for the private property,
# or `undefined` if there is no getter (accessor descriptors only).
optional RemoteObject get
# A function which serves as a setter for the private property,
# or `undefined` if there is no setter (accessor descriptors only).
optional RemoteObject set
# Represents function call argument. Either remote object id `objectId`, primitive `value`,
# unserializable primitive value or neither of (for undefined) them should be specified.
type CallArgument extends object
properties
# Primitive value or serializable javascript object.
optional any value
# Primitive value which can not be JSON-stringified.
optional UnserializableValue unserializableValue
# Remote object handle.
optional RemoteObjectId objectId
# Id of an execution context.
type ExecutionContextId extends integer
# Description of an isolated world.
type ExecutionContextDescription extends object
properties
# Unique id of the execution context. It can be used to specify in which execution context
# script evaluation should be performed.
ExecutionContextId id
# Execution context origin.
string origin
# Human readable name describing given context.
string name
# Embedder-specific auxiliary data.
optional object auxData
# Detailed information about exception (or error) that was thrown during script compilation or
# execution.
type ExceptionDetails extends object
properties
# Exception id.
integer exceptionId
# Exception text, which should be used together with exception object when available.
string text
# Line number of the exception location (0-based).
integer lineNumber
# Column number of the exception location (0-based).
integer columnNumber
# Script ID of the exception location.
optional ScriptId scriptId
# URL of the exception location, to be used when the script was not reported.
optional string url
# JavaScript stack trace if available.
optional StackTrace stackTrace
# Exception object if available.
optional RemoteObject exception
# Identifier of the context where exception happened.
optional ExecutionContextId executionContextId
# Number of milliseconds since epoch.
type Timestamp extends number
# Number of milliseconds.
type TimeDelta extends number
# Stack entry for runtime errors and assertions.
type CallFrame extends object
properties
# JavaScript function name.
string functionName
# JavaScript script id.
ScriptId scriptId
# JavaScript script name or url.
string url
# JavaScript script line number (0-based).
integer lineNumber
# JavaScript script column number (0-based).
integer columnNumber
# Call frames for assertions or error messages.
type StackTrace extends object
properties
# String label of this stack trace. For async traces this may be a name of the function that
# initiated the async call.
optional string description
# JavaScript function name.
array of CallFrame callFrames
# Asynchronous JavaScript stack trace that preceded this stack, if available.
optional StackTrace parent
# Asynchronous JavaScript stack trace that preceded this stack, if available.
experimental optional StackTraceId parentId
# Unique identifier of current debugger.
experimental type UniqueDebuggerId extends string
# If `debuggerId` is set stack trace comes from another debugger and can be resolved there. This
# allows to track cross-debugger calls. See `Runtime.StackTrace` and `Debugger.paused` for usages.
experimental type StackTraceId extends object
properties
string id
optional UniqueDebuggerId debuggerId
# Add handler to promise with given promise object id.
command awaitPromise
parameters
# Identifier of the promise.
RemoteObjectId promiseObjectId
# Whether the result is expected to be a JSON object that should be sent by value.
optional boolean returnByValue
# Whether preview should be generated for the result.
optional boolean generatePreview
returns
# Promise result. Will contain rejected value if promise was rejected.
RemoteObject result
# Exception details if stack strace is available.
optional ExceptionDetails exceptionDetails
# Calls function with given declaration on the given object. Object group of the result is
# inherited from the target object.
command callFunctionOn
parameters
# Declaration of the function to call.
string functionDeclaration
# Identifier of the object to call function on. Either objectId or executionContextId should
# be specified.
optional RemoteObjectId objectId
# Call arguments. All call arguments must belong to the same JavaScript world as the target
# object.
optional array of CallArgument arguments
# In silent mode exceptions thrown during evaluation are not reported and do not pause
# execution. Overrides `setPauseOnException` state.
optional boolean silent
# Whether the result is expected to be a JSON object which should be sent by value.
optional boolean returnByValue
# Whether preview should be generated for the result.
experimental optional boolean generatePreview
# Whether execution should be treated as initiated by user in the UI.
optional boolean userGesture
# Whether execution should `await` for resulting value and return once awaited promise is
# resolved.
optional boolean awaitPromise
# Specifies execution context which global object will be used to call function on. Either
# executionContextId or objectId should be specified.
optional ExecutionContextId executionContextId
# Symbolic group name that can be used to release multiple objects. If objectGroup is not
# specified and objectId is, objectGroup will be inherited from object.
optional string objectGroup
returns
# Call result.
RemoteObject result
# Exception details.
optional ExceptionDetails exceptionDetails
# Compiles expression.
command compileScript
parameters
# Expression to compile.
string expression
# Source url to be set for the script.
string sourceURL
# Specifies whether the compiled script should be persisted.
boolean persistScript
# Specifies in which execution context to perform script run. If the parameter is omitted the
# evaluation will be performed in the context of the inspected page.
optional ExecutionContextId executionContextId
returns
# Id of the script.
optional ScriptId scriptId
# Exception details.
optional ExceptionDetails exceptionDetails
# Disables reporting of execution contexts creation.
command disable
# Discards collected exceptions and console API calls.
command discardConsoleEntries
# Enables reporting of execution contexts creation by means of `executionContextCreated` event.
# When the reporting gets enabled the event will be sent immediately for each existing execution
# context.
command enable
# Evaluates expression on global object.
command evaluate
parameters
# Expression to evaluate.
string expression
# Symbolic group name that can be used to release multiple objects.
optional string objectGroup
# Determines whether Command Line API should be available during the evaluation.
optional boolean includeCommandLineAPI
# In silent mode exceptions thrown during evaluation are not reported and do not pause
# execution. Overrides `setPauseOnException` state.
optional boolean silent
# Specifies in which execution context to perform evaluation. If the parameter is omitted the
# evaluation will be performed in the context of the inspected page.
optional ExecutionContextId contextId
# Whether the result is expected to be a JSON object that should be sent by value.
optional boolean returnByValue
# Whether preview should be generated for the result.
experimental optional boolean generatePreview
# Whether execution should be treated as initiated by user in the UI.
optional boolean userGesture
# Whether execution should `await` for resulting value and return once awaited promise is
# resolved.
optional boolean awaitPromise
# Whether to throw an exception if side effect cannot be ruled out during evaluation.
# This implies `disableBreaks` below.
experimental optional boolean throwOnSideEffect
# Terminate execution after timing out (number of milliseconds).
experimental optional TimeDelta timeout
# Disable breakpoints during execution.
experimental optional boolean disableBreaks
# Reserved flag for future REPL mode support. Setting this flag has currently no effect.
experimental optional boolean replMode
returns
# Evaluation result.
RemoteObject result
# Exception details.
optional ExceptionDetails exceptionDetails
# Returns the isolate id.
experimental command getIsolateId
returns
# The isolate id.
string id
# Returns the JavaScript heap usage.
# It is the total usage of the corresponding isolate not scoped to a particular Runtime.
experimental command getHeapUsage
returns
# Used heap size in bytes.
number usedSize
# Allocated heap size in bytes.
number totalSize
# Returns properties of a given object. Object group of the result is inherited from the target
# object.
command getProperties
parameters
# Identifier of the object to return properties for.
RemoteObjectId objectId
# If true, returns properties belonging only to the element itself, not to its prototype
# chain.
optional boolean ownProperties
# If true, returns accessor properties (with getter/setter) only; internal properties are not
# returned either.
experimental optional boolean accessorPropertiesOnly
# Whether preview should be generated for the results.
experimental optional boolean generatePreview
returns
# Object properties.
array of PropertyDescriptor result
# Internal object properties (only of the element itself).
optional array of InternalPropertyDescriptor internalProperties
# Object private properties.
experimental optional array of PrivatePropertyDescriptor privateProperties
# Exception details.
optional ExceptionDetails exceptionDetails
# Returns all let, const and class variables from global scope.
command globalLexicalScopeNames
parameters
# Specifies in which execution context to lookup global scope variables.
optional ExecutionContextId executionContextId
returns
array of string names
command queryObjects
parameters
# Identifier of the prototype to return objects for.
RemoteObjectId prototypeObjectId
# Symbolic group name that can be used to release the results.
optional string objectGroup
returns
# Array with objects.
RemoteObject objects
# Releases remote object with given id.
command releaseObject
parameters
# Identifier of the object to release.
RemoteObjectId objectId
# Releases all remote objects that belong to a given group.
command releaseObjectGroup
parameters
# Symbolic object group name.
string objectGroup
# Tells inspected instance to run if it was waiting for debugger to attach.
command runIfWaitingForDebugger
# Runs script with given id in a given context.
command runScript
parameters
# Id of the script to run.
ScriptId scriptId
# Specifies in which execution context to perform script run. If the parameter is omitted the
# evaluation will be performed in the context of the inspected page.
optional ExecutionContextId executionContextId
# Symbolic group name that can be used to release multiple objects.
optional string objectGroup
# In silent mode exceptions thrown during evaluation are not reported and do not pause
# execution. Overrides `setPauseOnException` state.
optional boolean silent
# Determines whether Command Line API should be available during the evaluation.
optional boolean includeCommandLineAPI
# Whether the result is expected to be a JSON object which should be sent by value.
optional boolean returnByValue
# Whether preview should be generated for the result.
optional boolean generatePreview
# Whether execution should `await` for resulting value and return once awaited promise is
# resolved.
optional boolean awaitPromise
returns
# Run result.
RemoteObject result
# Exception details.
optional ExceptionDetails exceptionDetails
# Enables or disables async call stacks tracking.
command setAsyncCallStackDepth
redirect Debugger
parameters
# Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async
# call stacks (default).
integer maxDepth
experimental command setCustomObjectFormatterEnabled
parameters
boolean enabled
experimental command setMaxCallStackSizeToCapture
parameters
integer size
# Terminate current or next JavaScript execution.
# Will cancel the termination when the outer-most script execution ends.
experimental command terminateExecution
# If executionContextId is empty, adds binding with the given name on the
# global objects of all inspected contexts, including those created later,
# bindings survive reloads.
# If executionContextId is specified, adds binding only on global object of
# given execution context.
# Binding function takes exactly one argument, this argument should be string,
# in case of any other input, function throws an exception.
# Each binding function call produces Runtime.bindingCalled notification.
experimental command addBinding
parameters
string name
optional ExecutionContextId executionContextId
# This method does not remove binding function from global object but
# unsubscribes current runtime agent from Runtime.bindingCalled notifications.
experimental command removeBinding
parameters
string name
# Notification is issued every time when binding is called.
experimental event bindingCalled
parameters
string name
string payload
# Identifier of the context where the call was made.
ExecutionContextId executionContextId
# Issued when console API was called.
event consoleAPICalled
parameters
# Type of the call.
enum type
log
debug
info
error
warning
dir
dirxml
table
trace
clear
startGroup
startGroupCollapsed
endGroup
assert
profile
profileEnd
count
timeEnd
# Call arguments.
array of RemoteObject args
# Identifier of the context where the call was made.
ExecutionContextId executionContextId
# Call timestamp.
Timestamp timestamp
# Stack trace captured when the call was made. The async stack chain is automatically reported for
# the following call types: `assert`, `error`, `trace`, `warning`. For other types the async call
# chain can be retrieved using `Debugger.getStackTrace` and `stackTrace.parentId` field.
optional StackTrace stackTrace
# Console context descriptor for calls on non-default console context (not console.*):
# 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call
# on named context.
experimental optional string context
# Issued when unhandled exception was revoked.
event exceptionRevoked
parameters
# Reason describing why exception was revoked.
string reason
# The id of revoked exception, as reported in `exceptionThrown`.
integer exceptionId
# Issued when exception was thrown and unhandled.
event exceptionThrown
parameters
# Timestamp of the exception.
Timestamp timestamp
ExceptionDetails exceptionDetails
# Issued when new execution context is created.
event executionContextCreated
parameters
# A newly created execution context.
ExecutionContextDescription context
# Issued when execution context is destroyed.
event executionContextDestroyed
parameters
# Id of the destroyed context
ExecutionContextId executionContextId
# Issued when all executionContexts were cleared in browser
event executionContextsCleared
# Issued when object should be inspected (for example, as a result of inspect() command line API
# call).
event inspectRequested
parameters
RemoteObject object
object hints
# This domain is deprecated.
deprecated domain Schema
# Description of the protocol domain.
type Domain extends object
properties
# Domain name.
string name
# Domain version.
string version
# Returns supported domains.
command getDomains
returns
# List of supported domains.
array of Domain domains