3 ms·
rr is exactly the harness to debug tests. We have a system when a test fails you get a rr replay of it to debug. It's the primary use for it.
by de_watcher 7y ago
rr is exactly the harness to debug tests.
We have a system when a test fails you get a rr replay of it to debug. It's the primary use for it.
- jchw 7y agoOK, I'll just be honest: I had no idea that's how people used rr. I saw demos some years ago and assumed one used it similarly to gdb but with rewind. I think this is an awesome use case for rewind debugging, that I had never thought of, and look forward to hopefully seeing it run on AMD Ryzen processors in the future, since I've bought into that ecosystem too much to go back already.
- pmoriarty 7y ago"I saw demos some years ago and assumed one used it similarly to gdb but with rewind." You can do reverse debugging in gdb. Here's how: Run: gdb --args /usr/bin/foo --bar baz Type "start", then "record", then "continue" Now can try a number of reverse-debugging commands, for example: * reverse-stepi * reverse-next * etc
- roca 7y agogdb's built-in recording doesn't scale. You can't record across system calls, thread context switches, etc, and it's about a 1000x slowdown during record and replay. (rr is more like 2x.) It is, unfortunately, an attractive nuisance, because a lot of people have tried it out and concluded that record-and-replay debugging is useless.
- roca 7y agoOoh, have you blogged about that anywhere?