Improved debugging with rr
Introduction To investigate a bug, people will often resort to two methods once the bug has been reproduced: Add traces in the code. Use a debugger to instrument the execution of the bug. The second solution is much more powerful but also quite limited in the types of bug it can handle: If the instrumentation of the execution goes too far, it is impossible to go in reverse. A new execution is needed, with new breakpoints or watches, but also new addresses, variable values… If the reproduction is random, having to restart the process and reproduce the bug again can be very time consuming.
Read more