2018 · 21 citations · 43 references
ComputingComputer EngineeringComputer ScienceArtificial IntelligenceSoftware EngineeringUncertainty QuantificationAutomated ReasoningData-flow AnalysisExpert SystemsFault DiagnosisUncertainty ReasoningAutomated DebuggingConditional DistributionsDebuggingDebugging TechniquesHuman IntelligenceRoot CausesSoftware DebuggingUser Study Evaluation
We aim to debug a single failing execution without the assistance from other passing/failing runs. In our context, debugging is a process with substantial uncertainty - lots of decisions have to be made such as what variables shall be inspected first. To deal with such uncertainty, we propose to equip machines with human-like intelligence. Specifically, we develop a highly automated debugging technique that aims to couple human-like reasoning (e.g., dealing with uncertainty and fusing knowledge) with program semantics based analysis, to achieve benefits from the two and mitigate their limitations. We model debugging as a probabilistic inference problem, in which the likelihood of each executed statement instance and variable being correct/faulty is modeled by a random variable. Human knowledge, human-like reasoning rules and program semantics are modeled as conditional probability distributions, also called probabilistic constraints. Solving these constraints identifies the most likely faulty statements. Our results show that the technique is highly effective. It can precisely identify root causes for a set of real-world bugs in a very small number of interactions with developers, much smaller than a recent proposal that does not encode human intelligence. Our user study also confirms that it substantially improves human productivity.
43
Scalable statistical bug isolation
Ben Liblit, Mayur Naik, Alice X. Zheng et al. · ACM SIGPLAN Notices · 2005 · 736 citations
Locating causes of program failures
Holger Cleve, Andreas Zeller · 2005 · 554 citations
Isolating cause-effect chains from computer programs
Andreas Zeller · 2002 · 534 citations