ブレークのようなものでデバッガを起動した後、sbclとSlimeでコードをステップ実行する方法を理解しようとしています。私は最初から踏み出す必要はありません。たとえば、次のコードがあるとします。デバッガ内からsbclを実行する
(defun fib (n)
(when (eql n 2)
(break))
(if (<= 0 n 1)
n
(+ (fib (- n 1))
(fib (- n 2)))))
ブレークポイントがヒットした後、コードをステップ実行することができます。私がこれを行うために見つけた唯一の方法は、スライムの枠を越えて、 "Return From Frame"(R)機能を使用して、(step(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}>)
私は何を探しています可能なはずである。
私は「ステップ」(S)機能を使用しよう
、代わりに実際にステッピングのは、私は、これが与えられています。ステッピングSBCLマニュアルからデバッガ内からマクロ
step
、又はを介して呼び出すことができます。
私はスライム2.12でSBCL 1.2.5を実行していますし、私の最適化の資質は、私はこのため3にデバッグをセットしてスワンクをコンパイルしていた両方の3
これは実際にはコンテキスト外です。バグやサポート要求のようです。あなたはIRC#lispチャンネルでfreenodeやSLIMEのメーリングリストで質問しようとしましたか?それはあなたがSLIMEなしでそれを踏み出そうとしたようではないので、SBCLについては直接見えません。 – acelent