Debugging standard ML without reverse engineering

Andrew P. Tolmach, Andrew W. Appel

Research output: Chapter in Book/Report/Conference proceedingConference contribution

40 Scopus citations


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.

Original languageEnglish (US)
Title of host publicationProc 1990 ACM Conf LISP Funct Program
PublisherPubl by ACM
Number of pages12
ISBN (Print)089791368X, 9780897913683
StatePublished - 1990
EventProceedings of the 1990 ACM Conference on LISP and Functional Programming - Nice, Fr
Duration: Jun 27 1990Jun 29 1990

Publication series

NameProc 1990 ACM Conf LISP Funct Program


OtherProceedings of the 1990 ACM Conference on LISP and Functional Programming
CityNice, Fr

All Science Journal Classification (ASJC) codes

  • General Engineering
  • Software
  • Modeling and Simulation
  • Computational Theory and Mathematics
  • Computational Mathematics


Dive into the research topics of 'Debugging standard ML without reverse engineering'. Together they form a unique fingerprint.

Cite this