v8/test/inspector/debugger/class-private-fields-scopes-expected.txt
Simon Zünd ec41a70e38 [inspector] Add 'canBeRestarted' flag to CallFrames when debugger pauses
Doc: https://bit.ly/revive-restart-frame
Context: https://crrev.com/c/3582395 (whole feature)

This CL adds a new optional flag `canBeRestarted` to every call frame
in Debugger.paused events. As the name suggests, the flag indicates
whether we can restart a particular frame through Debugger.restartFrame
once implemented.

We are not able to safely restart all frames:
  * We don't support WASM frames
  * We don't support frames where resumable functions (async fns,
    generators) and embedder C++ frames are between the top-most
    frame and the to-be-restarted frame.

Note that from a CDP perspective the flag doesn't actually guarantee
a successful restart. CDP clients can issue
CDP commands between the Debugger.paused event and before a user
decides to restart a frame, which can potentially mess
with the stack.

The `canBeRestarted` flag tests are folded into the
Debugger.restartFrame tests. As the feature is not yet fully
implemented we short-circuit most of the tests for now and only
run them up until the first Debugger.restartFrame call fails
(except "fails-for-resumables.js").
This means the tests exercise the `canBeRestarted` flag, but not
the restarting functionality itself.

R=bmeurer@chromium.org, kimanh@chromium.org

Bug: chromium:1303521
Change-Id: I01ab46dc3557ab8383960969fbe03e00604cc5e2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596160
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/main@{#80046}
2022-04-20 12:40:34 +00:00

145 lines
3.7 KiB
Plaintext

Test private class fields in scopes
Running test: testScopesPaused
[
[0] : {
callFrameId : <callFrameId>
canBeRestarted : true
functionLocation : {
columnNumber : 16
lineNumber : 4
scriptId : <scriptId>
}
functionName : A
location : {
columnNumber : 6
lineNumber : 5
scriptId : <scriptId>
}
scopeChain : [
[0] : {
endLocation : {
columnNumber : 5
lineNumber : 6
scriptId : <scriptId>
}
name : A
object : {
className : Object
description : Object
objectId : <objectId>
type : object
}
startLocation : {
columnNumber : 16
lineNumber : 4
scriptId : <scriptId>
}
type : local
}
[1] : {
object : {
className : global
description : global
objectId : <objectId>
type : object
}
type : global
}
]
this : {
className : A
description : A
objectId : <objectId>
type : object
}
url :
}
[1] : {
callFrameId : <callFrameId>
canBeRestarted : true
functionLocation : {
columnNumber : 12
lineNumber : 1
scriptId : <scriptId>
}
functionName : run
location : {
columnNumber : 2
lineNumber : 8
scriptId : <scriptId>
}
scopeChain : [
[0] : {
endLocation : {
columnNumber : 1
lineNumber : 9
scriptId : <scriptId>
}
name : run
object : {
className : Object
description : Object
objectId : <objectId>
type : object
}
startLocation : {
columnNumber : 12
lineNumber : 1
scriptId : <scriptId>
}
type : local
}
[1] : {
object : {
className : global
description : global
objectId : <objectId>
type : object
}
type : global
}
]
this : {
className : global
description : global
objectId : <objectId>
type : object
}
url :
}
[2] : {
callFrameId : <callFrameId>
canBeRestarted : true
functionLocation : {
columnNumber : 0
lineNumber : 0
scriptId : <scriptId>
}
functionName :
location : {
columnNumber : 0
lineNumber : 0
scriptId : <scriptId>
}
scopeChain : [
[0] : {
object : {
className : global
description : global
objectId : <objectId>
type : object
}
type : global
}
]
this : {
className : global
description : global
objectId : <objectId>
type : object
}
url :
}
]