Scroll to navigation

rr(1) User Commands rr(1)

NAME

rr - record and replay application execution

SYNOPSIS

rr dump[<options>] [<trace-dir>] [<event-specs>]
rr gdbinit
rr help[<command>]
rr ps[<trace-dir>]
rr record[<options>] <executable> [<exe-args>]
rr replay[<options>] [<trace-dir>]

DESCRIPTION

Commonoptions

force rr to assume it's running on a CPU with microarch name even if runtime detection says otherwise. name should be a string like `Ivy Bridge'.
compute and store (during recording) or read and verify (duringreplay) checksums of each of a tracee's memory mappings either at theend of all syscalls (on-syscalls), at all events (on-all-events), or starting from a global timepoint from-time.
dump memory at syscall or signal to the file tid.time_{rec,rep} in trace-dir; _rec for dumps during recording, _rep for dumps during replay.
force rr to do some things that don't seem like good ideas, such as launching an interactive emergency debugger if stderr isn't a tty.
verify that cached task mmaps match /proc/maps.
any warning or error that is printed is treated as fatal.
mark stdio writes with [rr <pid> <ev>] where ev is the global trace time at which the write occurs and pid is the pid of the process it occurs in.
print the version number and exit.
suppress warnings about issues in the environment that rr has no control over.
dump memory at global timepoint time
log messages that may not be urgently critical to the user
wait num-secs seconds just after startup, before initiating recording or replaying.

Syntaxfor`record'

rr record[<options>] <executable> [<exe-args>]
force the systall buffer preload library to be used, even if that'sprobably a bad idea
maximum number of `CPU ticks' (currently retired conditional branches)to allow a task to run before interrupting it
maximum number of events (syscall enter/exit, signal, CPUinterrupt, ...) to allow a task before descheduling it
block signal from being delivered to tracees; probably only useful for unit tests
disable the syscall buffer preload library even if it would otherwisebe used
allow tracees to run on any virtual CPU (default is to bind to CPU 0);this option can cause replay divergence: use with caution
value to add to the environment of the tracee; there can be any numberof these

Syntaxfor`replay'

rr replay[<options>] [<trace-dir>]
replay without debug server
use command as the gdb(1) command
start a debug server when pid has been forked, and the target event has been reached
start a debug server on reaching event-num in the trace; see -M in the general options
start a debug server when pid or command has been exec'd, and the target event has been reached
don't replay writes to stdout/stderr
only start a debug server on port; don't automatically launch the debugger client too
singlestep instructions and dump register states when replayingtowards event or later
execute gdb(1) commands from file

Syntaxfor`dump`

rr dump[<options>] [<trace-dir>] [<event-specs>]

Event specs can be either an event number like `127', or a range like`1000-5000'. By default, all events are dumped.

dump syscallbuf contents
dump recorded metadata
dump mmap data
dump trace frames in a more easily machine-parseable format instead ofthe default human-readable format
dump statistics about the trace

AUTHORS

rr was written by Robert O'Callahan, Chris Jones, Nathan Froyd and others.

This manual page was adapted from the help output by Stephen Kitt<skitt@debian.org>, for the Debian GNU/Linux system (but may be usedby others). It was last modified for rr version 4.0.1.

November 2015 rr - record and replay application executions