Lambda the Ultimate

inactiveTopic Omniscient debugger
started 8/30/2002; 6:01:24 AM - last post 9/1/2002; 2:26:04 AM
Adewale Oshineye - Omniscient debugger  blueArrow
8/30/2002; 6:01:24 AM (reads: 552, responses: 3)
Sun's Java website has an article about "omniscient debugging". The idea is to have a debugger which takes snapshots of every change in the state of your application and then uses that to let the developer go backwards or forwards in the execution of the code. This offers a different level of introspection to traditional debuggers where you set a breakpoint or single-step through the code. Here you can see what happened just before the application changed to the invalid state and I imagine this would make debugging complex concurrency problems significantly easier.

The Sun article is here:, the official site for the debugger is here:, and a fascinating paper describing the ideas behind the implementation is here:

Has anyone seen any implementations of the same idea in other languages? The developer,Bil Lewis, refers to various Lisp systems that have a similar level of introspection available but doesn't mention any specific Lisp debuggers.

Ehud Lamm - Re: Omniscient debugger  blueArrow
8/30/2002; 6:27:27 AM (reads: 591, responses: 0)
A student of mine built exaclty this sort of thing for the languages in EOPL2. Supposedly the design is pretty modular, so plugging his into other interpreters shouldn't be too hard.

If anyone is interested, let me know and I'll forward your mail to him.

Michael Vanier - Re: Omniscient debugger  blueArrow
9/1/2002; 12:52:08 AM (reads: 574, responses: 1)
Ocaml has a debugger like this for programs compiled into ocaml bytecode. It can go back and forth in program time. It's quite useful.

Ehud Lamm - Re: Omniscient debugger  blueArrow
9/1/2002; 2:26:04 AM (reads: 590, responses: 0)
I seem to recall from a disucssion here, that the Ocaml debugger doesn't let you change values. It's much nicer when you can change values in the environment, or replace the values of expressions (i.e., continue as if this expression had the value 10).