"Thomas F. Burdick" tfb@OCF.Berkeley.EDU writes:
Helmut Eller writes:
Pierre-François Gomez pierre-francois.gomez@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 ! :)