Abstract
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.
Chapter PDF
Similar content being viewed by others
Keywords
References
Ball, T., Naik, M., Rajamani, S.K.: From symptom to cause: localizing errors in counterexample traces. In: ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL), pp. 97–105 (2003)
Chaki, S., Groce, A., Strichman, O.: Explaining abstract counterexamples. In: ACM SIGSOFT Symp. on the Foundations of Software Engg (FSE) (2004)
Cleve, H., Zeller, A.: Locating causes of program failures. In: ACM/IEEE International Conference on Software Engineering (ICSE) (2005)
Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems 9(3), 319–349 (1987)
Groce, A.: Error explanation with distance metrics. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 108–122. Springer, Heidelberg (2004)
Hutchins, M., Foster, H., Goradia, T., Ostrand, T.: Experiments on the effectiveness of dataflow- and controlflow-based test adequacy criteria. In: ACM/IEEE International Conference on Software Engineering (ICSE), pp. 191–200 (1994)
Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of test information to assist fault localization. In: ACM/IEEE International Conference on Software Engineering (ICSE), pp. 467–477 (2002)
Larus, J.R.: Whole program paths. In: ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 259–269 (1999)
Liblit, B., Aiken, A., Zheng, A., Jordan, M.I.: Bug isolation via remote program sampling. In: ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (2003)
Liblit, B., Naik, M., Zheng, A., Aiken, A., Jordan, M.: Scalable statistical bug isolation. In: ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (2005)
Pytlik, B., Renieris, M., Krishnamurthi, S., Reiss, S.P.: Automated fault localization using potential invariants. CoRR, cs.SE/0310040 (October 2003)
Renieris, M., Reiss, S.P.: Fault localization with nearest neighbor queries. In: Automated Software Engineering (ASE), pp. 30–39 (2003)
Reps, T.W., Ball, T., Das, M., Larus, J.R.: The use of program profiling for software maintenance with applications to the year 2000 problem. In: ACM SIGSOFT Symp. on the Foundations of Software Engg. (FSE) (1997)
Rothermel, G., Harrold, M.J.: Empirical studies of a safe regression test selection technique. IEEE Transactions on Software Engineering 24 (1998)
Ruthruff, J., Creswick, E., Burnett, M., Cook, C., Prabhakararao, S., Fisher II, M., Main, M.: End-user software visualizations for fault localization. In: ACM Symposium on Software Visualization, pp. 123–132 (2003)
Wang, T., Roychoudhury, A.: Automated path generation for software fault localization. In: ACM/IEEE International Conference on Automated Software Engineering (ASE), pp. 347–351 (2005)
Zeller, A.: Isolating cause-effect chains from computer programs. In: ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), pp. 1–10 (2002)
Zeller, A., Hildebrandt, R.: Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering 28 (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Guo, L., Roychoudhury, A., Wang, T. (2006). Accurately Choosing Execution Runs for Software Fault Localization. In: Mycroft, A., Zeller, A. (eds) Compiler Construction. CC 2006. Lecture Notes in Computer Science, vol 3923. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11688839_7
Download citation
DOI: https://doi.org/10.1007/11688839_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-33050-9
Online ISBN: 978-3-540-33051-6
eBook Packages: Computer ScienceComputer Science (R0)