SLE 2014: Software Language Engineering pp 102-121 | Cite as
The Moldable Debugger: A Framework for Developing Domain-Specific Debuggers
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.
Keywords
Domain Concept Activation Predicate Execution Context Primitive Predicate Grammar ProductionPreview
Unable to display preview. Download preview PDF.
References
- 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.Tassey, G.: The economic impacts of inadequate infrastructure for software testing. Technical report, National Institute of Standards and Technology (2002)Google Scholar
- 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.Rajlich, V., Wilde, N.: The role of concepts in program comprehension. In: Proc. IWPC, pp. 271–278 (2002)Google Scholar
- 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.Fowler, M.: Domain-Specific Languages. Addison-Wesley Professional (2010)Google Scholar
- 7.Ressia, J., Bergel, A., Nierstrasz, O.: Object-centric debugging. In: Proc. ICSE, pp. 485–495 (2012)Google Scholar
- 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.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.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.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.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.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.Potanin, A., Noble, J., Biddle, R.: Snapshot query-based debugging. In: Proc. ASWEC, p. 251 (2004)Google Scholar
- 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.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.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.Roehm, T., Tiarks, R., Koschke, R., Maalej, W.: How do professional developers comprehend software? In: Proc. ICSE, pp. 255–265 (2012)Google Scholar
- 19.Murphy, G.C., Kersten, M., Findlater, L.: How are Java software developers using the Eclipse IDE? IEEE Software (July 2006)Google Scholar
- 20.Beck, K.: Test Driven Development: By Example. Addison-Wesley Longman (2002)Google Scholar
- 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.Kersten, M., Murphy, G.C.: Mylar: a degree-of-interest model for IDEs. In: Proc. AOSD, pp. 159–168 (2005)Google Scholar
- 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.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.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.Beck, K.: Kent Beck’s Guide to Better Smalltalk. Sigs Books (1999)Google Scholar
- 27.Chis, A., Nierstrasz, O., Gîrba, T.: Towards a moldable debugger. In: Proc. DYLA, pp. 2:1–2:6 (2013)Google Scholar
- 28.Renggli, L., Ducasse, S., Gîrba, T., Nierstrasz, O.: Practical dynamic grammars for dynamic languages. In: Proc. DYLA (2010)Google Scholar
- 29.Bunge, P.: Scripting browsers with Glamour. Master’s thesis, University of Bern (2009)Google Scholar
- 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.Lieberman, H., Fry, C.: ZStep 95: A reversible, animated source code stepper. MIT Press (1998)Google Scholar
- 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.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.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.Maalej, W.: Task-First or Context-First? Tool Integration Revisited. In: Proc. ASE, pp. 344–355 (2009)Google Scholar
- 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.Ducassé, M.: Coca: An automated debugger for C. In: International Conference on Software Engineering, pp. 154–168 (1999)Google Scholar
- 38.Winterbottom, P.: ACID: A debugger built from a language. In: USENIX Technical Conference, pp. 211–222 (1994)Google Scholar
- 39.Golan, M., Hanson, D.R.: Duel — a very high-level debugging language. In: USENIX Winter, pp. 107–118 (1993)Google Scholar
- 40.Maruyama, K., Terada, M.: Debugging with reverse watchpoint. In: QSIC (2003)Google Scholar
- 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.Lindeman, R.T., Kats, L.C., Visser, E.: Declaratively defining domain-specific language debuggers. In: Proc. GPCE, pp. 127–136 (2011)Google Scholar
- 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.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.Zeller, A., Lütkehaus, D.: DDD — a free graphical front-end for Unix debuggers. SIGPLAN Not. 31(1), 22–27 (1996)CrossRefGoogle Scholar
- 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.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.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.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