• Seth Brenith's avatar
    Reland "Add postmortem debugging helper library" · 0921e8f2
    Seth Brenith authored
    This is a reland of 517ab73f
    
    Updates since original: now compressed pointers passed to the function
    GetObjectProperties are required to be sign-extended. Previously, the
    function allowed zero-extended values, but that led to ambiguity on
    pointers like 0x88044919: is it compressed or is the heap range actually
    centered on 0x100000000?
    
    Original change's description:
    > Add postmortem debugging helper library
    >
    > This change begins to implement the functionality described in
    > https://docs.google.com/document/d/1evHnb1uLlSbvHAAsmOXyc25x3uh1DjgNa8u1RHvwVhk/edit#
    > for investigating V8 state in crash dumps.
    >
    > This change adds a new library, v8_debug_helper, for providing platform-
    > agnostic assistance with postmortem debugging. This library can be used
    > by extensions built for debuggers such as WinDbg or lldb. Its public API
    > is described by debug-helper.h; currently the only method it exposes is
    > GetObjectProperties, but we'd like to add more functionality over time.
    > The API surface is restricted to plain C-style structs and pointers, so
    > that it's easy to link from a debugger extension built with a different
    > toolchain.
    >
    > This change also adds a new cctest file to exercise some basic
    > interaction with the new library.
    >
    > The API function GetObjectProperties takes an object pointer (which
    > could be compressed, or weak, or a SMI), and returns a string
    > description of the object and a list of properties the object contains.
    > For now, the list of properties is entirely based on Torque object
    > definitions, but we expect to add custom properties in future updates so
    > that it can be easier to make sense of complex data structures such as
    > dictionaries.
    >
    > GetObjectProperties does several things that are intended to generate
    > somewhat useful results even in cases where memory may be corrupt or
    > unavailable:
    > - The caller may optionally provide a type string which will be used if
    >   the memory for the object's Map is inaccessible.
    > - All object pointers are compared against the list of known objects
    >   generated by mkgrokdump. The caller may optionally provide the
    >   pointers for the first pages of various heap spaces, to avoid spurious
    >   matches. If those pointers are not provided, then any matches are
    >   prefixed with "maybe" in the resulting description string, such as
    >   "maybe UndefinedValue (0x4288000341 <Oddball>)".
    >
    > Bug: v8:9376
    >
    > Change-Id: Iebf3cc2dea3133c7811bcefcdf38d9458b02fded
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1628012
    > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
    > Reviewed-by: Yang Guo <yangguo@chromium.org>
    > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#62882}
    
    Bug: v8:9376
    Change-Id: I866a1cc9d4c34bfe10c7b98462451fe69763cf3f
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1717090Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
    Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
    Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#63008}
    0921e8f2
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
test262 Loading commit data...
torque Loading commit data...
unittests Loading commit data...
wasm-api-tests Loading commit data...
wasm-js Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
OWNERS Loading commit data...