Repolode
rr-debugger

rr-debugger/rr

A lightweight Linux tool that records program execution and replays it deterministically, adding reverse execution to gdb.

Stars
10,734
Forks
666
Open issues
477
Last commit
5 days ago

What is it?

rr records the execution of applications, including trees of processes and threads, and lets you replay that recording repeatedly under gdb. Because a replay reproduces the same execution, you can step backwards, set breakpoints on earlier events, and inspect state at any point in a past run. This makes it practical to chase down nondeterministic bugs that are hard to reproduce.

The debugger experience extends gdb rather than replacing it. Standard gdb features such as hardware data watchpoints remain available during replay, and the reverse-execution commands are added on top. The project is written in C++ and targets Linux.

rr depends on specific hardware and kernel support. It requires Linux kernel 4.7 or later and certain Intel, AMD Zen, or AArch64 CPUs, and it can run in VM guests that virtualize hardware performance counters.

Key features

  • 01Records execution of multi-process, multi-threaded applications for later replay.
  • 02Supports reverse execution commands inside gdb.
  • 03Keeps gdb hardware data watchpoints usable during replay.
  • 04Replays recordings deterministically, so a failing run can be examined repeatedly.
  • 05Runs on Linux with supported Intel, AMD Zen, and AArch64 CPUs.

Use cases

  • Debugging intermittent crashes or race conditions that do not reproduce on demand.
  • Stepping backwards from a failure to find the instruction that caused a bad value.
  • Investigating bugs in large multi-process or multi-threaded Linux programs.

Quick start

  1. 1

    Read the installation and building instructions on the project wiki

  2. 2

    Confirm your system meets the requirements (Linux kernel 4.7 or later, supported Intel, AMD Zen or AArch64 CPU)

Things to know

  • Linux only, and it requires specific supported CPUs or a VM that exposes hardware performance counters.
  • The license is listed as NOASSERTION, so check the repository's license terms before use.

Topics

#debugger#gdb#linux#reverse-execution#record-replay#c-plus-plus

FAQ

What is rr?
A lightweight Linux tool that records program execution and replays it deterministically, adding reverse execution to gdb. rr records the execution of applications, including trees of processes and threads, and lets you replay that recording repeatedly under gdb. Because a replay reproduces the same execution, you can step backwards, set breakpoints on earlier events, and inspect state at any point in a past run. This makes it practical to chase down nondeterministic bugs that are hard to reproduce.
Is rr free to use? What license does it have?
rr is open source under the Other license. Check the license terms before using it in commercial products.
Is rr still maintained?
Actively maintained. The last commit to rr was on Nov 2, 2026.
What can I use rr for?
Debugging intermittent crashes or race conditions that do not reproduce on demand. Stepping backwards from a failure to find the instruction that caused a bad value. Investigating bugs in large multi-process or multi-threaded Linux programs.
How do I install rr?
Read the installation and building instructions on the project wiki Confirm your system meets the requirements (Linux kernel 4.7 or later, supported Intel, AMD Zen or AArch64 CPU)
Where can I get rr?
The source code and installation instructions are on GitHub: https://github.com/rr-debugger/rr

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects

A native, user-mode, multi-process graphical debugger for local x64 debugging on Windows and Linux, currently in alpha.

Developer Tools#debugger#native-debugging#linker
8.8K+36 this week451CMITWell maintainedUpdated 2 days ago