By Jakob Engblom
Simics reverse execution and reverse debugging is a unique and very powerful feature of the simulator. In this blog post and accompanying video, we will look at what exactly it is you can do with reverse execution in Simics. It is not just a matter of running backwards to a breakpoint or stepping instructions (pick up my 2012 S4D article for more on reverse debugging). Reverse execution fundamentally is about undoing arbitrary operations on the target and going back to a prior state from a previous point in time. Furthermore, with Simics, you can go back in time and choose to do something different than you did in the original execution. In this blog post, we will take a look at just what you can do with reverse.
The basic operation of reverse execution is to stop at some point in a system execution, go backwards to visit the past and see what happens, and then go forward again. Reverse execution lets you go back and forth over the execution to investigate a particular execution path in detail.