SLIME:SLDB

SLIME:SLDB

Tags: 開発環境, SLIME

処理系によって、サポートされている機能や、バックトレースのフォーマットなどに違いがあります。

> (error "error")

SLIMEでは、処理系がデバッガを起動する場面で、自動的にSLDBが起動します。

error
   [Condition of type SIMPLE-ERROR]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT-BREAK] Reset this thread
 3: [ABORT] Kill this thread

Backtrace:
  0: (CCL::CALL-CHECK-REGS ERROR "error")
  1: (CCL::CHEAP-EVAL (ERROR "error"))
 --more--


ブレークポイント

ANSIで定義されているbreakを、停止したい位置で呼び出します。

> (defun fact (n)
    (break)
    (if (zerop n)
        1
        (* n (fact (1- n)))))
FACT
> (fact 5)

というコードを実行すると、


   [Condition of type SIMPLE-CONDITION]

Restarts:
 0: [CONTINUE] Return from BREAK.
 1: [RETRY] Retry SLIME REPL evaluation request.
 2: [*ABORT] Return to SLIME's top level.
 3: [ABORT-BREAK] Reset this thread
 4: [ABORT] Kill this thread

Backtrace:
  0: (FACT 5)
  1: (CCL::CALL-CHECK-REGS FACT 5)
  2: (CCL::CHEAP-EVAL (FACT 5))
 --more--

といった感じで、SLDBが起動します。


リスタート

SLDBを抜けるには、表示されているリスタートの一覧の中から、どれかひとつを選んで実行しなければなりません。上のブレークポイントの例では、

Restarts:
 0: [CONTINUE] Return from BREAK.
 1: [RETRY] Retry SLIME REPL evaluation request.
 2: [*ABORT] Return to SLIME's top level.
 3: [ABORT-BREAK] Reset this thread
 4: [ABORT] Kill this thread

がリスタートの一覧です。番号が振ってある行の上にカーソルを移動させ、RETキーで実行できます。また、ショートカットのために、以下のキーバインドが定義されています。

a

ABORTする。

q

トップレベルへ抜ける。

c

CONTINUEする。

0〜9

対応する番号のリスタートを実行する。


スタックフレーム

バックトレースに表示されているスタックフレームに対して、操作や、環境の中での評価ができます。

Backtrace:
  0: (FACT 5)
  1: (CCL::CALL-CHECK-REGS FACT 5)
  2: (CCL::CHEAP-EVAL (FACT 5))
 --more--

番号が振ってある行が各フレームです。対象にしたいフレームの上にカーソルを移動させてから、以下のコマンドを実行します。

t

ローカル変数を表示するかしないかを切り替えます。

v

フレームに対応するコードを表示します。

e

フレームの環境の中で式を評価します。結果はミニバッファに表示されます。

d

フレームの環境の中で式を評価します。結果は新しいバッファに表示されます。

D

フレームに対応する関数を逆アセンブルします。

i

フレームの環境の中で式を評価して、結果をSLIME:インスペクタで表示します。

C-c C-c

フレームに対応するコードを再コンパイルします。

また、対象のフレームを楽に切り替えられるように、以下のキーバインドが定義されています。

n

ひとつ下のフレームに移動します。

p

ひとつ上のフレームに移動します。

M-n

現在のフレームの詳細を隠してから、ひとつ下のフレームに移動し、詳細とコードを表示します。

M-p

現在のフレームの詳細を隠してから、ひとつ上のフレームに移動し、詳細とコードを表示します。

>

一番下のフレームに移動します。

<

一番上のフレームに移動します。


ステップ実行

一部の処理系ではステップ実行ができます。

s

ステップインします。

x

ステップオーバーします。

o

ステップアウトします。


その他の機能

r

同じ引数でフレームの実行を再開します。

R

ミニバッファから入力する値でフレームから戻ります。

B

SLDBを終了し、処理系のデバッガを起動します。

C

デバッグ中のコンディションをSLIME:インスペクタで表示します。

:

ミニバッファから入力する式をトップレベルで評価します。


参考文献


Last modified : 2011/07/21 04:01:24 JST
CC0 1.0
Powerd by WiLiKi 0.6.1 on Gauche 0.9