Abstract
Debuggers are crucial tools for developing object-oriented software systems as they give developers direct access to the running systems. Nevertheless, traditional debuggers rely on generic mechanisms to explore and exhibit the execution stack and system state, while developers reason about and formulate domain-specific questions using concepts and abstractions from their application domains. This creates an abstraction gap between the debugging needs and the debugging support leading to an inefficient and error-prone debugging effort. To reduce this gap, we propose a framework for developing domain-specific debuggers called the Moldable Debugger. The Moldable Debugger is adapted to a domain by creating and combining domain-specific debugging operations with domain-specific debugging views, and adapts itself to a domain by selecting, at run time, appropriate debugging operations and views. We motivate the need for domain-specific debugging, identify a set of key requirements and show how our approach improves debugging by adapting the debugger to several domains.
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
Vessey, I.: Expertise in Debugging Computer Programs: An Analysis of the Content of Verbal Protocols. IEEE Trans. on Systems, Man, and Cybernetics 16(5), 621–637 (1986)
Tassey, G.: The economic impacts of inadequate infrastructure for software testing. Technical report, National Institute of Standards and Technology (2002)
Littman, D.C., Pinto, J., Letovsky, S., Soloway, E.: Mental models and software maintenance. Journal of Systems and Software 7(4), 341–355 (1987)
Rajlich, V., Wilde, N.: The role of concepts in program comprehension. In: Proc. IWPC, pp. 271–278 (2002)
Renggli, L., Gîrba, T., Nierstrasz, O.: Embedding languages without breaking tools. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 380–404. Springer, Heidelberg (2010)
Fowler, M.: Domain-Specific Languages. Addison-Wesley Professional (2010)
Ressia, J., Bergel, A., Nierstrasz, O.: Object-centric debugging. In: Proc. ICSE, pp. 485–495 (2012)
Sillito, J., Murphy, G.C., De Volder, K.: Asking and answering questions during a programming change task. IEEE Trans. Softw. Eng. 34, 434–451 (2008)
Wu, H., Gray, J., Mernik, M.: Grammar-driven generation of domain-specific language debuggers. Softw. Pract. Exper. 38(10), 1073–1103 (2008)
Olsson, R.A., Crawford, R.H., Ho, W.W.: A dataflow approach to event-based debugging. Software - Practice and Experience 21(2), 209–229 (1991)
Marceau, G., Cooper, G.H., Spiro, J.P., Krishnamurthi, S., Reiss, S.P.: The design and implementation of a dataflow language for scriptable debugging. Automated Software Engineering 14(1), 59–86 (2007)
Khoo, Y.P., Foster, J.S., Hicks, M.: Expositor: scriptable time-travel debugging with first-class traces. In: Proc. ICSE, pp. 352–361 (2013)
Lencevicius, R., Hölzle, U., Singh, A.K.: Query-based debugging of object-oriented programs. In: Proc. OOPSLA, pp. 304–317 (1997)
Potanin, A., Noble, J., Biddle, R.: Snapshot query-based debugging. In: Proc. ASWEC, p. 251 (2004)
Martin, M., Livshits, B., Lam, M.S.: Finding application errors and security flaws using PQL: a program query language. In: Proc. OOPSLA, pp. 363–385. ACM (2005)
DeLine, R., Bragdon, A., Rowan, K., Jacobsen, J., Reiss, S.P.: Debugger canvas: industrial experience with the code bubbles paradigm. In: ICSE, pp. 1064–1073 (2012)
Auguston, M., Jeffery, C., Underwood, S.: A framework for automatic debugging. In: Proc. ASE 2002, pp. 217–222. IEEE Computer Society (2002)
Roehm, T., Tiarks, R., Koschke, R., Maalej, W.: How do professional developers comprehend software? In: Proc. ICSE, pp. 255–265 (2012)
Murphy, G.C., Kersten, M., Findlater, L.: How are Java software developers using the Eclipse IDE? IEEE Software (July 2006)
Beck, K.: Test Driven Development: By Example. Addison-Wesley Longman (2002)
Ko, A., Myers, B., Coblenz, M., Aung, H.: An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans. Softw. Eng. 32(12), 971–987 (2006)
Kersten, M., Murphy, G.C.: Mylar: a degree-of-interest model for IDEs. In: Proc. AOSD, pp. 159–168 (2005)
Hanson, D.R., Korn, J.L.: A simple and extensible graphical debugger. In: WINTER 1997 USENIX CONFERENCE, pp. 173–184 (1997)
Murphy-Hill, E., Parnin, C., Black, A.P.: How we refactor, and how we know it. In: Proc. ICSE, pp. 287–297 (2009)
Murphy-Hill, E., Jiresal, R., Murphy, G.C.: Improving software developers’ fluency by recommending development environment commands. In: FSE, pp. 42:1–42:11 (2012)
Beck, K.: Kent Beck’s Guide to Better Smalltalk. Sigs Books (1999)
Chis, A., Nierstrasz, O., Gîrba, T.: Towards a moldable debugger. In: Proc. DYLA, pp. 2:1–2:6 (2013)
Renggli, L., Ducasse, S., Gîrba, T., Nierstrasz, O.: Practical dynamic grammars for dynamic languages. In: Proc. DYLA (2010)
Bunge, P.: Scripting browsers with Glamour. Master’s thesis, University of Bern (2009)
Crawford, R.H., Olsson, R.A., Ho, W.W., Wee, C.E.: Semantic issues in the design of languages for debugging. Comput. Lang. 21(1), 17–37 (1995)
Lieberman, H., Fry, C.: ZStep 95: A reversible, animated source code stepper. MIT Press (1998)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.M., Irwin, J.: Aspect-oriented programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Bonér, J.: What are the key issues for commercial AOP use: how does AspectWerkz address them? In: Proc. AOSD, pp. 5–6 (2004)
Kosar, T., Mernik, M., Gray, J., Kos, T.: Debugging measurement systems using a domain-specific modeling language. Computers in Industry 65(4), 622–635 (2014)
Maalej, W.: Task-First or Context-First? Tool Integration Revisited. In: Proc. ASE, pp. 344–355 (2009)
Nierstrasz, O., Ducasse, S., Gîrba, T.: The story of Moose: an agile reengineering environment. In: Proc. of ESEC/FSE, pp. 1–10 (2005) (invited paper)
Ducassé, M.: Coca: An automated debugger for C. In: International Conference on Software Engineering, pp. 154–168 (1999)
Winterbottom, P.: ACID: A debugger built from a language. In: USENIX Technical Conference, pp. 211–222 (1994)
Golan, M., Hanson, D.R.: Duel — a very high-level debugging language. In: USENIX Winter, pp. 107–118 (1993)
Maruyama, K., Terada, M.: Debugging with reverse watchpoint. In: QSIC (2003)
Ko, A.J., Myers, B.A.: Debugging reinvented: Asking and answering why and why not questions about program behavior. In: Proc. of ICSE, pp. 301–310 (2008)
Lindeman, R.T., Kats, L.C., Visser, E.: Declaratively defining domain-specific language debuggers. In: Proc. GPCE, pp. 127–136 (2011)
Kolomvatsos, K., Valkanas, G., Hadjiefthymiades, S.: Debugging applications created by a domain specific language: The IPAC case. J. Syst. Softw. 85(4), 932–943 (2012)
Bragdon, A., Zeleznik, R., Reiss, S.P., Karumuri, S., Cheung, W., Kaplan, J., Coleman, C., Adeputra, F., LaViola Jr., J.J.: Code bubbles: a working set-based interface for code understanding and maintenance. In: CHI, pp. 2503–2512 (2010)
Zeller, A., Lütkehaus, D.: DDD — a free graphical front-end for Unix debuggers. SIGPLAN Not. 31(1), 22–27 (1996)
Cross II, J.H., Hendrix, T.D., Umphress, D.A., Barowski, L.A., Jain, J., Montgomery, L.N.: Robust generation of dynamic data structure visualizations with multiple interaction approaches. Trans. Comput. Educ. 9(2), 13:1–13:32 (2009)
Cheng, Y.P., Chen, J.F., Chiu, M.C., Lai, N.W., Tseng, C.C.: xDIVA: a debugging visualization system with composable visualization metaphors. In: OOPSLA Companion, pp. 807–810 (2008)
van den Brand, M.G.J., Cornelissen, B., Olivier, P.A., Vinju, J.J.: TIDE: A generic debugging framework — tool demonstration —. Electron. Notes Theor. Comput. Sci. 141(4), 161–165 (2005)
Henriques, P.R., Pereira, M.J.V., Mernik, M., Lenic, M., Gray, J., Wu, H.: Automatic generation of language-based tools using the LISA system. IEE Software Journal 152(2), 54–69 (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Chiş, A., Gîrba, T., Nierstrasz, O. (2014). The Moldable Debugger: A Framework for Developing Domain-Specific Debuggers. In: Combemale, B., Pearce, D.J., Barais, O., Vinju, J.J. (eds) Software Language Engineering. SLE 2014. Lecture Notes in Computer Science, vol 8706. Springer, Cham. https://doi.org/10.1007/978-3-319-11245-9_6
Download citation
DOI: https://doi.org/10.1007/978-3-319-11245-9_6
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-11244-2
Online ISBN: 978-3-319-11245-9
eBook Packages: Computer ScienceComputer Science (R0)