私はLispデバッガの出力を解釈し、使用する方法を理解しようとしています。Lispデバッガを使用したヘルプ
私の関数の評価のための非常に単純なバックトレースがありますが、私はどのようにLisp 'フォーム'が関数内で例外が発生したかを調べるためにどのように使用するのか分かりません。
私のコードでエラーが発生した場所を見つけるために何をすべきかの手がかりがありがとうと思います。
また、2番目のフレームは「フレームに使用できるデバッグ情報がありません」と表示されるのはなぜですか?
私はデバッガでスクリーンショットを添付してreplを作成しました(私は以下の関数も含めました - 非常に間違っていることを知っていますが、デバッガを正しく使うことを学ぶだけです)。さらに、最初のフレームで「v」をクリックしてソースに行きましたが、その結果replの下にエラーが発生しました。 (EDIT - 欠落しているソースコードの問題は、正しいパスにコピー&をダウンロードすることにより固定されている)
(恐ろしい機能! - コメントはありませんしてください)
(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は、サポートされているリスプの上で動作するデバッガインタフェースを追加します。 –
最大のデバッグ情報のために最適化フラグを設定しましたか? (declaim(optimize(speed 0)(safety 3)(debug 3)(size 0))) – Beef
@Beef - はい、私はこれを既に試しています。 – Joel