We just uploaded a short movie about reverse execution and reverse debugging to Youtube, to the Wind River official channel. In the short time available in this demo, we really only show reverse execution. Reverse debug, as I define it, is not used much at all, as explaining what goes on when you start to put breakpoints into a program and analyze its behavior takes a surprising amount of time.
Here is a direct link to the video, but you should really go to Youtube and view at full size, as it is designed to be pixel-perfect in the zoomed-in portions at 480 pixels high display.
The setup shown in the video is a fun one where I combine a Simics virtual platform with a simulated water heater (or water kettle, depending on your version of English). The physics model is all written in Python, and reverses with the virtual platform. The visualization of the target state is done using the Simics 4.6 “system panel” feature, which support building graphical representations of the front panels of typical computer systems, as well as other things like physics systems and controls for fault injection. We also use it to show an overview of the demonstrated system itself, for ease of explanation (and some subtle self-reference):
A simple but very cool part of the demo setup is the fact that we highlight the last few steps of execution in the debug view in Eclipse… and when going in reverse, this gives a nice backwards trail up through the code:
It is really scary how much time it takes to produce a video like this. About five minutes of live action took many hours to rehearse, script, and rerecord until things worked just right. To get the pretty decent sound quality we have in the clip, we invested in a Blue Mic Snowball – complete with a “Ringer” suspension mechanism. It turned out that I had to stay at home to record, as the air conditioning in the offices I use turned out to add a very audible background noise to the recordings.