Deterministic debugging with Delve And the state of Delve

Learn how to eliminate non-determinism in debugging with Delve, a record and replay debugger, and discover the latest features and advancements in this six-year-old project.

Key takeaways
  • Deterministic debugging with Delve aims to eliminate non-determinism in the debugging process.
  • RR (Record Replay) is the preferred backend for Delve.
  • RR runs single-threaded and records all kernel instructions.
  • RR does not record kernel execution, which is a trade-off for its low overhead.
  • RR can replay the execution of a process faithfully.
  • The solution to deterministic debugging is record and replay.
  • The project has received support from the Go team and has had 175 commits over the last year.
  • New features include function call support, improved handling of optimized binaries, and support for debugging Go programs.
  • Deterministic debugging is achieved by recording the execution of a process and replaying it repeatedly until a bug is found.
  • Non-determinism can be eliminated by recording everything that happens in a process, including randomized operations.
  • The speaker has been experimenting with a scenario where a person wakes up every day to find that it’s the same day, and the connection to deterministic debugging is that every single time the process is executed, the output is the same.
  • The speaker also mentions that Andy Parkes did a lot of the hard work on Delve.
  • Many people are unaware of deterministic debugging and how it can be used to reproduce bugs.
  • Some people may not find this style of debugging useful, as it can be slow and require additional setup.
  • The speaker discusses options for using RR, including a manual option and a scripting feature.
  • The speaker also mentions that the project has received support for debugging Pis and position counters.
  • The speaker sets a goal for the project to eliminate all sources of non-determinism.
  • The speaker concludes by mentioning that the project is six years old and has received support from the Go team.
  • The speaker also mentions that the project has received support for debugging Go programs on ARM64 architecture.
  • The speaker encourages people to learn more about deterministic debugging and try it out in their own workflow.