RR(1)

NAME
rr - record and replay application execution

SYNOPSIS
rr [OPTION] (record|replay|dump) [OPTION]... [ARG]...

DESCRIPTION

Common options

-c, --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, --dump-on=<SYSCALL_NUM|-SIGNAL_NUM>
    dump memory at SYSCALL or SIGNAL to the file `[trace_dir]/[tid].[time]_{rec,rep}': `_rec' for dumps during recording, `_rep' for dumps during replay

-f, --force-enable-debugger
    always allow emergency debugging, even when it doesn't seem like a good idea, for example if stderr isn't a tty.

-k, --check-cached-mmaps
    verify that cached task mmaps match /proc/maps

-m, --mark-stdio
    mark stdio writes with [rr.<EVENT-NO>], where EVENT-NO is the global trace time at which the write occures.

-t, --dump-at=TIME
    dump memory at global timepoint TIME

-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, --verbose
    log messages that may not be urgently critical to the user

-w, --wait-secs=<NUM_SECS> wait NUM_SECS seconds just after startup,
    before initiating recording or replaying

Syntax for `record'

    rr record [OPTION]... <exe> [exe-args]...

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

-c, --num-cpu-ticks=<NUM>
    maximum number of 'CPU ticks' (currently retired conditional branches) to allow a task to run before interrupting it

-e, --num-events=<NUM>
    maximum number of events (syscall enter/exit, signal, CPU interrupt, ...) to allow a task before descheduling it

-i, --ignore-signal=<SIG>
    block <SIG> 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

Syntax for `replay'

    rr replay [OPTION]... <trace-dir>

-a, --autopilot
    replay without debugger server

-f, --onfork=<PID>
    start a debug server when <PID> has been fork()d, AND the target event has been reached.

-g, --goto=<EVENT-NUM>
    start a debug server on reaching <EVENT-NUM> in the trace. See -m above.

-p, --onprocess=<PID>
    start a debug server when <PID> has been exec()d, AND the target event has been reached.

-q, --no-redirect-output
    don't replay writes to stdout/stderr

-s, --dbgport=<PORT>
    only start a debug server on <PORT>; don't automatically launch the debugger client too.

Syntax for `dump`

    rr dump [OPTIONS] <trace_dir> <event-spec>...

    Event specs can be either an event number like `127', or a range like `1000-5000'. By default, all events are dumped. -r, --raw dump trace frames in a more easily

    machine-parseable format instead of the default human-readable format

A command line like `rr (-h|--help|help)...' will print this message.