Debugging 如何在sbcl中关闭调试器

Debugging 如何在sbcl中关闭调试器,debugging,lisp,common-lisp,sbcl,Debugging,Lisp,Common Lisp,Sbcl,我目前正在尝试学习CommonLisp,并且一直在使用sbcl(我希望这是一个不错的实现选择) 来自ruby和irb,我发现每次出错都会自动切换到调试器,这让我有点恼火。有没有办法在我玩的时候暂时关掉它 有一个--禁用调试器命令行选项,例如: $ sbcl --disable-debugger 从手册页: 默认情况下,当SBCL遇到 错误,它将进入内置项 调试器,允许交互 诊断和可能的调解。 此选项禁用调试器, 导致打印回溯跟踪时出错 并以状态1退出-- 哪种操作模式更好 适合批量加工。见 S

我目前正在尝试学习CommonLisp,并且一直在使用sbcl(我希望这是一个不错的实现选择)

来自ruby和irb,我发现每次出错都会自动切换到调试器,这让我有点恼火。有没有办法在我玩的时候暂时关掉它

有一个
--禁用调试器
命令行选项,例如:

$ sbcl --disable-debugger
从手册页:

默认情况下,当SBCL遇到 错误,它将进入内置项 调试器,允许交互 诊断和可能的调解。 此选项禁用调试器, 导致打印回溯跟踪时出错 并以状态1退出-- 哪种操作模式更好 适合批量加工。见 SB-EXT用户手册:禁用-DEBUGGER 详情请参阅


还有
--noinfo
--noprint
CL选项,您可能会发现它们很有用。

Common Lisp有一个变量,可以将其绑定/设置为函数

* (aref "123" 10)

debugger invoked on a SB-INT:INVALID-ARRAY-INDEX-ERROR:
  Index 10 out of bounds for (SIMPLE-ARRAY CHARACTER
                              (3)), should be nonnegative and <3.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-INT:INVALID-ARRAY-INDEX-ERROR "123" 10 3 NIL)
0] 0

* (defun debug-ignore (c h) (declare (ignore h)) (print c) (abort))

DEBUG-IGNORE
* (setf *debugger-hook* #'debug-ignore)

#<FUNCTION DEBUG-IGNORE>
* (aref "123" 10)

#<SB-INT:INVALID-ARRAY-INDEX-ERROR {1002A661D1}>
* 
*(aref“123”10)
对SB-INT调用的调试器:无效-ARRAY-INDEX-ERROR:
索引10超出(简单数组字符)的界限

(3) ),应该是非负的,并且是很好的发现,我试图找到一种方法来防止它在最后退出。对于任何使用clisp学习的人来说,等效的选项是:$clisp-on error ABORT这非常有效,我相信有一天我会需要调试器,但要测试它现在只是有点烦人:)谢谢你的回答。