• 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
..
api Loading commit data...
asmjs Loading commit data...
ast Loading commit data...
base Loading commit data...
builtins Loading commit data...
codegen Loading commit data...
common Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
d8 Loading commit data...
date Loading commit data...
debug Loading commit data...
deoptimizer Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
extensions Loading commit data...
flags Loading commit data...
handles Loading commit data...
heap Loading commit data...
ic Loading commit data...
init Loading commit data...
inspector Loading commit data...
interpreter Loading commit data...
json Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parsing Loading commit data...
profiler Loading commit data...
protobuf Loading commit data...
regexp Loading commit data...
roots Loading commit data...
runtime Loading commit data...
sanitizer Loading commit data...
snapshot Loading commit data...
strings Loading commit data...
tasks Loading commit data...
third_party Loading commit data...
torque Loading commit data...
tracing Loading commit data...
trap-handler Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...