Debugging standard ML without reverse engineering

Andrew P. Tolmach, Andrew W. Appel

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

31 Scopus citations

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.

Original languageEnglish (US)
Title of host publicationProc 1990 ACM Conf LISP Funct Program
PublisherPubl by ACM
Pages1-12
Number of pages12
ISBN (Print)089791368X, 9780897913683
DOIs
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

Other

OtherProceedings of the 1990 ACM Conference on LISP and Functional Programming
CityNice, Fr
Period6/27/906/29/90

All Science Journal Classification (ASJC) codes

  • Engineering(all)
  • Software
  • Modeling and Simulation
  • Computational Theory and Mathematics
  • Computational Mathematics

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

  • Cite this

    Tolmach, A. P., & Appel, A. W. (1990). Debugging standard ML without reverse engineering. In Proc 1990 ACM Conf LISP Funct Program (pp. 1-12). (Proc 1990 ACM Conf LISP Funct Program). Publ by ACM. https://doi.org/10.1145/91556.91564