rr(1)

rr1

Record and replay application execution

Usage

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>]

Overview

Common options

-A <name>, --microarch=<name>

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'.

-C {on-syscalls,on-all-events,<from-time>}, --checksum={on-syscalls,on-all-events,<from-time>}

compute and store (during recording) or read and verify (during replay) checksums of each of a tracee's memory mappings either at the end of all syscalls (on-syscalls), at all events (on-all-events), or starting from a global timepoint from-time.

-D {<syscall-num,-<signal-num>}, --dump-on={<syscall-num,-<signal-num>}

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.

-F, --force-things

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.

-K, --check-cached-mmaps

verify that cached task mmaps match /proc/maps.

-E, --fatal-errors

any warning or error that is printed is treated as fatal.

-M, --mark-stdio

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.

-N, --version

print the version number and exit.

-S, --suppress-environment-warnings

suppress warnings about issues in the environment that rr has no control over.

-T <time>, --dump-at=<time>

dump memory at global timepoint time

-V, --verbose

log messages that may not be urgently critical to the user

-W <num-secs>, --wait-secs=<num-secs>

wait num-secs seconds just after startup, before initiating recording or replaying.

Syntax for `record'

rr record [<options>] <executable> [<exe-args>]

-b, --force-syscall-buffer

force the systall buffer preload library to be used, even if that's probably a bad idea

-c <num>, --num-cpu-ticks=<num>

maximum number of `CPU ticks' (currently retired conditional branches) to allow a task to run before interrupting it

-e <num>, --num-events=<num>

maximum number of events (syscall enter/exit, signal, CPU interrupt, ...) to allow a task before descheduling it

-i <signal>, --ignore-signal=<signal>

block signal from being delivered to tracees; probably only useful for unit tests

-n, --no-syscall-buffer

disable the syscall buffer preload library even if it would otherwise be used

-u, --cpu-unbound

allow tracees to run on any virtual CPU (default is to bind to CPU 0); this option can cause replay divergence: use with caution

-v <name>=<value>, --env=<name>=<value>

value to add to the environment of the tracee; there can be any number of these

Syntax for `replay'

rr replay [<options>] [<trace-dir>]

-a, --autopilot

replay without debug server

-d <command>, --debugger=<command>

use command as the gdb(1) command

-f <pid>, --onfork=<pid>

start a debug server when pid has been forked, and the target event has been reached

-g <event-num>, --goto=<event-num>

start a debug server on reaching event-num in the trace; see -M in the general options

-p {<pid>,<command>}, --onprocess={<pid>,<command>}

start a debug server when pid or command has been exec'd, and the target event has been reached

-q, --no-redirect-output

don't replay writes to stdout/stderr

-s <port>, --dbgport=<port>

only start a debug server on port; don't automatically launch the debugger client too

-t <event>, --trace=<event>

singlestep instructions and dump register states when replaying towards event or later

-x <file>, --gdb-x=<file>

execute gdb(1) commands from file

Syntax for `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.

-b, --syscallbuf

dump syscallbuf contents

-m, --recorded-metadata

dump recorded metadata

-p, --mmaps

dump mmap data

-r, --raw

dump trace frames in a more easily machine-parseable format instead of the default human-readable format

-s, --statistics

dump statistics about the trace

Releases

6 releases since Debian 8 (Jessie); the text changed 1 time.

  1. 8
  2. 9–13

--debugger since Debian 9 (Stretch); --env since Debian 9 (Stretch); --fatal-errors since Debian 9 (Stretch); --force-syscall-buffer since Debian 9 (Stretch); --force-things since Debian 9 (Stretch); --gdb-x since Debian 9 (Stretch); --microarch since Debian 9 (Stretch); --mmaps since Debian 9 (Stretch); --raw since Debian 9 (Stretch); --recorded-metadata since Debian 9 (Stretch); --statistics since Debian 9 (Stretch); --suppress-environment-warnings since Debian 9 (Stretch); --syscallbuf since Debian 9 (Stretch); --trace since Debian 9 (Stretch); --version since Debian 9 (Stretch); --wait-secs since Debian 9 (Stretch); -A since Debian 9 (Stretch); -C since Debian 9 (Stretch); -E since Debian 9 (Stretch); -F since Debian 9 (Stretch); -K since Debian 9 (Stretch); -M since Debian 9 (Stretch); -N since Debian 9 (Stretch); -S since Debian 9 (Stretch); -T since Debian 9 (Stretch); -V since Debian 9 (Stretch); -W since Debian 9 (Stretch); -b since Debian 9 (Stretch); -r since Debian 9 (Stretch); -x since Debian 9 (Stretch).

--dump-on until Debian 8 (Jessie); --force-enable-debugger until Debian 8 (Jessie); -k until Debian 8 (Jessie).

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 <[email protected]>, for the Debian GNU/Linux system (but may be used by others). It was last modified for rr version 4.0.1.

From rr 5.9.0-3 in Debian 13 (Trixie). Parsed by carta from the page's man source.