Here's a test for the question we've been discussing, about the restored machine state after reverse execution stops. Although it probably would have been sufficient to test two cases (register and memory), I went for completeness and tested five cases: * a register variable * an auto variable * a function static * a module static, and * a module global. In each case, I let the program increment the variable. Then I tested whether the pre-increment value was restored under two conditions: * continue backward to a breakpoint, and * step backward. I checked each value "before" and "after", and the Teawater record/replay implementation passes 100 percent. I would welcome any suggestions for improving or extending the test. I've suggested a few possible extensions in the comments. I did a little hoop-dancing to make it as likely as possible that the compiler would emit a single instruction in the register case, so we can see that the side effect of the breakpoint instruction (incrementing the register variable) is in fact reverted.