Tobias C. Rittweiler writes:
Carlos Konstanski ckonstanski@pippiandcarlos.com writes:
My suggestion: have the ability to choose between today's *debugger-hook* functionality (honor the debugee application's condition handling), and that of the pre-April era (unconditionally override the debugee application's condition handling). It would be nice to have the choice to debug any application without concern for how that application handles conditions internally.
There should be a ARANEIDA:*TRAP-INTO-DEBUGGER* which you can set to T, and if it's T araneida's DEBUGGER-HOOK should invoke its old value (which is passed along side the condition in fact.) This is application's domain, not something we could do much about.
-T.
PS: That said, with SBCL you could place
#+sbcl (setf sb-ext:*invoke-debugger-hook* swank:swank-debugger-hook)
into your ~/.swank.lisp to overwrite any application-specific debugger-hook.
This suggestion looked very promising. If it were that easy, it would be exactly what I desired. Unfortunately, .swank.lisp gets loaded too early, and swank:swank-debugger-hook is unbound at that time.
I found the right spot in araneida to put this function call, however. I'll show it here for any araneida users out there. In http-listener.lisp:
(defmacro with-accept-flets (&body body) `(labels ((do-it (listener s) (let ((r (read-request-from-stream listener s))) (handler-case (handle-request-using-listener listener (http-listener-handler listener) r) (response-sent () nil) (http-error (c) (request-send-error r (http-error-code c) :log-message (http-error-message c) :client-message (http-error-client-message c)))))) (accept (listener) (listener-accept-stream listener))) (with-simple-restart (abort-response "Abort this response and answer another request") ;; expectation is that socket-accept will not block, because we ;; are invoked when select() says something is ready. we really ;; ought to set the master socket non-blocking to be sure. (let ((*debugger-hook* (if (and (find-package :swank) (functionp #'swank:swank-debugger-hook)) #'swank:swank-debugger-hook #'handler-debugger-hook))) ,@body))))
Danke sehr für Ihre Hilfe! Jetzt kann ich wieder fehlhafter lisp schreiben!