Skip to content
bernhardu edited this page Jun 26, 2024 · 12 revisions

How does one pronounce 'rr' ?

As the letter 'r', twice.

Does rr work in docker on an arbitrary host system?

rr will work inside docker if it works outside docker, though you may need to run your container with --privileged (and you should be aware of the security implications!)

Will rr record automatically start recording forked processes?

Yes.

How do you record / replay a multi process session?

rr records process trees, so if all of the processes you care about are part of the same process tree, you're already set. Alternatively, you can make two separate recordings for two processes. During replay, you can launch multiple replays simultaneously, selecting the processes you care about with -p. The when command inside the gdb rr launches can be used to orient the different replays in time.

Why during replay gdb does not proceed past syscall_traced?

Execute where to see if stack mentions execve. Inside rr gdb does not currently execute past execve call, but you can work around that by restarting replay with the execve event number.

The easiest way to get event number is execute when in gdb after execution refused to proceed (you may need to increment the number you'll get). If your program has too many execve calls and you don't want to repeatedly do that, you can also execute a rr dump | grep -P "SYSCALL: exec.+EXITING_SYSCALL". You'll see global_time:<event_num>, it's the event number.

Then start replay past execve call by executing rr replay -g 2266, substitute the 2266 with the event number.

Are there any plans to support BSD / MacOS?

No.

Can rr be used to (effectively) debug java/jvm programs? webdriver tests?

rr can record and replay programs written in higher level languages, but because it presents you with an enhanced gdb interface during replay, you may find it challenging to debug languages that are difficult to debug from gdb.