• 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
test-debug.cc 192 KB