Debuggable Concurrency Extensions for Standard ML
We are developing an interactive debugger with reverse execution for
the language Standard ML extended to include concurrent threads in the
style of Modula-2+. Our debugging approach is based on automatic
instrumentation in the source language of the user's source code; this
makes the debugger completely independent of the compiler back-end,
run-time system, and target hardware. The debugger operates entirely
inside the concurrency model and has no special concurrency
privileges. In this paper, we consider some of the challenges of
debugging a non-deterministic concurrent symbolic language "in itself."
Issues considered include logging non-deterministic activity, obtaining
more secure semantics for our concurrency primitives, controlling
distributed computations, and defining suitable time models. We
conclude by suggesting an alternative simulation-based approach to
dealing with non-determinism.
- This technical report has been published as
- Debuggable concurrency extensions for Standard ML. Andrew
P. Tolmach and Andrew W. Appel, Proc. ACM/ONR Workshop on Parallel
and Distributed Debugging, May 1991 (ACM/SIGPLAN Notices,
Dec. 1991), pp. 115-127.