[slime-devel] Turn off stepping with cmucl?

Helmut Eller heller at common-lisp.net
Wed Sep 1 07:25:37 UTC 2010


* Raymond Toy [2010-09-01 00:52] writes:

> I finally got around to playing with slime's stepper.  It's not exactly
> clear how to get this enabled, but what I did was trace some function
> with :break t.  When the debugger starts, I can then use slime to
> single-step.  This works pretty well.  However, after I'm done and
> untrace the function, I still get stepping breakpoints in the function.
>
> How are these breakpoints supposed to be removed?
>
> Also, from the code, it seems that slime inserts stepping breakpoints at
> all possible locations in a function.  Can't it just single-step the way
> cmucl's native debugger steps by inserting the breakpoint, running, and
> then removing the breakpoint?

As far as I can rememeber, the idea is to insert breakpoints at all
those places that are reachable from the current PC in the current
function (and where it's save to set a breakpoint).  When a breakpoint
is hit, all the breakpoints from that "barrier" are removed before
giving control to the UI.  The next step command will again compute the
reachable code points and insert breakpoints before starting executing.

There may well be bugs there.  I think if another function is called
before hitting a breakpoint and the callee makes some non-local return
(typically from debugger) the breakpoints in the caller are not cleared.

Maybe we need to insert some trampoline frame at callsites to remove the
breakpoints on non-local exits.  Hmm... might be difficult for the
local-call variants.

Helmut





More information about the slime-devel mailing list