record/playback tools are immensely useful for debugging.
For instance, with rr, you can easily playback the same run through valgrind to isolate complex memory issues that would be very hard to debug by looking just at the final state.
You can easily use rr -g and gdb to debug issues that couldn't be stepped back using gdb's (limited) reverse execution.
All of this in the same development environment and negligible impact. If that's not enough, with qemu+kvm+gdb you can push it even further, though at a higher speed penalty.
rr recently got amd64 support, and it's in debian as well.
For instance, with rr, you can easily playback the same run through valgrind to isolate complex memory issues that would be very hard to debug by looking just at the final state.
You can easily use rr -g and gdb to debug issues that couldn't be stepped back using gdb's (limited) reverse execution.
All of this in the same development environment and negligible impact. If that's not enough, with qemu+kvm+gdb you can push it even further, though at a higher speed penalty.
rr recently got amd64 support, and it's in debian as well.
In the same vein, for OpenGL there's vogl from Valve: https://github.com/ValveSoftware/vogl
(hint: if some debian maintainer is reading this, a package of vogl would also be nice!)