• Paolo Severini's avatar
    Add initial support for Wasm debugging with LLDB: implements a GDB-remote stub · 03fc4149
    Paolo Severini authored
    This is the first piece of the wasm debugging prototype (besides the changes to
    add/remove breakpoints in WasmModuleObject made with
    https://chromium.googlesource.com/v8/v8.git/+/e699f39caed9a23f8e20bd3a0386a3236e272737).
    
    This changelist adds the infrastructure for a GDB-remote stub that will be used
    to manage debugging sessions via the gdb-remote protocol.
    It enables the creation and termination of debugging sessions over TCP
    connections that are managed in a separate thread.
    The logic to actually send, receive and decode GDB-remote packets will be part
    of a future changelist.
    
    Build with: v8_enable_wasm_gdb_remote_debugging = true
    Run with:
      --wasm-gdb-remote                  Enables Wasm debugging with LLDB
                                         (default: false)
      --wasm-gdb-remote-port             TCP port to be used for debugging
                                         (default: 8765)
      --wasm-pause-waiting-for-debugger  Pauses the execution of Wasm code waiting
                                         for a debugger (default: false)
      --trace-wasm-gdb-remote            Enables tracing of Gdb-remote packets
                                         (default: false)
    
    Note that most of this code is "borrowed" from the code of the Chromium NaCL
    GDB-remote stub (located in Chromium in src\native_client\src\trusted\debug_stub).
    
    Implementation details:
    - class GdbServer acts as a singleton manager for the gdb-remote stub. It is
      instantiated as soon as the first Wasm module is loaded in the Wasm engine.
    - class GdbServerThread spawns the worker thread for the TCP connection.
    - class Transport manages the socket connection, in a portable way.
    - class Session represents a remote debugging session.
    - class Target represents a debugging target and it’s the place where the
      debugging packets will be processed and will implement the logic to debug
      a Wasm engine.
    
    Bug: chromium:1010467
    Change-Id: Ib2324e5901f5ae1d855b96b99ef0995d407322b6
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1923407Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
    Commit-Queue: Paolo Severini <paolosev@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#66379}
    03fc4149
Name
Last commit
Last update
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...