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