Monday 8 September 2014
- gdb's checkpoint, restart and delete checkpoint commands are supported.
These are implemented using new infrastructure in rr 2.0 for fast cloning of replay sessions.
- You can now run debuggee functions from gdb during replay.
This is a big feature for rr, since normally a record-and-replay debugger will only replay what happened during recording --- and of course, function calls from gdb did not happen during recording. So under the hood, rr 2.0 introduces "diversion sessions", which run arbitrary code instead of following a replay. When you run a debuggee function from gdb, we clone the current replay session to a diversion session, run your requested function, then destroy the diversion and resume the replay.
- Issues involving Haswell have been fixed. rr now runs reliably on Intel CPU families from Westmere to Haswell.
- Support for running rr in a VM has been improved. Due to a VMWare bug, rr is not as reliable in VMWare guests as in other configurations, but in practice it still works well.
- Trace compression has been implemented, with compression ratios of 5-40x depending on workload, dramatically reducing rr's storage and I/O usage.
- Many many bugs have been fixed to improve reliability and enable rr to handle more diverse workloads.
All the features normally available from gdb now work with rr, making this an important milestone.
Stephen Kitt has packaged rr for Debian.
Considerable progress has been made towards x86-64 support, but it's not ready yet. We expect x86-64 support to be the next milestone.
I recorded a screencast showing a quick demo of rr on Firefox: