[hunchentoot-devel] cgitb

Ron Garret ron at flownet.com
Sat Aug 28 16:35:51 UTC 2010


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 , at 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#cl-60
>  http://bitbucket.org/S11001001/weblocks-dev/src/tip/src/error-handler.lisp#cl-35
> 
> HTH,
> 
>   Leslie
> 
> 
> _______________________________________________
> tbnl-devel site list
> tbnl-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/tbnl-devel





More information about the Tbnl-devel mailing list