Abstract
Language extension enables integration of new language constructs without invasive changes to a base language (e. g., C). Such extensions help to build more reliable software by using proper domain-specific abstractions. Language workbenches significantly reduce the effort for building such extensible languages by synthesizing a fully-fledged IDE from language definitions. However, in contemporary tools, this synthesis does not include interactive debugging for programs written with the base language or its extensions. This paper describes a generic framework for extensible debuggers that enables debugging of the language extensions by defining mappings between the base language and the language extensions. The architecture is designed for extensibility, so debug support for future extensions can be contributed with little effort. We show an implementation of our approach for mbeddr, which is an extensible version of the C programming language. We also discuss the debugger implementation for non-trivial C extensions such as components. Finally, the paper discusses the extent to which the approach can be used with other base languages, debugger backends and language workbenches.
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
Al-Sharif, Z., Jeffery, C.: An Extensible Source-Level Debugger. In: Proceedings of the 2009 ACM Symposium on Applied Computing, pp. 543–544. ACM, Honolulu (2009)
Van den Brand, M.G.J., Cornelissen, B., Oliver, P.A., Vinju, J.J.: TIDE: A Generic Debugging Framework - Tool Demonstration. In: Electronic Notes in Theoretical Computer Science, vol. 141, pp. 161–165. Edinburgh, UK (2005)
Cornelissen, B.: Using TIDE to Debug ASF+SDF on Multiple Levels. Master’s thesis, University of Amsterdam, Netherlands (2005)
Culpepper, R., Felleisen, M.: Debugging Macros. In: 6th International Conference on enerative Programming and Component Engineering, pp. 135–144. ACM, Salzburg (2007)
van Deursen, A., Dinesh, T.B., van der Meulen, E.: The ASF+SDF Meta-Environment. In: Proceedings of the 3rd International Conference on Methodology and Software Technology, pp. 411–412. Springer, Enschede (1993)
Eclipse Foundation: Eclipse CDT (2015). http://www.eclipse.org/cdt
International Organization for Standardization (ISO): ISO C 99 Standard (1999). http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
JetBrains: Meta Programming System (2015). http://www.jetbrains.com/mps
Lindeman, R.T., Kats, L.C., Visser, E.: Declaratively Defining Domain-specific Language Debuggers. In: 10th Conference on Generative Programming and Component Engineering, pp. 127–136. ACM, New York (2011)
May, J., Berman, F.: Panorama: A Portable, Extensible Parallel Debugger. In: 3rd Workshop on Parallel and Distributed Debugging, pp. 96–106. ACM, San Diego (1993)
Pavletic, D., Raza, S.A., Voelter, M., Kolb, B., Kehrer, T.: Extensible Debuggers for Extensible Languages. In: 15th Workshop Software-Reengineering. pp. 33–34. Bad Honnef, Germany (2013)
Porkoláb, Z., Mihalicza, J., Sipos, A.: Debugging C++ Template Metaprograms. In: 5th Conference on Generative Programming and Component Engineering, pp. 255–264. ACM, New York (2006)
Voelter, Markus: Language and IDE Modularization and Composition with MPS. In: Lämmel, Ralf, Saraiva, Jo\ {a}o, Visser, Joost (eds.) GTTSE 2011. LNCS, vol. 7680, pp. 383–430. Springer, Heidelberg (2013)
Voelter, M.: Preliminary Experience of using mbeddr for Developing Embedded Software. In: Proceedings of the Workshop Model-based Engineering of Embedded Systems X, pp. 73–82. Wadern, Germany (2014)
Voelter, M., Ratiu, D., Schaetz, B., Kolb, B.: Mbeddr: An Extensible C-based Programming Language and IDE for Embedded Systems. In: Conference on Systems. Programming, and Applications: Software for Humanity, SPLASH 2012, pp. 121–140. ACM, New York (2012)
Voelter, M., Visser, E.: Language Extension and Composition with Language Workbenches. In: Companion to the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, SPLASH/OOPSLA, pp. 301–304. ACM, New York (2010)
Vraný, Jan, Píše, Michal: Multilanguage Debugger Architecture. In: van Leeuwen, Jan, Muscholl, Anca, Peleg, David, Pokorný, Jaroslav, Rumpe, Bernhard (eds.) SOFSEM 2010. LNCS, vol. 5901, pp. 731–742. Springer, Heidelberg (2010)
Wu, H.: Grammar-Driven Generation of Domain-Specific Language Testing Tools. In: Companion to the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming. Systems, Languages, and Applications, OOPSLA 2005, pp. 210–211. ACM, San Diego (2005)
Wu, H., Gray, J.G., Roychoudhury, S., Mernik, M.: Weaving a Debugging Aspect into Domain-Specific Language Grammars. In: Proceedings of the 2005 ACM Symposium on Applied Computing, pp. 1370–1374. ACM, Santa Fe (2005)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Pavletic, D., Voelter, M., Raza, S.A., Kolb, B., Kehrer, T. (2015). Extensible Debugger Framework for Extensible Languages. In: de la Puente, J., Vardanega, T. (eds) Reliable Software Technologies – Ada-Europe 2015. Ada-Europe 2015. Lecture Notes in Computer Science(), vol 9111. Springer, Cham. https://doi.org/10.1007/978-3-319-19584-1_3
Download citation
DOI: https://doi.org/10.1007/978-3-319-19584-1_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-19583-4
Online ISBN: 978-3-319-19584-1
eBook Packages: Computer ScienceComputer Science (R0)