Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior

When software developers want to understand the reason for a program’s behavior, they must translate their questions about the behavior into a series of questions about code, speculating about the causes in the process. The Whyline is a new kind of debugging tool that avoids such speculation by instead enabling developers to select a question about program output from a set of why did and why didn’t questions derived from the program’s code and execution. The tool then finds one or more possible explanations for the output in question, using a combination of static and dynamic slicing, precise call graphs, and new algorithms for determining potential sources of values and explanations for why a line of code was not reached. Evaluations of the tool on one task showed that novice programmers with the Whyline were twice as fast as expert programmers without it. The tool has the potential to simplify debugging in many software development contexts.

[1]  Henry Lieberman,et al.  Debugging and the experience of immediacy , 1997, CACM.

[2]  Timothy J. Harvey,et al.  AS imple, Fast Dominance Algorithm , 1999 .

[3]  Gregory Tassey,et al.  Prepared for what , 2007 .

[4]  Bil Lewis,et al.  Debugging Backwards in Time , 2003, ArXiv.

[5]  Tao Wang,et al.  Using compressed bytecode traces for slicing Java programs , 2004, Proceedings. 26th International Conference on Software Engineering.

[6]  James Noble,et al.  Snapshot query-based debugging , 2004, 2004 Australian Software Engineering Conference. Proceedings..

[7]  Baowen Xu,et al.  A brief survey of program slicing , 2005, SOEN.

[8]  Michael I. Jordan,et al.  Scalable statistical bug isolation , 2005, PLDI '05.

[9]  H. Cleve,et al.  Locating causes of program failures , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[10]  Xiangyu Zhang,et al.  Whole execution traces and their applications , 2005, TACO.

[11]  Andrew David Eisenberg,et al.  Dynamic feature traces: finding features in unfamiliar code , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[12]  Martin Erwig,et al.  Goal-directed debugging of spreadsheets , 2005, 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05).

[13]  Brad A. Myers,et al.  A Linguistic Analysis of How People Describe Software Problems , 2006, Visual Languages and Human-Centric Computing (VL/HCC'06).

[14]  Brad A. Myers,et al.  Answering why and why not questions in user interfaces , 2006, CHI.

[15]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[16]  Robert DeLine,et al.  Information Needs in Collocated Software Development Teams , 2007, 29th International Conference on Software Engineering (ICSE'07).

[17]  Alessandro Orso,et al.  A Technique for Enabling and Supporting Debugging of Field Failures , 2007, 29th International Conference on Software Engineering (ICSE'07).

[18]  Manu Sridharan,et al.  Thin slicing , 2007, PLDI '07.