-
Notifications
You must be signed in to change notification settings - Fork 640
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.