Próbuję zrozumieć, jak interpretować wyjście i używać debuggera Lisp.Pomoc przy użyciu debuggera Lisp
Mam bardzo prosty Backtrace do oceny mojej funkcji, ale nie wydaje mi się, aby dowiedzieć się, jak go użyć, aby dowiedzieć się, w którym formularzu Lisp w mojej funkcji wystąpił wyjątek.
byłbym wdzięczny żadnych wskazówek co do tego, co należy robić, aby dowiedzieć się, gdzie w moim kodu pochodzi błąd.
także - dlaczego drugi wyświetlanie ramki jako „bez informacji debugowania dostępnego na ramie”?
Dołączyłem zrzut ekranu z debuggerem i replikację (dodałem także funkcję poniżej - wiem, że to bardzo źle - ale interesuje mnie tylko nauka prawidłowego korzystania z debuggera). Dodatkowo, trafiłem "v" na pierwszej klatce, aby przejść do źródła, ale spowodowało to błąd poniżej rep. (EDIT - brakujący kod źródłowy problem został rozwiązany poprzez pobieranie & skopiowanie go do właściwej ścieżce)
(straszne funkcja - komentarzy proszę)
(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)))
Należy wspomnieć, że nie ma "debuggera Lisp". Lisp to duża rodzina języków i implementacji. Większość implementacji ma różne debuggery. Identyfikator taki jak SLIME dla Emacsa dodaje do tego interfejs debugowania, który działa na obsługiwanych Lisps. –
Ustawiłeś flagi optymalizacji pod kątem maksymalnych informacji debugowania? Spróbuj to sprawdzić w repl, zanim wszystko skompilujesz: (declaim (optimize (speed 0) (safety 3) (debug 3) (size 0))) – Beef
@ Beef - tak, próbowałem już tego. – Joel