[plt-scheme] ATTN: Neil Van Dyke (and some philosophical musings on debuggers)

From: Eric Kidd (eric.kidd at gmail.com)
Date: Thu Sep 16 14:35:40 EDT 2004

I'm removing Neil's name from the subject line; he's got to be feeling
a bit pestered by now. :-)

On Thu, 16 Sep 2004 14:08:40 -0400, Prabhakar Ragde
<plragde at uwaterloo.ca> wrote:
> I appreciate your point about intrusive tools being
> crutches, but I think it has to be carefully qualified. --PR

I don't really have a strong opinion on this subject, actually.  But I
do have some data points:

1) I've spent a fair bit of time working on embedded systems, early
stage compilers, and other hard-to-debug beasties (many of them with
really long build times).  This experience forced me to become
paranoid--desk-checking my code, thinking through every little detail,
and simply not making many mistakes.  If it weren't for this
experience, I'd be a much weaker programmer today.

2) The bugs that *do* slip through a thorough review can be very
nasty.  In the past year, I've encountered two compiler bugs, a bunch
of bugs based on a slightly imperfect understanding of Tamale's
internals (while overhauling those internals considerably), and lots
of corner-case design flaws.  For these problems, a debugger can be
anything from a handy tool that reduces debugging time to the only way
to *ever* figure out what's going on.

3) Debuggers are essential when debugging somebody else's code,
especially if there's a great steaming mass of it.

4) Debuggers seem to be greatly loved by people who don't really know
how to program, but for some reason must do so anyway.  We encounter
this with Tamale, obviously, where we have multimedia types writing
small amounts of Scheme code.

Today, I'm evaluating a commercial debugging/memory-checking tool,
because I've spent the past two days trying to debug a crash in the
Microsoft C++ runtime.  This tool is admittedly one big crutch.  But
when you're limping, crutches can be a good thing.

Cheers,
Eric

http://iml.dartmouth.edu/tamale/


Posted on the users mailing list.