# rr-debugger/rr

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rr-debugger-rr).**

10,542 stars · 661 forks · C++ · NOASSERTION

## Links

- GitHub: https://github.com/rr-debugger/rr
- Homepage: http://rr-project.org/
- awesome-repositories: https://awesome-repositories.com/repository/rr-debugger-rr.md

## Topics

`debugger` `gdb` `linux` `reverse-execution`

## Description

rr is a deterministic record and replay framework and reverse debugger for Linux processes. It provides a deterministic execution environment that captures program execution, allowing bugs and crashes to be reproduced exactly through replay.

The tool enables reverse program execution, allowing a developer to move the program counter backward through recorded history to trace a bug from its effect back to its source. It utilizes a recording mechanism that ensures a process run can be replayed with identical memory and register states.

The framework covers low-level software analysis and native application debugging. It supports the use of data breakpoints to monitor memory locations during replay and identifies the root causes of memory corruption and timing issues.

A containerized build process is provided for consistent compilation of the tool, including support for Android tool compilation.

## Tags

### Operating Systems & Systems Programming

- [Execution State Recording](https://awesome-repositories.com/f/operating-systems-systems-programming/execution-state-recording.md) — Captures a process run into a recording for deterministic replay to reproduce bugs and crashes exactly. ([source](https://github.com/rr-debugger/rr#readme))
- [State Snapshotting](https://awesome-repositories.com/f/operating-systems-systems-programming/computer-architecture/instruction-execution-models/instruction-level-emulators/state-snapshotting.md) — Captures full CPU and memory states at periodic intervals to enable fast seeking during reverse execution.
- [System Call Interceptors](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-calls/system-call-interceptors.md) — Intercepts interactions between the application and the kernel to ensure identical environment responses during replay.
- [Low-Level Debuggers](https://awesome-repositories.com/f/operating-systems-systems-programming/low-level-debuggers.md) — Inspects memory and program state changes over time using data breakpoints and reverse execution to find root causes.
- [Memory State Restoration](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-state-restoration.md) — Loads saved memory images into the process address space to recreate specific points in program history.
- [Native Application Debugging](https://awesome-repositories.com/f/operating-systems-systems-programming/native-application-debugging.md) — Analyzes complex memory corruption and timing issues in native applications by recording and replaying process runs.

### Development Tools & Productivity

- [Deterministic Record and Replay Frameworks](https://awesome-repositories.com/f/development-tools-productivity/deterministic-record-and-replay-frameworks.md) — Implements a system that captures program execution to allow exact reproduction of bugs and crashes through deterministic replay.
- [Time-Travel Debuggers](https://awesome-repositories.com/f/development-tools-productivity/time-travel-debuggers.md) — Allows the debugger to move the program counter backward through recorded history to trace bugs from effect to source. ([source](https://github.com/rr-debugger/rr/wiki/Testimonials))

### Software Engineering & Architecture

- [Execution Replay](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-schedulers/deterministic-runners/execution-replay.md) — Provides a mechanism to reproduce process runs by forcing the CPU to follow a recorded sequence of events.
- [Deterministic Execution Environments](https://awesome-repositories.com/f/software-engineering-architecture/deterministic-execution-environments.md) — Provides a recording mechanism that ensures a process run can be replayed with identical memory and register states.
- [Memory Access Breakpoints](https://awesome-repositories.com/f/software-engineering-architecture/shared-memory-management/memory-access-breakpoints.md) — Monitors specific memory locations during replay and halts execution when data changes to identify where a value was modified. ([source](https://github.com/rr-debugger/rr/wiki/Testimonials))

### System Administration & Monitoring

- [Execution Tracers](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/execution-tracers.md) — Records system calls and process state to enable stepping backward through application history.
- [Reverse Execution Simulation](https://awesome-repositories.com/f/system-administration-monitoring/execution-history-auditors/reverse-execution-simulation.md) — Simulates backward movement by restoring the most recent snapshot and replaying forward to a target instruction.
- [Non-Deterministic Event Logging](https://awesome-repositories.com/f/system-administration-monitoring/system-event-logging/non-deterministic-event-logging.md) — Records system call results and interrupts to a log for deterministic playback during the replay phase.
- [Crash Reproduction](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/failure-analysis-tools/crash-reporters/crash-reproduction.md) — Captures program execution and replays it exactly to reproduce elusive bugs and crashes every time.

### Part of an Awesome List

- [Command Line Tools](https://awesome-repositories.com/f/awesome-lists/devtools/command-line-tools.md) — Listed in the “Command Line Tools” section of the The Book Of Secret Knowledge awesome list.
