Sam*_*ese 7 compiler-errors sbcl common-lisp
我已经用Common Lisp开发了近一年了,这真的开始让我感到紧张.我开始使用CLISP编程CL,但后来我转而使用SBCL来提高速度.我做了很多相当低级的东西,所以我需要与很多C代码接口.我非常喜欢CL的增量开发方面(我不使用Emacs - 我在Vim中运行SLIMV),但我发现自己的开发速度比在Python,Perl,C甚至NASM中都要慢.问题的根源在于SBCL的错误消息.我曾被迫搜索近500行代码,因为SBCL决定给我一个ERROR: Invalid number of arguments on foreign function #< some memory address >.没有指定调用什么函数,没有行号,没有.最近,我有了The loaded code expects an incompatible layout for class SB-PRETTY:PRETTY-STREAM.随意的喜悦.代码在CLISP上运行FINE,但是在SBCL上出现了一些模糊的错误.有没有办法让这些消息更具信息量?我已经写了近6年的C和汇编了,甚至他们也会给你一个行号.我见过的唯一一半合理的SBCL错误是读者错误,这几乎是无用的,因为它们通常相当于缺少括号.同样,是否有任何声明/命令行开关可用于更改此设置?我甚至可以在这一点上编写我自己的错误打印机.
编辑:一个例子,(sb-ext:restrict-compiler-policy 'debug 3)在我的〜/ .sbclrc中(使用--load而不是--script,所以.sbclrc被加载)
debugger invoked on a SB-INT:SIMPLE-PROGRAM-ERROR in thread
#<THREAD "main thread" RUNNING {AB09931}>:
invalid number of arguments: 0
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-KERNEL::INVALID-ARG-COUNT-ERROR-HANDLER
#<unavailable argument>
#.(SB-SYS:INT-SAP #XB78CDAE0)
#<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #XB78CD7DC :TYPE (*
(STRUCT
SB-VM::OS-CONTEXT-T-STRUCT))>
(79))
0] print
(SB-KERNEL::INVALID-ARG-COUNT-ERROR-HANDLER
#<unavailable argument>
#.(SB-SYS:INT-SAP #XB78CDAE0)
#<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #XB78CD7DC :TYPE (*
(STRUCT
SB-VM::OS-CONTEXT-T-STRUCT))>
(79))
0] down
(SB-KERNEL:INTERNAL-ERROR
#.(SB-SYS:INT-SAP #XB78CD7DC)
#<unavailable argument>)
1] down
("foreign function: #x805FCBB")
2] down
Bottom of stack.
Run Code Online (Sandbox Code Playgroud)
不完全提供信息.
我想你正在寻找: (sb-ext:restrict-compiler-policy 'debug 3)
您可以将它放入您~/.sbclrc的REPL中,而SBCL的调试器(特别是在SLIME中)将产生更多有用的结果.
| 归档时间: |
|
| 查看次数: |
1851 次 |
| 最近记录: |