A Case for Dynamic Reverse-code Generation to Debug Non-deterministic Programs
Backtracking (i.e., reverse execution) helps the user of a debugger to naturally think backwards along the execution path of a program, and thinking backwards makes it easy to locate the origin of a bug.So far backtracking has been implemented mostly by state saving or by checkpointing.These implementations, however, inherently do not scale.Meanwhi