[slime-devel] Asynchronous debugging

Helmut Eller e9626484 at stud3.tuwien.ac.at
Tue Nov 25 16:08:44 UTC 2003


Daniel Barlow <dan at telent.net> writes:

> More on yesterday's experiments.  The attached patch 

Where is it? :)

> (1) adds :debug as a valid state transition from the idle state

Perhaps a different name for the event, e.g, :async-debug, would be
better.  There is a certain risk that this transition hides
(unrelated) bugs, if we use the same name.  We might also consider to
make this an out-of-band event.

> (2) adds SLIME-DEBUGGER-FUNCTION.  This expects to be run in an
>     environment in which the slime streams are available (e.g. from 
>     *slime-repl* or, I think, with C-c :) and returns a function that
>     can be used for *debugger-hook* or *invoke-debugger-hook*
> 
>     Note that (setf sb-debug::*invoke-debugger-hook* (slime-debugger-function))
>     doesn't actually work from *slime-repl* because the hook has
>     already been bound so you're not setting the global value.
>     Answers on a postcard.

I assume you would like the set *invoke-debugger-hook*, so that it is
used in your asynchronous handlers.  We could modify the swank-server
and enter an infinite loop instead of using fd-handlers for request
processing.  This "slime-loop" (idle-loop? break-loop?) would be
similar to the sldb-loop.  Assignments to special variables would then
be visible as long as you are in the dynamic extend of the slime-loop.
Is it acceptable that all your handlers run in the dynamic extend of
the this loop?

Another idea is that we allow support multiple sessions with multiple
tcp connections (each session a dedicated connection).  A
asynchronous handler could then initiate a new session.

> (3) Changes eval-string to use *invoke-debugger-hook* instead of 
>     ordinary *debugger-hook* - because it's safe for BREAK, and also 
>     so it doesn't conflict with my existing (notionally portable)
>     *debugger-hook* use in Araneida
> 
>     If I culd figure out an appropriate place to put it, I'd want to 
>     make this a (with-debugging-hooked ...) macro, but I think that
>     needs build order frobbing

Until now we worked around this problem and used functions like
call-with-debugging-hooked.  The function is then defined later.
Perhaps we should split the files again, so that the build order would
be like: swank-early, swank-sbcl-early, swank, swank-sbcl.  The
*-early files contain the macro definitions a non portable package
frobbing.

Helmut.




More information about the slime-devel mailing list