• Seth Brenith's avatar
    Add postmortem debugging helper library · 517ab73f
    Seth Brenith authored
    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: 's avatarYang Guo <yangguo@chromium.org>
    Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#62882}
    517ab73f
Name
Last commit
Last update
..
blink_tests Loading commit data...
cfi Loading commit data...
clusterfuzz Loading commit data...
debug_helper Loading commit data...
dev Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
heap-stats Loading commit data...
ignition Loading commit data...
jsfunfuzz Loading commit data...
link_clicker.extension Loading commit data...
mb Loading commit data...
memory Loading commit data...
msan Loading commit data...
ninja Loading commit data...
node Loading commit data...
perf Loading commit data...
profview Loading commit data...
profviz Loading commit data...
release Loading commit data...
sanitizers Loading commit data...
snapshot Loading commit data...
sodium Loading commit data...
testrunner Loading commit data...
toolchain Loading commit data...
torque Loading commit data...
tracing/proto-converter Loading commit data...
turbolizer Loading commit data...
ubsan Loading commit data...
unittests Loading commit data...
v8.xcodeproj Loading commit data...
valgrind/asan Loading commit data...
vim Loading commit data...
visual_studio Loading commit data...
wasm Loading commit data...
wasm-compilation-hints Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
Makefile.tags Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
SourceMap.js Loading commit data...
__init__.py Loading commit data...
adb-d8.py Loading commit data...
android-build.sh Loading commit data...
android-ll-prof.sh Loading commit data...
android-run.py Loading commit data...
android-sync.sh Loading commit data...
arguments.js Loading commit data...
avg.py Loading commit data...
bash-completion.sh Loading commit data...
bigint-tester.py Loading commit data...
callstats.html Loading commit data...
callstats.py Loading commit data...
callstats.py.vpython Loading commit data...
check-inline-includes.sh Loading commit data...
check-static-initializers.sh Loading commit data...
check-unused-bailouts.sh Loading commit data...
check-unused-symbols.sh Loading commit data...
codemap.js Loading commit data...
collect_deprecation_stats.sh Loading commit data...
compare-table-gen.js Loading commit data...
concatenate-files.py Loading commit data...
consarray.js Loading commit data...
cpu.sh Loading commit data...
cross_build_gcc.sh Loading commit data...
csvparser.js Loading commit data...
deprecation_stats.py Loading commit data...
detect-builtins.js Loading commit data...
disasm.py Loading commit data...
draw_instruction_graph.sh Loading commit data...
dump-cpp.py Loading commit data...
dumpcpp-driver.js Loading commit data...
dumpcpp.js Loading commit data...
eval_gc_nvp.py Loading commit data...
eval_gc_time.sh Loading commit data...
find-commit-for-patch.py Loading commit data...
find_depot_tools.py Loading commit data...
freebsd-tick-processor Loading commit data...
fuzz-harness.sh Loading commit data...
gc-nvp-to-csv.py Loading commit data...
gc-nvp-trace-processor.py Loading commit data...
gc_nvp_common.py Loading commit data...
gdb-v8-support.py Loading commit data...
gdbinit Loading commit data...
gen-inlining-tests.py Loading commit data...
gen-keywords-gen-h.py Loading commit data...
gen-postmortem-metadata.py Loading commit data...
generate-builtins-tests.py Loading commit data...
generate-header-include-checks.py Loading commit data...
generate-ten-powers.scm Loading commit data...
get_landmines.py Loading commit data...
grokdump.py Loading commit data...
ic-explorer.html Loading commit data...
ic-processor Loading commit data...
ic-processor-driver.js Loading commit data...
ic-processor.js Loading commit data...
js2c.py Loading commit data...
linux-tick-processor Loading commit data...
ll_prof.py Loading commit data...
lldb_commands.py Loading commit data...
locs.py Loading commit data...
logreader.js Loading commit data...
mac-nm Loading commit data...
mac-tick-processor Loading commit data...
map-processor Loading commit data...
map-processor-driver.js Loading commit data...
map-processor.html Loading commit data...
map-processor.js Loading commit data...
mips_toolchain.tar.gz.sha1 Loading commit data...
objdump-v8 Loading commit data...
parse-processor Loading commit data...
parse-processor-driver.js Loading commit data...
parse-processor.html Loading commit data...
parse-processor.js Loading commit data...
perf-compare.py Loading commit data...
plot-timer-events Loading commit data...
predictable_wrapper.py Loading commit data...
profile.js Loading commit data...
profile_view.js Loading commit data...
run-clang-tidy.py Loading commit data...
run-llprof.sh Loading commit data...
run-num-fuzzer.py Loading commit data...
run-perf.sh Loading commit data...
run-tests.py Loading commit data...
run-wasm-api-tests.py Loading commit data...
run.py Loading commit data...
run_perf.py Loading commit data...
shell-utils.h Loading commit data...
splaytree.js Loading commit data...
stats-viewer.py Loading commit data...
test262-results-parser.js Loading commit data...
tick-processor.html Loading commit data...
tickprocessor-driver.js Loading commit data...
tickprocessor.js Loading commit data...
trace-maps-processor.py Loading commit data...
try_perf.py Loading commit data...
turbolizer-perf.py Loading commit data...
update-object-macros-undef.py Loading commit data...
v8_presubmit.py Loading commit data...
v8heapconst.py Loading commit data...
whitespace.txt Loading commit data...
windbg.js Loading commit data...
windows-tick-processor.bat Loading commit data...