-
Notifications
You must be signed in to change notification settings - Fork 578
As the letter 'r', twice.
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!)
Yes.
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.
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.
No.
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.