在~/.sbclrc
中放入以下代码可以让我在从命令行使用SBCL REPL时无需潜入调试器(我觉得有点烦人)即可接收简化的错误消息。
(defun print-condition-hook (condition hook)
"Print this error message (condition) and abort the current operation."
(declare (ignore hook))
(princ condition)
(clear-input)
(abort))
(setf *debugger-hook* #'print-condition-hook)
当从Emacs和SLIME中运行SBCL REPL时(这是我与它交互的常用方式),每当我出现错误时,REPL都会坚持进入调试器。
在Emacs和SLIME中使用SBCL时,如何抑制调试器,同时仍然获得简化的错误消息/条件?
在SBCL中,除cl:*debugger-hook*
外,还检查sb-ext:*invoke-debugger-hook*
。SLIME和SLY同时使用这两种方法,而不是只用一种。更新前者以使用你的函数应该会得到你想要的行为。
调试器是使Common Lisp好用的东西之一。我可以理解在某些有限的情况下关闭它,但很难想象在默认情况下一直关闭它。