[plt-scheme] Announcing MzTake: a scriptable debugger
On Tue, 2004-08-10 at 01:19, Shriram Krishnamurthi wrote:
> We are pleased to announce MzTake, a language to monitor and debug
> PLTScheme programs both interactively and via scripts. MzTake
> scripts are written in the FrTime language. FrTime offers powerful
> event abstractions that, in MzTake, turn their sights on program
> events.
That's really neat.
I'd been meaning to code up a scriptable debugger for Java using JDWP.
Rich Kilmer seems to have beat me to it though:
http://rubyforge.org/projects/rubyjdwp/
http://www.zenspider.com/dl/rubyconf2003/RubyAndJDWP.pdf
http://richkilmer.blogs.com/ether/2003/12/project_alph.html
One of the reasons why I find MzTake an extremely neat hack is because
it kinda sorta puts to rest the debate over whether one should use
printf-style debugging or a real debugger. On the one side of this
debate, we find Brian Kernighan and Rob Pike who wrote in their book
The Practice of Programming:
As a personal choice, we tend not to use debuggers beyond getting
a stack trace or the value of a variable or two. One reason is
that it is easy to get lost in details of complicated data
structures and control flow; we find stepping through a program
less productive than thinking harder and adding output statements
and self-checking code at critical places. Clicking over
statements takes longer than scanning the output of
judiciously-placed displays. It takes less time to decide where to
put print statements than to single-step to the critical section
of code, even assuming we know where that is. More important,
debugging statements stay with the program; debugging sessions are
transient.
-- (mis)quoted in http://logging.apache.org/log4j/docs/manual.html
Robert C. Martin (a.k.a. Uncle Bob) also opined that "debuggers are a
wasteful timesink":
http://www.artima.com/forums/flat.jsp?forum=106&thread=23476
With tools like MzTake, the difference between printf- and gdb-style
debugging is blurred. Debugging sessions need no longer be transient.
They can be captured as scripts.
Also, a quick comment in response to this:
On Tue, 2004-08-10 at 08:26, Guillaume Marceau wrote in
http://list.cs.brown.edu/pipermail/plt-scheme/2004-August/006330.html
Message-ID: <Pine.LNX.4.58.0408100820010.8165 at aegir>:
> On Tue, 10 Aug 2004, Matthew Jadud wrote:
> > 4) I can even (I suspect) run my computation backwards and
> > forwards if I instrument the virtual machine correctly, using <<
> > and >> buttons in a FrTime GUI. I imagine an appropriate call to
> > call/cc in one or two places achieves what I'm talking about.
>
> yes and no.
>
> MzTake will let you pause the program in the middle of the
> execution, and then resume forward. However, we don't have backward
> time travel implemented (unfortunately).
Speaking of backward time travel, I don't know if you've heard of the
Omniscient Debugger:
http://www.lambdacs.com/debugger/debugger.html
See also
http://gcc.gnu.org/ml/gcc/2004-06/msg00219.html
Thanks,
Vadim