-
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: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Simon Zünd <szuend@chromium.org> Cr-Commit-Position: refs/heads/main@{#78586}
c0682832