Hostname: page-component-77f85d65b8-grvzd Total loading time: 0 Render date: 2026-04-21T08:48:30.605Z Has data issue: false hasContentIssue false

A Debugger for Standard ML1

Published online by Cambridge University Press:  07 November 2008

Andrew Tolmach
Affiliation:
Department of Computer Science, Portland State University, P.O. Box 751, Portland, OR 97207-0751, USA email: apt@cs.pdx.edu
Andrew W. Appel
Affiliation:
Department of Computer Science, Princeton University, 35 Olden Street, Princeton, NJ 08544-2087, USA email: appel@cs.princeton.edu
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

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.

Information

Type
Articles
Copyright
Copyright © Cambridge University Press 1995
Submit a response

Discussions

No Discussions have been published for this article.