Abstract
Algorithmic debugging is a debugging technique that uses a data structure representing all computations performed during the execution of a program. This data structure is the so-called Execution Tree and it strongly influences the performance of the technique. In this work we present a transformation that automatically improves the structure of the execution trees by collapsing and projecting some strategic nodes. This improvement in the structure implies a better behavior and performance of the standard algorithms that traverse it. We prove that the transformation is sound in the sense that all the bugs found after the transformation are real bugs; and if at least one bug is detectable before the transformation, then at least one bug will also be detectable after the transformation. We have implemented the technique and performed several experiments with real applications. The experimental results confirm the usefulness of the technique.
This work has been partially supported by the Spanish Ministerio de Ciencia e Innovación under grants TIN2008-06622-C03-02 and TIN2012-39391-C04-04, by the Generalitat Valenciana under grant ACOMP/2009/017, and by the Comunidad de Madrid under grant S2009/TIC–1465. David Insa has been partially supported by the Spanish Ministerio de Educación under grant AP2010-4415.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Binks, D.: Declarative Debugging in Gödel. PhD thesis, University of Bristol (1995)
Caballero, R.: A Declarative Debugger of Incorrect Answers for Constraint Functional-Logic Programs. In: Proc. of the 2005 ACM SIGPLAN Workshop on Curry and Functional Logic Programming, WCFLP 2005, pp. 8–13. ACM Press (2005)
Caballero, R., Hermanns, C., Kuchen, H.: Algorithmic debugging of Java programs. In: López-Fraguas, F.J. (ed.) Proc. of the 15th Workshop on Functional and (Constraint) Logic Programming, WFLP 2006, Madrid, Spain. ENTCS, vol. 177, pp. 75–89. Elsevier (2007)
Calejo, M.: A Framework for Declarative Prolog Debugging. PhD thesis, New University of Lisbon (1992)
Davie, T., Chitil, O.: Hat-delta: One Right Does Make a Wrong. In: Seventh Symposium on Trends in Functional Programming, TFP 2006 (April 2006)
Hirunkitti, V., Hogger, C.J.: A Generalised Query Minimisation for Program Debugging. In: Fritzson, P.A. (ed.) AADEBUG 1993. LNCS, vol. 749, pp. 153–170. Springer, Heidelberg (1993)
Insa, D., Silva, J.: Scaling up algorithmic debugging with virtual execution trees. In: Alpuente, M. (ed.) LOPSTR 2010. LNCS, vol. 6564, pp. 149–163. Springer, Heidelberg (2011)
Insa, D., Silva, J., Riesco, A.: Speeding up algorithmic debugging using balanced execution trees—detailed results. Technical Report 04/13, Departamento de Sistemas Informáticos y Computación (April 2013)
Kokai, G., Nilson, J., Niss, C.: GIDTS: A Graphical Programming Environment for Prolog. In: Workshop on Program Analysis For Software Tools and Engineering, PASTE 1999, pp. 95–104. ACM Press (1999)
MacLarty, I.: Practical Declarative Debugging of Mercury Programs. PhD thesis, Department of Computer Science and Software Engineering, University of Melbourne (2005)
Maeji, M., Kanamori, T.: Top-Down Zooming Diagnosis of Logic Programs. Technical Report TR-290, Japan (1987)
Nilsson, H.: Declarative Debugging for Lazy Functional Languages. PhD thesis, Linköping, Sweden (May 1998)
Nilsson, H., Fritzson, P.: Algorithmic Debugging for Lazy Functional Languages. Journal of Functional Programming 4(3), 337–370 (1994)
Shapiro, E.Y.: Algorithmic Program Debugging. MIT Press (1982)
Silva, J.: A Survey on Algorithmic Debugging Strategies. Advances in Engineering Software 42(11), 976–991 (2011)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Insa, D., Silva, J., Riesco, A. (2013). Speeding Up Algorithmic Debugging Using Balanced Execution Trees. In: Veanes, M., Viganò, L. (eds) Tests and Proofs. TAP 2013. Lecture Notes in Computer Science, vol 7942. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-38916-0_8
Download citation
DOI: https://doi.org/10.1007/978-3-642-38916-0_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-38915-3
Online ISBN: 978-3-642-38916-0
eBook Packages: Computer ScienceComputer Science (R0)