Abstract
When a program fails, the cause of the failure is often buried in a long, hard-to-understand error trace. We present a new technique for automatic error localization, which formally unifies prior approaches based on computing interpolants and minimal unsatisfiable cores of failing executions. Our technique works by automatically reducing an error trace to its essential components—a minimal set of statements that are responsible for the error, together with key predicates that explain how these statements lead to the failure. We prove that our approach is sound, and we show that it is useful for debugging real programs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
We could have also produced another IIL corresponding to the other MUC, removing the statement z=1 in that case.
References
Agrawal, H., Horgan, J.R.: Dynamic program slicing. In: PLDI ’90, pp. 246–256 (1990)
Bailey, J., Stuckey, P.J.: Discovery of minimal unsatisfiable subsets of constraints using hitting set dualization. In: Hermenegildo, M.V., Cabeza, D. (eds.) PADL 2004. LNCS, vol. 3350, pp. 174–186. Springer, Heidelberg (2005)
Ball, T., Naik, M., Rajamani, S.K.: From symptom to cause: localizing errors in counterexample traces. In: POPL ’03, pp. 97–105 (2003)
Belov, A., Marques-Silva, J.: MUSer2: An efficient MUS extractor. JSAT 8, 123–128 (2012)
Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker BLAST: Applications to software engineering. Int. J. Softw. Tools Technol. Transf. 9(5), 505–525 (2007)
Chandra, S., Torlak, E., Barman, S., Bodik, R.: Angelic debugging. In: ICSE (2011)
Cleve, H., Zeller, A.: Locating causes of program failures. In: ICSE, pp. 342–351 (2005)
Craig, W.: Three uses of Herbrand-Gentzen theorem in relating model theory and proof theory. J. Symb. Comput. 22, 250–268 (1957)
Dijkstra, E.W.: A Discipline of Programming, 1st edn. Prentice Hall PTR, Upper Saddle River, NJ, USA (1997)
Dillig, I., Dillig, T., Aiken, A.: Automated error diagnosis using abductive inference. In: PLDI (2012)
D’Silva, V., Kroening, D., Purandare, M., Weissenbacher, G.: Interpolant strength. In: Barthe, G., Hermenegildo, M. (eds.) VMCAI 2010. LNCS, vol. 5944, pp. 129–145. Springer, Heidelberg (2010)
Ermis, E., Schäf, M., Wies, T.: Error invariants. In: Giannakopoulou, D., Méry, D. (eds.) FM 2012. LNCS, vol. 7436, pp. 187–201. Springer, Heidelberg (2012)
Groce, A., Chaki, S., Kroening, D., Strichman, O.: Error explanation with distance metrics. Softw. Tools Technol. Transf. (STTT) 8, 229–247 (2006)
Hangal, S., Lam, M.S.: Tracking down software bugs using automatic anomaly detection. In: ICSE ’02 (2002)
Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. In: POPL (2004)
Jaffar, J., Michaylov, S., Stuckey, P.J., Yap, R.H.C.: The CLP(\(\cal {R}\)) language and system. ACM Trans. Program. Lang. Syst. 14(3), 339–395 (1992)
Jaffar, J., Murali, V., Navas, J.A., Santosa, A.E.: TRACER: A Symbolic execution tool for verification. In: Madhusudan, P., Seshia, S.A. (eds.) CAV 2012. LNCS, vol. 7358, pp. 758–766. Springer, Heidelberg (2012)
Jhala, R., McMillan, K.L.: A practical and complete approach to predicate refinement. In: Hermanns, H., Palsberg, J. (eds.) TACAS 2006. LNCS, vol. 3920, pp. 459–473. Springer, Heidelberg (2006)
Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of test information to assist fault localization. In: ICSE ’02, pp. 467–477 (2002)
Jose, M., Majumdar, R.: Cause clue clauses: Error localization using maximum satisfiability. SIGPLAN Not. 46(6), 437–446 (2011)
Liffiton, M.H., Sakallah, K.A.: Algorithms for computing minimal unsatisfiable subsets of constraints. J. Autom. Reason. 40(1), 1–33 (2008)
Logozzo, F., Ball, T.: Modular and verified automatic program repair. In: OOPSLA (2012)
McCarthy, J.: A basis for a mathematical theory of computation. In: Braffort, P., Hirshberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–70. North-Holland, Amsterdam (1963)
McMillan, K.L.: Interpolation and SAT-Based model checking. In: Hunt Jr., W.A., Somenzi, F. (eds.) CAV 2003. LNCS, vol. 2725, pp. 1–13. Springer, Heidelberg (2003)
McMillan, K.L.: Applications of Craig interpolants in model checking. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 1–12. Springer, Heidelberg (2005)
Nadel, A.: Boosting minimal unsatisfiable core extraction. In: FMCAD (2010)
Necula, G.C., McPeak, S., Rahul, S.P., Weimer, W.: CIL: Intermediate language and tools for analysis and transformation of C programs. In: Nigel Horspool, R. (ed.) CC 2002. LNCS, vol. 2304, pp. 213–228. Springer, Heidelberg (2002)
Qi, D., Roychoudhury, A., Liang, Z., Vaswani, K.: Darwin: An approach to debugging evolving programs. ACM Trans. Softw. Eng. Methodol. 21(3), 19 (2012)
Rollini, S.F., Sery, O., Sharygina, N.: Leveraging interpolant strength in model checking. In: Madhusudan, P., Seshia, S.A. (eds.) CAV 2012. LNCS, vol. 7358, pp. 193–209. Springer, Heidelberg (2012)
Sahoo, S.K., Criswell, J., Geigle, C., Adve, V.: Using likely invariants for automated software fault localization. In: ASPLOS (2013)
Schäf, M., Schwartz-Narbonne, D., Wies, T.: Explaining inconsistent code. In: ESEC/SIGSOFT FSE, pp. 521–531 (2013)
Silva, J.P.M.: Minimal unsatisfiability: Models, algorithms and applications (invited paper). In: ISMVL (2010)
Software-artifact infrastructure repository (SIR), August 2010. http://sir.unl.edu/portal/index.html
Vizel, Y., Grumberg, O.: Interpolation-sequence based model checking. In: FMCAD (2009)
Zeller, A.: Isolating cause-effect chains from computer programs. In: FSE ’02, pp. 1–10 (2002)
Zhang, X., Gupta, N., Gupta, R.: A study of effectiveness of dynamic slicing in locating real faults. Empir. Softw. Engg. 12(2), 143–160 (2007)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Murali, V., Sinha, N., Torlak, E., Chandra, S. (2014). What Gives? A Hybrid Algorithm for Error Trace Explanation. In: Giannakopoulou, D., Kroening, D. (eds) Verified Software: Theories, Tools and Experiments. VSTTE 2014. Lecture Notes in Computer Science(), vol 8471. Springer, Cham. https://doi.org/10.1007/978-3-319-12154-3_17
Download citation
DOI: https://doi.org/10.1007/978-3-319-12154-3_17
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-12153-6
Online ISBN: 978-3-319-12154-3
eBook Packages: Computer ScienceComputer Science (R0)