How to record/replay and debug a program using reverse debugging through a small example program written in C.
You can also record/replay in a Linux VM on macOS