• Simon Zünd's avatar
    [debug] Add new 'CreateMessageFromException' function · c0682832
    Simon Zünd authored
    CDP has a "ExceptionDetails" structure that is attached to various
    CDP commands, e.g. "Runtime#exceptionThrown" or "Runtime#evaluate".
    The stack trace in the "ExceptionDetails" structure is used in
    various places in DevTools. The information in the "ExceptionDetails"
    structure is extracted from a v8::Message object. Message objects
    are normally created at the exception throw site and may augment
    the error with manually inspecting the stack (both to capture a fresh
    stack trace in some cases, as well as to calculate location info).
    
    The problem is that in some cases we want to get an "ExceptionDetails"
    structure after the fact, e.g. when logging a JS "Error" object in
    a catch block. This means we can't reuse Isolate::CreateMessage as
    the JS stack at call time is unrelated to the time when an Error
    object was thrown.
    
    To re-use some of the code, this CL introduces a new
    "CreateMessageFromException" method that is only available from the
    debugging interface (not public V8 API!). The new method works
    similar to Isolate::CreateMessage, but:
      1) Does not look at the current JS stack, neither for a fresh
         stack trace nor for location information.
      2) Only uses the "detailed" stack trace for location info.
         This is because the "simple" stack trace could have already
         been serialized by accessing Error#stack.
    
    Bug: chromium:1278650
    Doc: https://bit.ly/runtime-get-exception-details
    Change-Id: I0144516001c71786b9f76ae4dec4442fa1468c5b
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3337257Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78586}
    c0682832
Name
Last commit
Last update
.github Loading commit data...
bazel Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.bazelrc Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.mailmap Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LOONG_OWNERS Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...