The Moldable Debugger: A Framework for Developing Domain-Specific Debuggers

  • Andrei Chiş
  • Tudor Gîrba
  • Oscar Nierstrasz
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8706)

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    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)CrossRefGoogle Scholar
  2. 2.
    Tassey, G.: The economic impacts of inadequate infrastructure for software testing. Technical report, National Institute of Standards and Technology (2002)Google Scholar
  3. 3.
    Littman, D.C., Pinto, J., Letovsky, S., Soloway, E.: Mental models and software maintenance. Journal of Systems and Software 7(4), 341–355 (1987)CrossRefGoogle Scholar
  4. 4.
    Rajlich, V., Wilde, N.: The role of concepts in program comprehension. In: Proc. IWPC, pp. 271–278 (2002)Google Scholar
  5. 5.
    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)CrossRefGoogle Scholar
  6. 6.
    Fowler, M.: Domain-Specific Languages. Addison-Wesley Professional (2010)Google Scholar
  7. 7.
    Ressia, J., Bergel, A., Nierstrasz, O.: Object-centric debugging. In: Proc. ICSE, pp. 485–495 (2012)Google Scholar
  8. 8.
    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)CrossRefGoogle Scholar
  9. 9.
    Wu, H., Gray, J., Mernik, M.: Grammar-driven generation of domain-specific language debuggers. Softw. Pract. Exper. 38(10), 1073–1103 (2008)CrossRefGoogle Scholar
  10. 10.
    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)CrossRefGoogle Scholar
  11. 11.
    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)CrossRefGoogle Scholar
  12. 12.
    Khoo, Y.P., Foster, J.S., Hicks, M.: Expositor: scriptable time-travel debugging with first-class traces. In: Proc. ICSE, pp. 352–361 (2013)Google Scholar
  13. 13.
    Lencevicius, R., Hölzle, U., Singh, A.K.: Query-based debugging of object-oriented programs. In: Proc. OOPSLA, pp. 304–317 (1997)Google Scholar
  14. 14.
    Potanin, A., Noble, J., Biddle, R.: Snapshot query-based debugging. In: Proc. ASWEC, p. 251 (2004)Google Scholar
  15. 15.
    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)Google Scholar
  16. 16.
    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)Google Scholar
  17. 17.
    Auguston, M., Jeffery, C., Underwood, S.: A framework for automatic debugging. In: Proc. ASE 2002, pp. 217–222. IEEE Computer Society (2002)Google Scholar
  18. 18.
    Roehm, T., Tiarks, R., Koschke, R., Maalej, W.: How do professional developers comprehend software? In: Proc. ICSE, pp. 255–265 (2012)Google Scholar
  19. 19.
    Murphy, G.C., Kersten, M., Findlater, L.: How are Java software developers using the Eclipse IDE? IEEE Software (July 2006)Google Scholar
  20. 20.
    Beck, K.: Test Driven Development: By Example. Addison-Wesley Longman (2002)Google Scholar
  21. 21.
    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)CrossRefGoogle Scholar
  22. 22.
    Kersten, M., Murphy, G.C.: Mylar: a degree-of-interest model for IDEs. In: Proc. AOSD, pp. 159–168 (2005)Google Scholar
  23. 23.
    Hanson, D.R., Korn, J.L.: A simple and extensible graphical debugger. In: WINTER 1997 USENIX CONFERENCE, pp. 173–184 (1997)Google Scholar
  24. 24.
    Murphy-Hill, E., Parnin, C., Black, A.P.: How we refactor, and how we know it. In: Proc. ICSE, pp. 287–297 (2009)Google Scholar
  25. 25.
    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)Google Scholar
  26. 26.
    Beck, K.: Kent Beck’s Guide to Better Smalltalk. Sigs Books (1999)Google Scholar
  27. 27.
    Chis, A., Nierstrasz, O., Gîrba, T.: Towards a moldable debugger. In: Proc. DYLA, pp. 2:1–2:6 (2013)Google Scholar
  28. 28.
    Renggli, L., Ducasse, S., Gîrba, T., Nierstrasz, O.: Practical dynamic grammars for dynamic languages. In: Proc. DYLA (2010)Google Scholar
  29. 29.
    Bunge, P.: Scripting browsers with Glamour. Master’s thesis, University of Bern (2009)Google Scholar
  30. 30.
    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)CrossRefGoogle Scholar
  31. 31.
    Lieberman, H., Fry, C.: ZStep 95: A reversible, animated source code stepper. MIT Press (1998)Google Scholar
  32. 32.
    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)CrossRefGoogle Scholar
  33. 33.
    Bonér, J.: What are the key issues for commercial AOP use: how does AspectWerkz address them? In: Proc. AOSD, pp. 5–6 (2004)Google Scholar
  34. 34.
    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)CrossRefGoogle Scholar
  35. 35.
    Maalej, W.: Task-First or Context-First? Tool Integration Revisited. In: Proc. ASE, pp. 344–355 (2009)Google Scholar
  36. 36.
    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)Google Scholar
  37. 37.
    Ducassé, M.: Coca: An automated debugger for C. In: International Conference on Software Engineering, pp. 154–168 (1999)Google Scholar
  38. 38.
    Winterbottom, P.: ACID: A debugger built from a language. In: USENIX Technical Conference, pp. 211–222 (1994)Google Scholar
  39. 39.
    Golan, M., Hanson, D.R.: Duel — a very high-level debugging language. In: USENIX Winter, pp. 107–118 (1993)Google Scholar
  40. 40.
    Maruyama, K., Terada, M.: Debugging with reverse watchpoint. In: QSIC (2003)Google Scholar
  41. 41.
    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)Google Scholar
  42. 42.
    Lindeman, R.T., Kats, L.C., Visser, E.: Declaratively defining domain-specific language debuggers. In: Proc. GPCE, pp. 127–136 (2011)Google Scholar
  43. 43.
    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)CrossRefGoogle Scholar
  44. 44.
    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)Google Scholar
  45. 45.
    Zeller, A., Lütkehaus, D.: DDD — a free graphical front-end for Unix debuggers. SIGPLAN Not. 31(1), 22–27 (1996)CrossRefGoogle Scholar
  46. 46.
    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)Google Scholar
  47. 47.
    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)Google Scholar
  48. 48.
    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)CrossRefGoogle Scholar
  49. 49.
    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)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Andrei Chiş
    • 1
  • Tudor Gîrba
    • 2
  • Oscar Nierstrasz
    • 1
  1. 1.Software Composition GroupUniversity of BernBernSwitzerland
  2. 2.CompuGroup Medical Schweiz AGBernSwitzerland

Personalised recommendations