{{lowercase title}} {{notability|date=January 2023}}

{{Infobox software | title = rr | logo = <!-- File name without 'File:' --> | logo caption = | logo alt = | logo size = | collapsible = <!-- Any text here will collapse the screenshot. --> | screenshot = <!-- File name without 'File:' --> | screenshot size = | screenshot alt = | caption = | other_names = | author = | developer = | released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | ver layout = <!-- simple (default) or stacked --> | discontinued = <!-- Set to yes, if software is discontinued, otherwise omit. --> | latest release version = | latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | latest preview version = | latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | repo = <!-- {{URL|example.org}} --> | qid = | programming language = | middleware = | engine = <!-- or |engines= --> | operating system = | platform = | included with = | replaces = | replaced_by = | service_name = | size = | standard = | language = | language count = <!-- Number only --> | language footnote = | genre = | license = <!-- or |licence= --> | website = <!-- {{URL|example.org}} or {{official URL}} --> | AsOf = }}

In computing, '''rr''' is a debugging tool for Linux designed to record and replay program execution. During the replay phase, rr provides an enhanced gdb debugging experience that supports reverse execution.<ref>{{Cite web|url=https://robert.ocallahan.org/2015/10/rr-40-released-with-reverse-execution.html|title=rr 4.0 Released With Reverse Execution}}</ref>

rr was originally developed by Mozilla to debug Mozilla Firefox on commodity hardware and software.<ref>{{Cite web|url=https://robert.ocallahan.org/2014/03/introducing-rr.html|title=Introducing rr}}</ref> rr is now widely used outside Mozilla and capable of debugging software such as Google Chrome, QEMU, and LibreOffice.<ref>{{Cite web|url=https://rr-project.org/|title=rr: lightweight recording & deterministic debugging|website=rr-project.org}}</ref> rr is free software.<ref name="auto">{{Cite web|url=https://github.com/rr-debugger/rr|title=rr-debugger/rr|website=GitHub|date=24 December 2022 }}</ref>

== Design == During the recording phase, rr records all inputs to a Linux process group from the kernel, as well as nondeterministic CPU effects (such as rdtsc). These inputs are logged to disk and become the "trace". Once the trace is recorded, it can be replayed as many times as desired and all state will be reproduced exactly. During replay rr will act as a gdbserver providing a gdb experience capable of reverse-execution. Because a bug can be replayed over and over again, rr enables new methods of debugging issues that are very difficult to solve with traditional debuggers.<ref name="auto"/>

rr's design is documented in the paper [https://arxiv.org/abs/1610.02144 Lightweight User-Space Record And Replay], with more details in [https://arxiv.org/abs/1705.05937 Engineering Record And Replay For Deployability].

== See also == * gdb * Record and replay debugging

== References == {{Reflist}}

== External links == * {{Official website|http://rr-project.org/}}

Category:Debuggers