Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/91556.91564acmconferencesArticle/Chapter ViewAbstractPublication PageslfpConference Proceedingsconference-collections
Article
Free access

Debugging standard ML without reverse engineering

Published: 01 May 1990 Publication History

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.

References

[1]
A.W. Appel and D.B. MacQueen, "A Standard ML compiler,'' in Functional Programming Languages and Computer Architecture, ed. G. Kahn, LNCS, vol. 274, pp. 301-324, Springer Verlag, 1987.
[2]
A.W. Appel, "Garbage collection can be faster than stack allocation," Information Processing Letters, vol. 25, no. 4, pp. 275-279, 1987.
[3]
A.W. Appet, B.F. Duba, and D.B, MacQueen, "Profiling in the presence of optimization and garbage collection," Technical Report CS-TR-197-88, Princeton University Dept. of Computer Science, 1988.
[4]
A.W. Appel, "Runtime tags aren't necessary," Lisp and Symbolic Computation, vol. 2, pp. 153-162, 1989.
[5]
A.W. Appel, "Continuation-passing, closure-passing style," Sixteenth ACM Syrup. on Principles of Programming Languages, pp. 293-302, 1989.
[6]
Z. Aral, I. Gertner, and G. Schaffer, "Efficient debugging primitives for multiprocessors," Proc. 3rd International Conf. on Architectural Support for Programming Languages and Operating Systems, 1989.
[7]
R.M. Balzer, "EXDAMS - EXtendable Debugging and Monitoring System," AFIPS Proc. Spring Joint Computer Conference, vol. 34, pp. 567-580, AFIPS Press, Arlington, VA, 1969.
[8]
B, Bruegge, "Adaptability and portability of symbolic debuggers," (Thesis) CMU-CS-85-174, Carnegie-Mellon University Dept. of Computer Science, Sept 1985.
[9]
T.A. Cargill and B.N. Locanthi, "Cheap hardware support for software debugging and profiling," Proc. SIG- PLAN '87 Symposium on Compiler Construction, pp. 82- 83, June 1987.
[10]
R. Curtis and L. Winie, "Bugnet: A debugging system for parallel programming environments," Proc. 3rd International Conf. on Distributed Computing Systems, pp. 394-399, October 1982.
[11]
R.K. Dybvig, D.P. Friedman, and C.T. Haynes, "Expansion-Passing style: A general macro mechanism," Lisp and Symbolic Computation, vol. 1, pp. 53-75, 1988.
[12]
D.P. Friedman, C.T. Haynes, and E. Kohlbecker, "Programming with continuations," in Program transformation and programming environments, ed. P. Pepper, pp. 263-274, Springer, 1984.
[13]
D.R. Hanson, "Event associations in SNOBOL4 for program debugging," Software Practice and Experience, vol. 8, pp. 115-129, 1978.
[14]
J. Hennessy, "Symbolic debugging of optimized code," ACM Transactions on Programming Languages and Systems, vol. 4, no. 3, pp. 323-344, July 1982.
[15]
G.F. Johnson and D. Duggan, "Stores and partial continuations as first-class objects in a language and its envixonment," Proc. 15th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, San Diego, CA, January 1988.
[16]
T.J. LeBlanc and J.M. Mellor-Crummey, "Debugging parallel programs with Instant Replay," IEEE Transactions on Computers, vol. 36, no. 4, pp. 471-482, April 87.
[17]
C.E. McDowell and D.P. Helmbold, "Debugging concurrent programs," ACM Computing Surveys, vol. 21, no. 4, pp. 593-622, December 1989.
[18]
J.M. Mellor-Crummey and T.J. LeBlanc, "A software instruction counter," Proc. 3rd International Conf. on Architectural Support for Programming Languages and Operating Systems, 1989.
[19]
B.P. Miller and $.-D Choi, "A mechanism for efficient debugging of parallel programs," Proc. SIGPLAN '88 Conference on Programming Language Design and Implementation, pp. 135-144, Atlanta, Georgia, June 22- 24, 1988.
[20]
R. Milner, M. Torte, and R. Harper, The Definition of Standard ML, MIT Press, Cambridge, Mass., 1990.
[21]
Robert A. Shaw, "Improving garbage collector performance in virtual memory," STAN-TR-87-323, Stanford University Computer Science Department, 1987.
[22]
P.R. Wilson and T.G. Moher, "Demonic memory for process histories," Proc. SIGPLAN 89 Conference on Programming Language Design and Implementation, June 1989.
[23]
P.T. Zellweger, "Interactive source-level debugging of optimized programs," CSL-84-5, Xerox Corporation Palo Alto Research Center, May 1984.

Cited By

View all

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
LFP '90: Proceedings of the 1990 ACM conference on LISP and functional programming
May 1990
348 pages
ISBN:089791368X
DOI:10.1145/91556
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 May 1990

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

LFP90

Acceptance Rates

Overall Acceptance Rate 30 of 109 submissions, 28%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)56
  • Downloads (Last 6 weeks)6
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Software ticks need no specificationsProceedings of the 43rd International Conference on Software Engineering: New Ideas and Emerging Results10.1109/ICSE-NIER52604.2021.00021(61-65)Online publication date: 25-May-2021
  • (2020)Evolution of Emacs LispProceedings of the ACM on Programming Languages10.1145/33863244:HOPL(1-55)Online publication date: 12-Jun-2020
  • (2016)Dependence-driven delimited CPS transformation for JavaScriptACM SIGPLAN Notices10.1145/3093335.299324352:3(59-69)Online publication date: 20-Oct-2016
  • (2016)Dependence-driven delimited CPS transformation for JavaScriptProceedings of the 2016 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/2993236.2993243(59-69)Online publication date: 20-Oct-2016
  • (2015)Debugging mixed-environment programs with BlinkSoftware—Practice & Experience10.1002/spe.227645:9(1277-1306)Online publication date: 1-Sep-2015
  • (2011)URDBProceedings of the 6th Workshop on Programming Languages and Operating Systems10.1145/2039239.2039251(1-5)Online publication date: 23-Oct-2011
  • (2010)Lightweight checkpointing for concurrent mlJournal of Functional Programming10.1017/S095679681000006720:2(137-173)Online publication date: 1-Mar-2010
  • (2009)Debug all your codeProceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications10.1145/1640089.1640105(207-226)Online publication date: 26-Oct-2009
  • (2009)Debug all your codeACM SIGPLAN Notices10.1145/1639949.164010544:10(207-226)Online publication date: 25-Oct-2009
  • (2008)Semantics directed program execution monitoringJournal of Functional Programming10.1017/S09567968000014655:4(501-547)Online publication date: 7-Nov-2008
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media