break와 같은 디버거를 호출 한 후 sbcl 및 Slime에서 코드를 단계별로 실행하는 방법을 알아 내려고하고 있습니다. 나는 처음부터 발걸음을 시작하지 않으려합니다. 예를 들어, 다음 코드가있는 경우 :디버거 내에서 sbcl을 실행하십시오.
(defun fib (n)
(when (eql n 2)
(break))
(if (<= 0 n 1)
n
(+ (fib (- n 1))
(fib (- n 2)))))
중단 점이 발생한 후 코드를 단계별로 실행할 수 있기를 원합니다. 내가 이것을 발견 한 유일한 방법은 슬라임의 프레임 위로 이동하여 "프레임에서 돌아 가기"(R) 기능을 사용하고 입력 (단계 (fib 2))입니다.
Evaluating call:
(CONTINUE)
With arguments:
[Condition of type STEP-FORM-CONDITION]
Restarts:
0: [STEP-CONTINUE] Resume normal execution
1: [STEP-OUT] Resume stepping after returning from this function
2: [STEP-NEXT] Step over call
3: [STEP-INTO] Step into call
4: [ABORT] Return to sldb level 1.
5: [CONTINUE] Return from BREAK.
--more--
Backtrace:
0: (SWANK:SLDB-STEP 0)
1: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:SLDB-STEP 0) #<NULL-LEXENV>)
2: (EVAL (SWANK:SLDB-STEP 0))
3: (SWANK:EVAL-FOR-EMACS (SWANK:SLDB-STEP 0) "COMMON-LISP-USER" 122)
4: ((FLET #:FORM-FUN-7055 :IN SWANK::SLDB-LOOP))
5: (SWANK::SLDB-LOOP 1)
6: ((LAMBDA NIL :IN SWANK::DEBUG-IN-EMACS))
7: ((FLET SWANK/BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT :IN "/home/michael/slime/swank/sbcl.lisp") #<FUNCTION (LAMBDA NIL :IN SWANK::DEBUG-IN-EMACS) {1003DB44CB}>)
내가 무엇을 찾고 가능해야한다 :
나는 "단계"(들) 기능을 사용하려고
대신 실제로 스테핑은,이 주어진하고있다.스테핑 SBCL 매뉴얼에서 디버거 내에서 매크로
step
, 또는 를 통해 호출 할 수 있습니다.
나는 점액 2.12 내 최적화 자질 SBCL 1.2.5을 실행하고는이 때문에 3으로 설정 디버그와 모두 3
이것은 실제 상황에서 벗어났습니다. 버그 또는 지원 요청과 같은 것 같습니다. IRC#lisp 채널에서 freenode 또는 SLIME의 메일 링리스트에서 묻는 시도를 했습니까? 그것은 SBCL에 대해 직접적으로 보이지 않습니다. SLIME 없이는 단계적으로 시도하지 않은 것처럼 보입니다. – acelent