rr is a record and replay debugger that extends gdb with reverse-execution capabilities for debugging applications on Linux.
The tool addresses the challenge of debugging complex, non-deterministic issues by recording a complete execution trace of a program and its entire process tree, then allowing developers to replay that execution deterministically. During replay, gdb can step backward through code, set reverse breakpoints, and use hardware data watchpoints to inspect program state at any point in the recorded execution. This approach transforms debugging from a forward-only, trial-and-error process into one where developers can explore execution history efficiently.
Adoption requires a Linux system with a compatible CPU: Intel processors from Nehalem generation onward, certain AMD Zen or later processors, or specific AArch64 microarchitectures including Apple Silicon. The kernel must be version 4.7 or later. The tool works in virtual machine environments provided the VM supports hardware performance counter virtualization, with known compatibility on VMware, KVM, AWS, and GCP instances. Developers working on single-threaded or multi-threaded applications where reproducing bugs is difficult will find the most value; the reverse-execution and watchpoint integration with gdb makes it particularly suited to memory corruption issues and race conditions that are hard to catch in forward execution alone.
The project maintains a steady stream of commits addressing bug fixes and feature improvements, with pull requests receiving review and integration. Development activity shows consistent engagement with the codebase through incremental refinements rather than major architectural shifts. The tool continues to receive maintenance updates that expand hardware support and improve compatibility with newer kernel versions and processor families.