Common Lisp: TRIVIAL-CUSTOM-DEBUGGER
Michał "phoe" Herda · Wednesday, 15 April - 20:19
I have managed to create a portability library that successfully overrides the standard Lisp debugger and allows the programmer to supply their own code in its stead.
Purpose: a basic building block that allows one to implement a portable, custom debugger for Common Lisp systems in place of the original system-provided one.
Roughly tested on SBCL, CCL, ECL, Clasp, CLISP, ABCL, LW, and ACL.
TRIVIAL-CUSTOM-DEBUGGER> (with-debugger ((lambda (condition hook) (declare (ignore hook)) (format t ";; Debugging a ~S!~%" (type-of condition)) (throw :handled t))) (list (catch :handled (error 'error)) (catch :handled (break)) (let ((*break-on-signals* 'error)) (catch :handled (signal 'error))) (catch :handled (invoke-debugger (make-condition 'error))))) ;; Debugging a ERROR! ;; Debugging a SIMPLE-CONDITION! ;; Debugging a SIMPLE-CONDITION! ;; Debugging a ERROR! (T T T T)
See it on GitHub.