9
我想了解如何解释输出和使用Lisp调试器。帮助使用Lisp调试器
我已经有了一个非常简单的Backtrace来评估我的函数,但我似乎无法找出如何使用它找出函数中的Lisp'form'发生了异常。
我很欣赏任何线索,我应该做什么,找到在我的代码错误发生的地方。
另外 - 为什么第二帧显示为“没有可用于帧的调试信息”?
我已经附加了调试器和repl的屏幕截图(我还包括我的功能在下面 - 我知道这是非常错误的 - 但我只是有兴趣学习正确使用调试器)。另外,我在第一帧打'v'去源码,但是这导致了repl以下的错误。
- (编辑缺失的源代码的问题是通过下载&其复制到正确的路径固定)(可怕的功能 - !没有意见请)
(defun myquicksort2 (lst)
(if (eql 1 (length lst))
lst
(let ((mid (middle lst)))
(do ((i 0 (+ i 1)))
((>= i mid) (append (myquicksort2 (subseq lst 0 mid))
(myquicksort2 (subseq lst mid (length lst)))))
(if (> (ltval i lst) (nth 100 lst))
(let ((tmp (ltval i lst)))
(setf (nth i lst) (gtval i lst))
(setf (nth (- (- (length lst) i) 1) lst) tmp)))))))
(defun ltval (i lst)
(nth i lst))
(defun gtval (i lst)
(nth (- (- (length lst) i) 1) lst))
(defun middle (lst)
(round (/ (length lst) 2)))
应该提到没有'Lisp调试器'。 Lisp是一个庞大的语言和实现系列。大多数实现具有不同的调试器。像Emacs的SLIME这样的IDE增加了一个运行在受支持的Lisp之上的调试器接口。 – 2011-01-10 13:38:19
您是否为最大化调试信息设置了优化标志?尝试在编译所有内容之前在repl中进行评估: (declaim(optimize(speed 0)(safety 3)(debug 3)(size 0))) – Beef 2011-01-10 15:55:44