README.org 3.1 KB

lilu-debugger: debugging utilities

Usage

Debugging

To install the debugger hook:


(enable-debugger)

To ensure it is installed globally:


(enable-debugger :force-global-p t)

To uninstall it


(disable-debugger)
;; (disable-debugger :force-global-p t)

To activate a debugger (e.g. emacs):


(setf (active-debugger) :emacs)

To get the list of installed debuggers:


(registered-debuggers)

To get the active debugger:


(active-debugger)

To set a default-debugger (e.g. emacs):


(setf *default-debugger* :emacs)

to use it:


(setf (active-debugger) :default)

or:


(setf (active-debugger) :dynamic) ;; it check *default-debugger* at every invocation

To use a degugger locally (e.g. emacs):


(with-debugger (:emacs)
  ...
  )

To ignore condition (inside with-debugger):


(with-debugger (:emacs)
  ...
  (ignore-conditions
    ...
    )
  ...
  )

Breaking

To install the debugger hook for the break function:


(enable-break)

To ensure it is installed globally:


(enable-break :force-global-p t)

To uninstall it


(disable-break)
;; (disable-debugger :force-global-p t)

To activate a specific debugger for break (e.g. emacs):


(setf (active-break-debugger) :emacs)

To set *break-on-signals*:


(with-break-on-signals (:emacs)
  ...
  )

or:


(with-debugger (:emacs 'warn)
  ...
  )

Installation

Clone the project into local-projects of quicklisp, then


(ql:quickload :lilu-debugger)

Load different debugger implementation:


(ql:quickload :lilu-debugger/emacs) ;; require lilu-emacs
(ql:quickload :lilu-debugger/clim)  ;; require mcclim
(ql:quickload :lilu-debugger/dmenu) ;; require lilu-dmenu

Implemented Debuggers

Name What Requires Quicklisp
:none do nothing s
:abort always invoke abort restart
:quit always exit from common lisp
:default see defaul-debugger
:dynamic see default-debugger at every invocation
:emacs open emacs and run its debugger lilu-emacs No
:lem open lem and run its debugger mcclim Yes
:clim lilu-lem No
:dmenu use dmenu to select a debugger lilu-dmenu No

Author

License

  • Alessandro Serra (gas2serra@gmail.com)
  • Copyright (c) 2021 Alessandro Serra (gas2serra@gmail.com) Creative Commons CC0 1.0 Universal