
Thanks! Here's what I came up with that seems to work: (defvar *devel-mode* nil) (defun devel-mode-handler (condition) (when *devel-mode* (throw 'page-handler-done (format nil "<h1>Error</h1>~%~A<br>~%<pre>~%~A~%<pre>~%" condition (html-escape (tbnl::get-backtrace)))))) (defmacro defpage (url &body body) ... (catch 'page-handler-done (handler-bind ((error 'devel-mode-handler)) (html :page ,@body))))))) rg On Aug 28, 2010, at 4:29 AM, Leslie P. Polzer wrote:
Ron Garret wrote:
Is there any straightforward way to get a backtrace-on-error displayed on the browser screen instead of being logged to a file, like Pythons' cgitb package does? I tried this:
(defun error-handler (arg) [code-to-generate-backtrace])
(setf *HTTP-ERROR-HANDLER* 'error-handler)
but that doesn't work because by the time error-handler is called the server has already exited the error context.
Here's what we're using in Weblocks:
http://bitbucket.org/S11001001/weblocks-dev/src/tip/src/request-handler.lisp... http://bitbucket.org/S11001001/weblocks-dev/src/tip/src/error-handler.lisp#c...
HTH,
Leslie
_______________________________________________ tbnl-devel site list tbnl-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/tbnl-devel