Quick links

Debugging Standard ML Without Reverse Engineering

Report ID:
February 1990
Download Formats:


We have built a novel and efficient replay debugger for our Standard
ML compiler. Debugging facilities are provided by instrumenting the
user's source code; this approach, made feasible by ML's safety
property, is machine-independent and back-end independent. Replay is
practical because ML is normally used functionally, and our compiler
uses continuation-passing style; thus most of the program's state can
be checkpointed quickly and compactly using
call-with-current-continuation. Together, instrumentation and replay
support a simple and elegant debugger featuring full variable display,
polymorphic type resolution, stack trace-back, breakpointing, and
reverse execution, even though our compiler is very highly optimizing
and has no run-time stack.

This technical report has been published as
Debugging Standard ML without reverse engineering.
Andrew P. Tolmach and Andrew W. Appel, Proc. 1990 ACM Conf. on
Lisp and Functional Programming
pp. 1-12, June 1990.
Follow us: Facebook Twitter Linkedin