Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

The design and implementation of a dataflow language for scriptable debugging

Published: 01 March 2007 Publication History

Abstract

Debugging is a laborious, manual activity that often involves the repetition of common operations. Ideally, users should be able to describe these repetitious operations as little programs. Debuggers should therefore be programmable, or scriptable. The operating environment of these scripts, however, imposes interesting design challenges on the programming language in which these scripts are written.
This paper presents our design of a language for scripting debuggers. The language offers powerful primitives that can precisely and concisely capture many important debugging and comprehension metaphors. The paper also describes a pair of debuggers, one for Java and the other for Scheme, built in accordance with these principles. The paper includes concrete examples of applying this debugger to programs.

References

[1]
Aral, Z., Gertner, I.: High-level debugging in Parasight. In: Proceedings of the ACM SIGPLAN and SIGOPS Workshop on Parallel and Distributed Debugging, pp. 151–162. ACM Press (1988)
[2]
Aspect oriented programming (article series). Commun. ACM 44(10) (2001)
[3]
Auguston, M., Jeffery, C., Underwood, S.: A framework for automatic debugging. In: Automated Software Engineering, pp. 217–222 (2002)
[4]
Bruegge, B., Hibbard, P.: Generalized path expressions: A high level debugging mechanism. In: Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on High-level Debugging, pp. 34–44 (1983)
[5]
Clements J. and Felleisen M. A tail-recursive machine with stack inspection ACM Trans. Program. Lang. Syst. 2004 26 6 1029-1052
[6]
Cooper, G.H., Krishnamurthi, S.: Embedding dynamic dataflow in a call-by-value language. In: European Symposium on Programming (2006)
[7]
Cormen, T.H., Leiserson, C.E., Rivest, R.L.: Introduction to Algorithms. McGraw-Hill (1997)
[8]
Courtney, A.: Frappé: Functional reactive programming in Java. In: Practical Aspects of Declarative Languages, pp. 29–44. Springer-Verlag (March 2001)
[9]
Crawford, R.H., Olsson, R.A., Ho, W.W., Wee, C.E.: Semantic issues in the design of languages for debugging. In: Proceedings of the International Conference on Computer Languages, pp. 252–261 (1992)
[10]
de Sousa Dias, M., Richardson, D.J.: Issues on software monitoring. Technical report, ICS (2002)
[11]
Ducassé, M.: Coca: an automated debugger for C. In: Proceedings of the 21st International Conference on Software Engineering, pp. 504–513 (1999)
[12]
Elliott, C., Hudak, P.: Functional reactive animation. In: Proceedings of the International Conference on Functional Programming, pp. 263–277 (1997)
[13]
Filman, R., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. In: Workshop on Advanced Separation of Concerns (October 2000)
[14]
Findler R.B., Clements J., Flanagan C., Flatt M., Krishnamurthi S., Steckler P., and Felleisen M. DrScheme: A programming environment for Scheme J. Funct. Program. 2002 12 2 159-182
[15]
Flatt, M., Findler, R.B., Krishnamurthi, S., Felleisen, M.: Programming languages as operating systems (or, Revenge of the Son of the Lisp Machine). In: ACM SIGPLAN International Conference on Functional Programming, pp. 138–147 (September 1999)
[16]
Golan, M., Hanson, D.R.: DUEL – a very high-level debugging language. In: Proceedings of the USENIX Annual Technical Conference, pp. 107–118, Winter (1993)
[17]
Hanson, D.R., Kom, J.L.: A simple and extensible graphical debugger. In: Proceedings of the USENIX Annual Technical Conference, pp. 183–174 (1997)
[18]
Jeffery, C., Zhou, W., Templer, K., Brazell, M.: A lightweight architecture for program execution monitoring. In: SIGPLAN Notices vol. 33, pp. 67–74 (1998)
[19]
Johnson M.S. Dispel: A run-time debugging language Comput. Lang. 1981 6 79-94
[20]
Kelsey, R., Clinger, W., Rees, J.: Revised5 report on the algorithmic language Scheme. ACM SIGPLAN Notices 33(9) (1998)
[21]
Lencevicius, R.: On-the-fly query-based debugging with examples. In: Proceedings of the Fourth International Workshop on Automated Debugging (2000)
[22]
Lencevicius R., Hölzle U., and Singh A.K. Dynamic query-based debugging of object-oriented programs Autom. Softw. Eng. 2003 10 1 39-74
[23]
Marceau, G., Cooper, G.H., Krishnamurthi, S., Reiss, S.P.: A dataflow language for scriptable debugging. In: IEEE International Conference on Automated Software Engineering (2004)
[24]
Meyer, B.: Eiffel: The Language. Prentice-Hall (1992)
[25]
Olsson, R.A., Crawford, R.H., Wilson Ho, W.: Dalek: A GNU, improved programmable debugger. In: Proceedings of the Usenix Technical Conference, pp. 221–232 (1990)
[26]
Smith, D.R.: A generative approach to aspect-oriented programming. In: International Conference on Generative Programming and Component Engineering, vol. 3286, pp. 39–54 (2004)
[27]
Stallman, R.M.: GDB Manual (The GNU Source-Level Debugger). Free Software Foundation, third edition. Cambridge, MA (January 1989)
[28]
Winterbottom, P.: Acid, a debugger built from a language. In: Proceedings of the USENIX Annual Technical Conference, pp. 211–222 (January 1994)

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Automated Software Engineering
Automated Software Engineering  Volume 14, Issue 1
Mar 2007
123 pages

Publisher

Kluwer Academic Publishers

United States

Publication History

Published: 01 March 2007

Author Tags

  1. Debugging
  2. Script automation
  3. Dataflow dsl scheme
  4. Java

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 24 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2022)BOLD: an ontology-based log debugger for C programsAutomated Software Engineering10.1007/s10515-021-00308-829:1Online publication date: 1-May-2022
  • (2021)Adaptable Traces for Program ExplanationsProgramming Languages and Systems10.1007/978-3-030-89051-3_12(202-221)Online publication date: 17-Oct-2021
  • (2020)Explanations for Dynamic ProgrammingPractical Aspects of Declarative Languages10.1007/978-3-030-39197-3_12(179-195)Online publication date: 20-Jan-2020
  • (2018)A programmable programming languageCommunications of the ACM10.1145/312732361:3(62-71)Online publication date: 21-Feb-2018
  • (2016)RDBGProceedings of the 19th International Workshop on Software and Compilers for Embedded Systems10.1145/2906363.2906372(116-125)Online publication date: 23-May-2016
  • (2016)Debugging for reactive programmingProceedings of the 38th International Conference on Software Engineering10.1145/2884781.2884815(796-807)Online publication date: 14-May-2016
  • (2015)Medic: metaprogramming and trace-oriented debuggingProceedings of the Workshop on Future Programming10.1145/2846656.2846658(7-14)Online publication date: 26-Oct-2015
  • (2015)SimonProceedings of the 1st ACM SIGCOMM Symposium on Software Defined Networking Research10.1145/2774993.2774994(1-7)Online publication date: 17-Jun-2015
  • (2015)Practical domain-specific debuggers using the Moldable Debugger frameworkComputer Languages, Systems and Structures10.1016/j.cl.2015.08.00544:PA(89-113)Online publication date: 1-Dec-2015
  • (2014)Reactive Imperative Programming with Dataflow ConstraintsACM Transactions on Programming Languages and Systems10.1145/262320037:1(1-53)Online publication date: 17-Nov-2014
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media