This research was conducted by Ben Liblit and Alex Aiken.
After a program has crashed, it can be difficult to reconstruct why the failure occurred, or what actions led to the error. We propose a family of analysis techniques that use the evidence left behind by a failed program to build a time line of its possible actions from launch through termination. Our design can operate with zero run time instrumentation, or can flexibly incorporate a wide variety of artifacts such as stack traces and event logs for increased precision. Efficient demand-driven algorithms are provided, and the approach is well suited for incorporation into interactive debugging support tools.
The full paper is available as a single PDF document. A suggested BibTeX citation record is also available.
Slides from a presentation describing this work are available as a single PowerPoint document.