From: Bill Dubuque

Subject: source-level dbg, example-driven dev [was: EDITI 3.0 Feedback: enhancement request]

Date: 1997-4-9 18:10


Thomas Weigert <pobox.mot.com at weigert> wrote to allegro-cl on 9 Apr 1997:
: 
: On Tue, 8 Apr 1997, Bill Dubuque <martigny.ai.mit.edu at wgd> said:
: BD> Dave Tenny <truesoft.com at dtenny> wrote to <Franz.com at Editi> on 8 Apr 1997
: BD>
: BD> DT> ... Usually when I want to TRACE or BREAKPOINT a function, I'm
: BD> DT> already sitting with the point somewhere in the definition of the
: BD> DT> function I want to trace, as opposed to a call site ...
: BD> 
: BD> I agree this would be a useful capability (though it would require
: BD> restructuring the prefix arg structure for all of the Tools commands in
: BD> Editi 3.0).
: 
: Please take a look at the way the interaction between the editor and the
: debugger is in AKCL with DBL installed. I believe that is the most
: productive way of debugging a lisp program (short of using the Genera
: environment).
: 
: (The following is assuming an emacs interface.) Basically, while editing a
: file you bring your cursor to the line you want to break at and execute
: some command to set a break point. When the computation hits that line you
: break, and the file is pulled up in a second window with that line
: highlighted. You can examine your stack in the listener window. When
: stepping the current source lines keep being highlighted, pulling new
: source files up when necessary. (Note that for this to work well, macros
: are not expanded, so you step through the macros as well. You can mix files
: that are loaded compiled and those that are loaded in the "debugable form")

I don't use AKCL, but I'm quite familiar with "source level debugging",
having used MIT/Symbolics Lispms for over a decade. Such capabilities
are planned for the next major Editi release, assuming appropriate funding
from Franz. Source level debugging is not trivial to implement because
the ACL/Win compiler currently has no support for such. That is why you
don't already see these capabilities in the ACL resident debugging tools.

Even better than source-level debugging is example-driven programming,
where you can specify example input/output to your functions, and watch 
the values of local variables etc. update as you type in the definition 
of your function. If such examples are also comprehensive (take all
possible paths) they also serve excellently for documentation, QA, 
and debugging purposes. This is something I hope to include in the 
"next generation" features that were alluded to in an earlier message
to allegro-cl in which I mentioned some future plans for Editi.

-Bill Dubuque