A Debugger for standard ML

Andrew Tolmhch, Andrew W. Appel

Research output: Contribution to journalArticlepeer-review

34 Scopus citations


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.

Original languageEnglish (US)
Pages (from-to)155-200
Number of pages46
JournalJournal of Functional Programming
Issue number2
StatePublished - Apr 1995

All Science Journal Classification (ASJC) codes

  • Software


Dive into the research topics of 'A Debugger for standard ML'. Together they form a unique fingerprint.

Cite this