Everyone knows that debugging is twice as hard as writing the code in the first place. At some point your program, which did billions of things per second, has diverged from your expectations and you need to figure out where. Time travel debugging can be incredibly powerful: it allows you to rewind your program's execution to any line of code that executed and see any piece of program state at any time. Setting a watchpoint (aka data breakpoint) on a suspicious-looking data and winding back to the line of code that last changed that data is particularly helpful.
For decades time travel debuggers have been toys, but now they're here for real. The latest breed have good performance and scale well to real-world, complex code. This talk will show demos of different tools on different platforms (open-source and proprietary) and get under the hood to explain how they work so that you can get the best out of them.