|
TR-253-90
Debugging Standard ML Without Reverse Engineering |
|
| Authors: | Tolmach, Andrew P., Appel, Andrew W. |
| Date: | March 1990 |
| Pages: | 13 |
| Download Formats: | [PDF] |
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. |
|