Ko, Andrew J. and Brad A. Meyers. "Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior." ICSE '08.
Presents a debugging tool that uses static analysis and dynamic traces to answer "why did and why didn't questions derived from the program's code and execution." It tracks output (java.io and AWT graphics) through dynamic traces back to its sources (essentially a backwards dynamic slice) to answer "why did" a certain output occur and compares static slices to dynamic slices (with some filtering heuristics) to answer "why didn't". The tool limits sources to "familiar" classes (user supplied classes and classes that user supplied classes directly invoke) and also filters by "temporal scope" (bounded by events in the dynamic trace) and "identity scope" (objects the user has specifically expressed interest in).