Time Travel Debugging - Debug Complex C++ Bugs With Software from Undo
summary
Demo shows Undo’s time travel debugger recording instruction-level traces of a running process (Chocolate Doom demo) and replaying them to rewind from a single pixel to the rendering routine, the projected sprite, and the damage routine that shot the zombie. A separate demo finds why integer_sqrt(255) returns 0 by using the last command to locate a cache hit corrupted by truncation of an adjacent -1. Implementation uses JIT instrumentation, snapshot + event log replay, and single-thread serialization; works on large workloads and multiday runs.
AI-written summary · about
chapters (11)
- 0:00Time travel debugging intro
- 2:12Debugging Doom with time travel
- 9:42C++ debugging pain points
- 17:16Why time travel debugging matters
- 18:21Cache corruption bug debug
- 29:06Building a debugging time machine
- 36:54Handling non-determinism
- 41:50Recording at process boundaries
- 43:56Measuring execution time
- 51:33Memory determinism & threading
- 57:30Q&A
related talks
42mTime Travel Debugging - It’s Time to Debug Different
01h 29mHow do Time Travel Debuggers Work? - Design and Implementation of a Time Travel Debugger
01h 01m“Time Travel Debugging..."
01h 26mBoost your C/C++ Developer's Debugging Powers with GDB
57mModern Linux C++ debugging tools - under the covers
44mA Guide to Debugging C++ Code: Practical and Interactive Examples
57mLessons from 20 years of Debugging C++ Code
24mFighting Test Flakiness with Time Machines
