[slime-devel] swank:slime-debugger-function ?

Pierre-François Gomez pierre-francois.gomez at NOSPAM-laposte.net
Sun May 2 10:11:03 UTC 2004


"Thomas F. Burdick" <tfb at OCF.Berkeley.EDU> writes:

> Helmut Eller writes:
>  > Pierre-François Gomez <pierre-francois.gomez at NOSPAM-laposte.net>
>  > writes:
>  > 
>  > > Has it been replaced by something else ?
>  > 
>  > Sort of.  I'm not familiar with Araneida, but it might work if you

What do you mean by "sort of" ? Has it been renamed ? Not that this is
really important : i'm just curious :)

>  > do:
>  > 
>  >  (setf *restart-on-handler-errors* #'swank:swank-debugger-hook)
(snip the test by Thomas f. Burdick)
> I assume this will all work right with the threaded listener; I use
> the serve-event based one.

I confirm your assumption : it works with the threaded listener, too.

I simply added the setf form just after having loaded araneida (it's a
separate sbcl image dedicated to my future app) and when a handler
produces an error (i just added an 'assert' form), i now have this
message in the *slime-repl* buffer :

debugger invoked on a SB-INT:SIMPLE-PROGRAM-ERROR in thread 25738:
  invalid number of arguments: 1

I then discovered M-x slime-list-threads and i was able to "enter" the
thread using 'd' on its id. I have the following backtrace :

Restarts:
  0: [CONTINUE] Continue from interrupt.
  1: [ABORT-RESPONSE] Abort this response and answer another request
  2: [DESTROY-THREAD] Destroy this thread (25738)

Backtrace:
  0: ("XEP for SWANK-DEBUGGER-HOOK" 1 #<SIMPLE-ERROR {941DD01}> #<unused argument>)[:EXTERNAL]
  1: (ARANEIDA::HANDLER-DEBUGGER-HOOK #<SIMPLE-ERROR {941DD01}> #<unavailable argument>)
  2: (INVOKE-DEBUGGER 1 #<SIMPLE-ERROR {941DD01}>)[:EXTERNAL]
  3: (ERROR 1 #<SIMPLE-ERROR {941DD01}>)[:EXTERNAL]
  4: (SB-KERNEL:ASSERT-ERROR 3 (TMP-OF HANDLER) NIL NIL)[:EXTERNAL]
  5: ((HANDLE-REQUEST-RESPONSE (TEST-ERROR-HANDLER T T)) #<unavailable argument> #<unavailable argument> #<TEST-ERROR-HANDLER {9DCF159}> #<unavailable argument> #<REQUEST {92926B9}>)
  6: ((HANDLE-REQUEST (HANDLER T)) #<unavailable argument> #<unavailable argument> #<TEST-ERROR-HANDLER {9DCF159}> #<REQUEST {92926B9}>)
  7: ((HANDLE-REQUEST (HANDLER T)) #<unavailable argument> #<unavailable argument> #<DISPATCHING-HANDLER {9F68351}> #<REQUEST {92926B9}>)
  8: ("LABELS ARANEIDA::DO-IT" #<THREADED-HTTP-LISTENER {9DCF319}> #<FILE-STREAM for "a constant string" {91B28D9}>)
  9: (ARANEIDA::THREADED-HTTP-LISTENER-ACCEPT-ONE-REQUEST #<THREADED-HTTP-LISTENER {9DCF319}> #S(ARANEIDA::HTTP-THREAD :PID 25738 :LAST-HIT NIL :QUITTING NIL))
  10: ("#'(LAMBDA NIL (LOOP #))")
  11: ("XEP for #'(LAMBDA NIL (LOOP #))" 0)[:EXTERNAL]
  12: ("#'(LAMBDA NIL (LET # # ...))")
  13: ("foreign function call land: ra=#x805B011")
  14: ("foreign function call land: ra=#x805AE2D")

I now have access to the debugger, which is what i wanted.

I'm a little confused with the "debugger invoked" message, though. I'm
not yet fluent with the debugger, but it seems there's another error
than my assert here, isn't it ?

I'll continue to dive into this. Now that i have access to the debugger,
i think i can manage. And it's a good way to learn :)

I'll try to figure out what happens and if i find something interesting
for slime, i'll post it.

I think i'm ok with this now. I now have a starting point, at least.
Thank you ! :)

-- 
Pierre-François Gomez                                 GnuPG: 0xA38AE42C




More information about the slime-devel mailing list