Debugging Standard ML Without Reverse Engineering
Report ID: TR-253-90Author: 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.