~/talk

Internal Architecture of Delve, a Debugger For Go

slides:none on file

Delve is a Go-written symbolic debugger with a three-layer design: a target/proc layer that uses proc/native (ptrace/waitfor debug event/exception ports) or proc/gdbserial to connect to rr or debugserver, a symbolic layer that reads DWARF sections (.debug_info, .debug_line, .debug_frame) and a headless UI communicating over JSON‑RPC/TCP. It handles Go-specific problems: goroutine stacks can move when morestack runs, so breakpoints skip the prologue; variable evaluation reads memory then decodes types; next/step-over uses conditional breakpoints checking goroutine identity and stack frame to avoid concurrency and recursion traps.

AI-written summary · about

  1. 0:00Intro
  2. 1:10What is This
  3. 2:15CPU
  4. 4:22Call Stack
  5. 10:02Target Layer in Delve (3)
  6. 16:20DWARF Sections (1)
  7. 17:44debug_info example (2)
  8. 20:06Stacktraces
  9. 20:26Symbolic Layer in Delve
  10. 20:46Actual Architecture of Delve (2)
  11. 21:46User Interfaces for Delve
  12. 22:18Actual Architecture of Delve (3)
  13. 24:01Variable Evaluation gdb vs delve
  14. 24:56Creating Breakpoints
  15. 29:08Wrong "next" strategy, step 3
  16. 30:01Wrong "next" strategy, bug 2
  17. 31:44Wrong "next" strategy, bug 1: Can't handle concurrency
  18. 32:13Better "next" strategy
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.