The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experiments of the effectiveness of dataflow- and controlflow-based test adequacy criteria
ICSE '94 Proceedings of the 16th international conference on Software engineering
The use of program profiling for software maintenance with applications to the year 2000 problem
ESEC '97/FSE-5 Proceedings of the 6th European SOFTWARE ENGINEERING conference held jointly with the 5th ACM SIGSOFT international symposium on Foundations of software engineering
Empirical Studies of a Safe Regression Test Selection Technique
IEEE Transactions on Software Engineering
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Simplifying and Isolating Failure-Inducing Input
IEEE Transactions on Software Engineering
Visualization of test information to assist fault localization
Proceedings of the 24th International Conference on Software Engineering
Isolating cause-effect chains from computer programs
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
End-user software visualizations for fault localization
Proceedings of the 2003 ACM symposium on Software visualization
Bug isolation via remote program sampling
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Explaining abstract counterexamples
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Locating causes of program failures
Proceedings of the 27th international conference on Software engineering
Scalable statistical bug isolation
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Automated path generation for software fault localization
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Proceedings of the 2007 international symposium on Software testing and analysis
Efficient program execution indexing
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Dichotomy Method toward Interactive Testing-Based Fault Localization
ADMA '08 Proceedings of the 4th international conference on Advanced Data Mining and Applications
Software Fault Localization Using N-gram Analysis
WASA '08 Proceedings of the Third International Conference on Wireless Algorithms, Systems, and Applications
Semantics-aware trace analysis
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Darwin: an approach for debugging evolving programs
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Test input reduction for result inspection to facilitate fault localization
Automated Software Engineering
Debugging as a Science, that too, when your Program is Changing
Electronic Notes in Theoretical Computer Science (ENTCS)
Memory indexing: canonicalizing addresses across executions
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
DARWIN: An approach to debugging evolving programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Identifying incompatible service implementations using pooled decision trees
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Hi-index | 0.00 |
Software fault localization involves locating the exact cause of error for a “failing” execution run – a run which exhibits an unexpected behavior. Given such a failing run, fault localization often proceeds by comparing the failing run with a “successful” run, that is, a run which does not exhibit the unexpected behavior. One important issue here is the choice of the successful run for such a comparison. In this paper, we propose a control flow based difference metric for this purpose. The difference metric takes into account the sequence of statement instances (and not just the set of these instances) executed in the two runs, by locating branch instances with similar contexts but different outcomes in the failing and the successful runs. Given a failing run πf and a pool of successful runs S, we choose the successful run πs from S whose execution trace is closest to πf in terms of the difference metric. A bug report is then generated by returning the difference between πf and πs. We conduct detailed experiments to compare our approach with previously proposed difference metrics. In particular, we evaluate our approach in terms of (a) effectiveness of bug report for locating the bug, (b) size of bug report and (c) size of successful run pool required to make a decent choice of successful run.