Debugging Standard ML Without Reverse Engineering

Report ID: TR-253-90
Author: Tolmach, Andrew P. / Appel, Andrew W.
Date: 1990-03-00
Pages: 13
Download Formats: |PDF|
Abstract:

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.