A Debugger for Standard ML
- 1 April 1995
- journal article
- Published by Cambridge University Press (CUP) in Journal of Functional Programming
- Vol. 5 (2) , 155-200
- https://doi.org/10.1017/s0956796800001313
Abstract
We have built a portable, instrumentation-based, replay debugger for the Standard ML of New Jersey compiler. Traditional ‘source-level’ debuggers for compiled languages actually operate at machine level, which makes them complex, difficult to port, and intolerant of compiler optimization. For secure languages like ML, however, debugging support can be provided without reference to the underlying machine, by adding instrumentation to program source code before compilation. Because instrumented code is (almost) ordinary source, it can be processed by the ordinary compiler. Our debugger is thus independent from the underlying hardware and runtime system, and from the optimization strategies used by the compiler. The debugger also provides reverse execution, both as a user feature and an internal mechanism. Reverse execution is implemented using a checkpoint and replay system; checkpoints are represented primarily by first-class continuations.Keywords
This publication has 24 references indexed in Scilit:
- Techniques for debugging parallel programs with flowback analysisACM Transactions on Programming Languages and Systems, 1991
- Revised 4 report on the algorithmic language schemeACM SIGPLAN Lisp Pointers, 1991
- Runtime tags aren't necessaryHigher-Order and Symbolic Computation, 1989
- Simple generational garbage collection and fast allocationSoftware: Practice and Experience, 1989
- Expansion-passing style: A general macro mechanismHigher-Order and Symbolic Computation, 1988
- A formal approach to undo operations in programming languagesACM Transactions on Programming Languages and Systems, 1986
- User Recovery and Reversal in Interactive SystemsACM Transactions on Programming Languages and Systems, 1984
- Symbolic Debugging of Optimized CodeACM Transactions on Programming Languages and Systems, 1982
- Event associations in SNOBOL4 for program debuggingSoftware: Practice and Experience, 1978
- Debugging systems at the source language levelCommunications of the ACM, 1963