1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
.TH RR "1" "April 2014" "rr - record and replay application executions" "User Commands"
.SH NAME
rr \- record and replay application execution
.SH SYNOPSIS
.B rr
[\fIOPTION\fR] \fI(record|replay|dump) \fR[\fIOPTION\fR]... [\fIARG\fR]...
.SH DESCRIPTION
.PP
Common options
.TP
\fB\-c\fR, \fB\-\-checksum=\fR{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
.TP
\fB\-d\fR, \fB\-\-dump\-on=\fR<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
.TP
\fB\-f\fR, \fB\-\-force\-enable\-debugger\fR
always allow emergency debugging, even
when it doesn't seem like a good idea, for
example if stderr isn't a tty.
.TP
\fB\-k\fR, \fB\-\-check\-cached\-mmaps\fR
verify that cached task mmaps match \fI/proc/maps\fP
.TP
\fB\-m\fR, \fB\-\-mark\-stdio\fR
mark stdio writes with [rr.<EVENT\-NO>],
where EVENT\-NO is the global trace time at
which the write occures.
.TP
\fB\-t\fR, \fB\-\-dump\-at\fR=\fITIME\fR
dump memory at global timepoint TIME
.TP
\fB\-u\fR, \fB\-\-cpu\-unbound\fR
allow tracees to run on any virtual CPU.
Default is to bind to CPU 0. This option
can cause replay divergence: use with
caution.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
log messages that may not be urgently
critical to the user
.TP
\fB\-w\fR, \fB\-\-wait\-secs=\fR<NUM_SECS> wait NUM_SECS seconds just after startup,
before initiating recording or replaying
.PP
Syntax for `record'
.IP
rr record [OPTION]... <exe> [exe\-args]...
.TP
\fB\-b\fR, \fB\-\-force\-syscall\-buffer\fR force the syscall buffer preload library
to be used, even if that's probably a bad
idea
.TP
\fB\-c\fR, \fB\-\-num\-cpu\-ticks=\fR<NUM>
maximum number of 'CPU ticks' (currently
retired conditional branches) to allow a
task to run before interrupting it
.TP
\fB\-e\fR, \fB\-\-num\-events=\fR<NUM>
maximum number of events (syscall
enter/exit, signal, CPU interrupt, ...)
to allow a task before descheduling it
.TP
\fB\-i\fR, \fB\-\-ignore\-signal=\fR<SIG>
block <SIG> from being delivered to tracees.
Probably only useful for unit tests.
.TP
\fB\-n\fR, \fB\-\-no\-syscall\-buffer\fR
disable the syscall buffer preload library
even if it would otherwise be used
.PP
Syntax for `replay'
.IP
rr replay [OPTION]... <trace\-dir>
.TP
\fB\-a\fR, \fB\-\-autopilot\fR
replay without debugger server
.TP
\fB\-f\fR, \fB\-\-onfork=\fR<PID>
start a debug server when <PID> has been
fork()d, AND the target event has been
reached.
.TP
\fB\-g\fR, \fB\-\-goto=\fR<EVENT\-NUM>
start a debug server on reaching <EVENT\-NUM>
in the trace. See \fB\-m\fR above.
.TP
\fB\-p\fR, \fB\-\-onprocess=\fR<PID>
start a debug server when <PID> has been
exec()d, AND the target event has been
reached.
.TP
\fB\-q\fR, \fB\-\-no\-redirect\-output\fR
don't replay writes to stdout/stderr
.TP
\fB\-s\fR, \fB\-\-dbgport=\fR<PORT>
only start a debug server on <PORT>;
don't automatically launch the debugger
client too.
.PP
Syntax for `dump`
.IP
rr dump [OPTIONS] <trace_dir> <event\-spec>...
.IP
Event specs can be either an event number like `127', or a range
like `1000\-5000'. By default, all events are dumped.
\fB\-r\fR, \fB\-\-raw\fR dump trace frames in a more easily
.IP
machine\-parseable format instead of the
default human\-readable format
.PP
A command line like `rr (\fB\-h\fR|\-\-help|help)...' will print this message.
|