Ich versuche zu verstehen, wie die Ausgabe von und verwenden Sie den Lisp-Debugger.Hilfe mit Lisp-Debugger
Ich habe eine ziemlich einfache Backtrace für die Auswertung meiner Funktion, aber ich kann nicht herausfinden, wie man es verwendet, um herauszufinden, in welcher Lisp 'Form' in meiner Funktion die Ausnahme aufgetreten ist.
Ich würde mich über Hinweise freuen, was ich tun sollte, um herauszufinden, wo in meinem Code der Fehler entstanden ist.
Auch - warum wird der zweite Frame angezeigt als "keine Debug-Informationen für Frame verfügbar"?
Ich habe einen Screenshot mit dem Debugger angeschlossen, und repl (Ich habe auch meine Funktion unten - ich weiß, es ist sehr falsch - aber ich bin nur daran interessiert zu lernen, den Debugger richtig zu verwenden). Zusätzlich habe ich 'v' auf dem ersten Frame gedrückt, um zur Quelle zu gehen, aber dies führte zu dem Fehler unter dem repl. (EDIT - das fehlende Quellcode Problem wird durch & Download es auf den richtigen Pfad zu kopieren)
(schreckliche Funktion - keine Kommentare bitte)
(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)))
Man sollte erwähnen, dass es keinen 'Lisp Debugger' gibt. Lisp ist eine große Familie von Sprachen und Implementierungen. Die meisten Implementierungen haben unterschiedliche Debugger. Eine IDE wie SLIME für Emacs fügt dazu eine Debugger-Schnittstelle hinzu, die auf den unterstützten Lisps läuft. –
Haben Sie Ihre Optimierungsflags für maximale Debugging-Informationen eingestellt? Versuchen Sie, dies in der repl vor dem Kompilieren alles zu bewerten: (deklamieren (optimieren (Geschwindigkeit 0) (Sicherheit 3) (debug 3) (Größe 0))) – Beef
@Beef - ja, ich habe dies bereits versucht. – Joel