• 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
..
gdb-server-thread.cc Loading commit data...
gdb-server-thread.h Loading commit data...
gdb-server.cc Loading commit data...
gdb-server.h Loading commit data...
session.cc Loading commit data...
session.h Loading commit data...
target.cc Loading commit data...
target.h Loading commit data...
transport.cc Loading commit data...
transport.h Loading commit data...
util.h Loading commit data...