Thursday 11 December 2014
I just pushed the release of rr 3.0. The big milestone for this release is that x86-64 support is fully functional! On 64-bit machines, we build a 64-bit rr that can record and replay 64-bit processes with the same set of features and performance-enhancing tricks that we developed for 32-bit. Not only that, but 64-bit rr can also record and replay 32-bit processes or even a mix of 32-bit and 64-bit processes in the same process tree. 64-bit support is mostly due to Nathan Froyd and we hope it significantly lowers barriers to using rr.
Many other internal improvements and sundry bug fixes have landed since 2.0. Some highlights:
- rr can record executables that use a #! interpreter, e.g. bash scripts. Naturally the entire process tree is recorded, so this simplifies debugging of applications that use complex wrapper scripts.
- A new
rr pscommand lists the processes recorded in an rr trace, making it easier to select the process you want to debug.
- To make that even easier,
rr replay -p <command>automatically attaches to the first exec of <command>. E.g. to debug e10s Firefox's first content process, use
rr replay -p plugin-container.
- Sometimes you record a trace, then modify the program but later want to replay the original trace, which requires the original program binaries. rr now uses hardlinks to save files in the trace so that in many cases, old traces are still replayable after a rebuild. Thanks to Karl Tomlinson for the idea.
- Some small changes in command-line syntax were made to regularize the syntax and prepare for future expansion.
- Many bug fixes to broaden the range of recordable applications. E.g. LibreOffice and QEMU work now.
Development carries on; visit rr-dev for exciting updates.
Have fun using rr!