v8/tools
Seth Brenith 0921e8f28b Reland "Add postmortem debugging helper library"
This is a reland of 517ab73fd7

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/+/1717090
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#63008}
2019-07-31 14:30:19 +00:00
..
blink_tests [test] Remove obsolete blink test skips 2019-01-18 12:30:23 +00:00
cfi Reland "Move API-related files" 2019-05-17 12:52:27 +00:00
clusterfuzz [asm.js] Propagate language mode to exported functions. 2019-07-19 11:47:48 +00:00
debug_helper Reland "Add postmortem debugging helper library" 2019-07-31 14:30:19 +00:00
dev [wasm-c-api] Add tests and fixes 2019-05-28 09:57:04 +00:00
gcmole Reland "Add postmortem debugging helper library" 2019-07-31 14:30:19 +00:00
generate_shim_headers
heap-stats [obj-stats] Fix heap-stats label order 2019-07-25 14:43:35 +00:00
ignition Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
jsfunfuzz [test] update the jsfunfuzz archive in Google Storage 2018-12-18 15:00:35 +00:00
link_clicker.extension
mb Add json output arg to mg gen and analyze. 2019-07-22 19:33:20 +00:00
memory
msan
ninja
node Remove android_tools deps for v8 repo 2019-07-03 17:59:11 +00:00
perf
profview [profview] Use requestAnimationFrame to schedule a render 2019-01-15 13:08:46 +00:00
profviz [Tools] Add support to tickprocessor to symbolize libraries embedded in APKs 2019-05-28 16:18:47 +00:00
release [tools] Remove cctest from non-ref official archives 2019-04-12 09:17:52 +00:00
sanitizers Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
snapshot [Builtins] Infrastructure for source positions in stubs/builtins 2019-01-22 19:09:36 +00:00
sodium
testrunner [test] Add --assert-types flag to linux x64 release builders 2019-07-12 14:30:49 +00:00
toolchain [build] Add support for the other MIPS architectures 2018-03-19 10:43:07 +00:00
torque Don't write formatted tq files if nothing changed 2019-06-25 12:16:21 +00:00
tracing/proto-converter [tracing] Add the proto to json converter for trace events 2019-03-25 08:56:18 +00:00
turbolizer [turbolizer] Fix keyboard shortcuts in info tab to reveal input/output nodes. 2019-07-09 14:15:52 +00:00
ubsan [test] Remove obsolete ubsan suppression 2019-02-20 09:16:57 +00:00
unittests Check that function was prepared before optimizing using manually 2019-07-11 14:57:49 +00:00
v8.xcodeproj
valgrind/asan [build] Add testrunner data deps 2018-03-26 12:17:08 +00:00
vim [vim] Update CrBuild to use autoninja. 2019-05-27 06:27:29 +00:00
visual_studio
wasm [wasm][tests] Add proposal tests to the wasm spec tests 2019-07-17 15:31:31 +00:00
wasm-compilation-hints [wasm-hints] Add tool to inject compilation hints into Wasm modules 2019-05-23 15:16:46 +00:00
__init__.py [test] make python recognize tools and tools/unittests as packages 2018-12-17 12:12:43 +00:00
adb-d8.py Migrate android SDK path to third_party/android_sdk/public for v8 repo 2019-03-21 12:43:39 +00:00
android-build.sh
android-ll-prof.sh
android-run.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
android-sync.sh
arguments.js
avg.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
bash-completion.sh Move remaining files in src/ 2019-05-24 18:24:36 +00:00
bigint-tester.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
BUILD.gn Reland "Add postmortem debugging helper library" 2019-07-31 14:30:19 +00:00
callstats.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
callstats.py [browser-stories] refactor reading logs 2019-07-17 13:42:32 +00:00
callstats.py.vpython [tools] Fix platform specification for scipi 2018-08-17 18:49:49 +00:00
check-inline-includes.sh
check-static-initializers.sh [logging] Systematically emit CodeCreateEvents for builtins 2019-05-23 11:55:36 +00:00
check-unused-bailouts.sh
check-unused-symbols.sh [cleanup] Remove unused heap-symbols and add tool. 2018-11-08 17:57:05 +00:00
codemap.js Revert "[prof] Attribute ticks in embedded builtins correctly" 2019-05-27 10:11:14 +00:00
collect_deprecation_stats.sh [objects] Deprecate GetIsolate/Heap behind a flag 2018-06-01 15:19:21 +00:00
compare-table-gen.js
concatenate-files.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
consarray.js
cpu.sh
cross_build_gcc.sh
csvparser.js Escape backslashes when logging. 2018-08-10 09:09:19 +00:00
deprecation_stats.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
DEPS
detect-builtins.js
disasm.py
draw_instruction_graph.sh
dump-cpp.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
dumpcpp-driver.js [Tools] Add support to tickprocessor to symbolize libraries embedded in APKs 2019-05-28 16:18:47 +00:00
dumpcpp.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
eval_gc_nvp.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
eval_gc_time.sh [in-place weak refs] Remove WeakCell 2018-08-14 08:05:05 +00:00
find_depot_tools.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
find-commit-for-patch.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
freebsd-tick-processor
fuzz-harness.sh
gc_nvp_common.py
gc-nvp-to-csv.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gc-nvp-trace-processor.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gdb-v8-support.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gdbinit [gdb] Add gdb macro 'pn' that prints TurboFan nodes 2019-06-27 13:29:08 +00:00
gen-inlining-tests.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gen-keywords-gen-h.py [parser] Remove #line directives from keywords-gen.h 2018-11-28 15:22:05 +00:00
gen-postmortem-metadata.py [torque] Use @generateCppClass in some simple cases 2019-07-15 15:29:08 +00:00
generate-builtins-tests.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
generate-header-include-checks.py Move remaining files in src/ 2019-05-24 18:24:36 +00:00
generate-ten-powers.scm
get_landmines.py [landmines] Force clean build to fix Misc V8 Linux gcc 2019-06-06 21:52:11 +00:00
grokdump.py [grokdump] Fix outdated arm64 identifier value 2019-06-07 08:30:56 +00:00
ic-explorer.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
ic-processor
ic-processor-driver.js
ic-processor.js [tools] Make ic-processor print global loads/stores. 2019-01-18 12:35:43 +00:00
js2c.py Move remaining files in src/ 2019-05-24 18:24:36 +00:00
linux-tick-processor [tools] Make tick processor report error to stderr. 2018-11-06 14:25:55 +00:00
ll_prof.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
lldb_commands.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
locs.py [tools] Use ThreadPoolExecutor with reasonable job count default 2019-04-08 10:41:46 +00:00
logreader.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
mac-nm
mac-tick-processor
Makefile.tags [Makefile] Move tags generation to standalone Makefile 2018-01-26 12:03:32 +00:00
map-processor tick processor: fix arguments and comments 2018-10-29 09:48:23 +00:00
map-processor-driver.js [tools] All new shiny maptracer.html 2017-12-18 12:48:00 +00:00
map-processor.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
map-processor.js [tools] Add file positions to map-explorer 2018-11-29 11:42:25 +00:00
mips_toolchain.tar.gz.sha1 [build] Enable downloading mips toolchain via runhooks 2018-01-31 14:38:43 +00:00
objdump-v8
OWNERS Use COMMON_OWNERS for tools/ 2019-07-02 07:25:11 +00:00
parse-processor tick processor: fix arguments and comments 2018-10-29 09:48:23 +00:00
parse-processor-driver.js [tools] New parse processor tool 2017-12-20 13:07:17 +00:00
parse-processor.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
parse-processor.js [tools] Improve function event logging and parse processor 2018-07-16 14:05:14 +00:00
perf-compare.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
plot-timer-events tick processor: fix arguments and comments 2018-10-29 09:48:23 +00:00
predictable_wrapper.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
PRESUBMIT.py [tools] Clean up presubmit and run all unittests 2019-02-01 10:27:29 +00:00
profile_view.js
profile.js [profview] Avoid treating embedded builtins as CPP code. 2018-09-27 12:14:15 +00:00
run_perf.py [perf] mask timeout failures if they succeed after retries 2019-07-16 09:38:40 +00:00
run-clang-tidy.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
run-llprof.sh
run-num-fuzzer.py [test] Implement gc fuzzer with test processors 2018-01-19 16:58:49 +00:00
run-perf.sh [cleanup] Replace underscore by minus in d8 flags 2019-04-03 12:32:08 +00:00
run-tests.py
run-wasm-api-tests.py [wasm-c-api] Introducing WasmCapiFunction 2019-05-08 14:28:06 +00:00
run.py
shell-utils.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
SourceMap.js
splaytree.js
stats-viewer.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
test262-results-parser.js test262 roll 2018-08-28 21:18:23 +00:00
tick-processor.html [Tools] Add support to tickprocessor to symbolize libraries embedded in APKs 2019-05-28 16:18:47 +00:00
tickprocessor-driver.js [Tools] Add support to tickprocessor to symbolize libraries embedded in APKs 2019-05-28 16:18:47 +00:00
tickprocessor.js [tools] Strip path from library when applying targetRootFS in tickprocessor 2019-06-28 15:07:24 +00:00
trace-maps-processor.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
try_perf.py [tools] Add support for --confidence-level flag to tools/try_perf.py 2019-06-14 12:33:49 +00:00
turbolizer-perf.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
update-object-macros-undef.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
v8_presubmit.py Enable cpplint 'runtime/references' warning 2019-07-08 09:59:36 +00:00
v8heapconst.py [WeakRefs] Make cleanup callback run as a task 2019-07-30 12:19:39 +00:00
whitespace.txt Whitespace change to trigger bots 2019-07-31 09:41:27 +00:00
windbg.js Added !mem and !where extensions to windbg.js 2019-06-21 16:03:38 +00:00
windows-tick-processor.bat