RedShell: Online Back-In-Time Debugging

In the current state of debugging, developers often use backwards reasoning to work from the symptom of a bug they observed to find possible causes [4]. They utilize breakpoints, for instance, to suspend the execution of an application at locations of possible causes in the code. When the execution is suspended, they can analyze the state of the application at that point. Eclipse JDT offers the Inspect feature where developers can select expressions in the code and have them evaluated in the state at which execution is currently suspended. However, for some bugs, such as stealth bugs [2]—which destroy their own evidence—the usual approach of reasoning backwards does not suffice to debug them. An example for such bugs is depicted in Listing 1.