There is an open-source (but Linux only) project called FReD which does reversible debugging for C and C++ programs: https://github.com/fred-dbg/fred
It works without modifying the program (e.g. no recompilation step necessary) or the debugger (like gdb).