[plt-scheme] Announcing MzTake: a scriptable debugger

From: Vadim Nasardinov (el-vadimo at comcast.net)
Date: Tue Aug 10 15:34:24 EDT 2004

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







Posted on the users mailing list.