.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 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.], 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 wait NUM_SECS seconds just after startup, before initiating recording or replaying .PP Syntax for `record' .IP rr record [OPTION]... [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 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 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 block 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]... .TP \fB\-a\fR, \fB\-\-autopilot\fR replay without debugger server .TP \fB\-f\fR, \fB\-\-onfork=\fR start a debug server when has been fork()d, AND the target event has been reached. .TP \fB\-g\fR, \fB\-\-goto=\fR start a debug server on reaching in the trace. See \fB\-m\fR above. .TP \fB\-p\fR, \fB\-\-onprocess=\fR start a debug server when 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 only start a debug server on ; don't automatically launch the debugger client too. .PP Syntax for `dump` .IP rr dump [OPTIONS] ... .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.