Nikodemus Siivola <tsiivola@...> writes:
> On Fri, 18 Jun 2004, Christophe Rhodes wrote:
>> Is anyone out there interested in a little bit of work? Attached is a
>> tacky implementation of a single-stepper, extremely lightly tested (to
>> the point that I haven't even tried to see if it builds).
> This is exceedingly funky!
> By tacky, do you mean the insertion of the signalling forms, or something
That's basically what I mean. It doesn't have the inherent cleverness
of the cmucl-style stepper: working out which assembly instructions
are at code section boundaries; replacing those instructions with
trapping ones; handling the trap and performing the displaced
instruction on continuing. On the other hand, it does have the virtue
of standing a chance of being maintainable...
>> * make it only step onto forms that were in some sense present in the
>> original source;
> For general-purpose use that would probably be better, but I think
> there is educational value in seeing the non-original forms. Maybe
> another bit of policy based control, eg. debug-internals (which
> could conceivably be used elsewhere as well)?
>> * possibly other stuff that I haven't thought of;
> Intermediate values would be nice. ;-)
Yes, Andreas mentioned this on IRC too. It's a SMOP, but not so S,
because displaying intermediate values goes something like
`(let ((values (multiple-value-list ,before-form)))
(signal 'step-condition :after-form ',after-form
but that's an implicit PROGN, so will go through IR1-CONVERT-PROGN...
Patches welcome :-)
http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757
(set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b)))
(defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge)