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.