Abstract
Until today the most common technique to debug Java programs is trace debugging. In this work we present two different debugging approaches for Java: declarative debugging, which has its origins in the area of functional and logic programming, and omniscient debugging, which is basically an extension of trace debugging. To benefit from the advantages of both techniques we have integrated them into a single hybrid debugger called JHyde. We use JHyde to debug an erroneous merge sort algorithm and mention important aspects of its implementation. Furthermore, we show that the efficiency of the declarative debugging method can be significantly improved by a new debugging strategy.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
References
Hailpern, B., Santhanam, P.: Software debugging, testing, and verification. IBM Systems Journal 41, 4–12 (2002)
Zeller, A.: How Failures Come to Be. In: Why Programs Fail: A Guide to Systematic Debugging, pp. 1–26. Morgan Kaufmann (2005)
Lewis, B.: Debugging Backwards in Time. CoRR cs.SE/0310016 (2003)
Shapiro, E.Y.: Algorithmic Program DeBugging. MIT Press (1983)
Nilsson, H.: How to look busy while being as lazy as ever: the Implementation of a lazy functional debugger. Journal of Functional Programming 11, 629–671 (2001)
Caballero, R., Rodríguez-Artalejo, M.: A Declarative Debugging System for Lazy Functional Logic Programs. Electronic Notes in Theoretical Computer Science 64 (2002)
Caballero, R., Hermanns, C., Kuchen, H.: Algorithmic Debugging of Java Programs. Electronic Notes in Theoretical Computer Science 177, 75–89 (2007)
Hermanns, C.: JHyde - Eclipse plugin (2011), http://www.wi.uni-muenster.de/pi/personal/hermanns.php
Eclipse Foundation: Eclipse IDE (2011), http://www.eclipse.org/
Pressman, R.S.: Software Engineering: A Practitioner’s Approach, 5th edn. McGrapw-Hill (2001)
Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, 2nd edn. The MIT Press (2001)
Object Web: Asm (2011), http://asm.ow2.org/
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison-Wesley, Boston (1995)
Shahmehri, N., Fritzson, P.: Algorithmic Debugging for Imperative Languages with Side-Effects. In: Hammer, D. (ed.) CC 1990. LNCS, vol. 477, pp. 226–227. Springer, Heidelberg (1991)
Fritzson, P., Shahmehri, N., Kamkar, M., Gyimothy, T.: Generalized algorithmic debugging and testing. ACM Letters on Programming Languages and Systems 1, 303–322 (1992)
Girgis, H.Z., Jayaraman, B.: JavaDD: a Declarative Debugger for Java. Technical report, Department of Computer Science and Engineering, University at Buffalo (2006)
Kouh, H.-J., Kim, K.-T., Jo, S.-M., Yoo, W.-H.: Debugging of Java Programs Using HDT with Program Slicing. In: Laganá, A., Gavrilova, M.L., Kumar, V., Mun, Y., Tan, C.J.K., Gervasi, O. (eds.) ICCSA 2004. LNCS, vol. 3046, pp. 524–533. Springer, Heidelberg (2004)
Silva, J.: A Comparative Study of Algorithmic Debugging Strategies. In: Puebla, G. (ed.) LOPSTR 2006. LNCS, vol. 4407, pp. 143–159. Springer, Heidelberg (2007)
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
Hermanns, C., Kuchen, H. (2013). Hybrid Debugging of Java Programs. In: Escalona, M.J., Cordeiro, J., Shishkov, B. (eds) Software and Data Technologies. ICSOFT 2011. Communications in Computer and Information Science, vol 303. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-36177-7_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-36177-7_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-36176-0
Online ISBN: 978-3-642-36177-7
eBook Packages: Computer ScienceComputer Science (R0)