デバッガ内(debuggerモード)では、 通常のカーソル移動コマンドに加えて以下の特別なコマンドを使えます。 (ウィンドウやバッファの切り替えなどのEmacsの通常の機能も使えることに留意。)
デバッガコマンドのもっとも重要な使い方はステップ実行であり、 これにより制御の流れを調べることです。 デバッガは、解釈実行版の関数の制御構造をステップ実行できますが、 バイトコンパイルした関数ではできません。 バイトコンパイルした関数をステップ実行したい場合には、 同じ関数を解釈実行版の定義に置き換える必要があります。 (これには、関数のソースを訪れて、その定義内でC-M-xと打つ。)
debuggerモードのコマンド一覧を以下に示します。
継続が可能なのは、
関数呼び出し時や終了時、明示的な起動、中断によりデバッガに入った場合である。
エラーが原因でデバッガが起動されたときには継続できない。
このようにしてデバッガを起動した関数呼び出しのスタックフレームには
自動的に印が付き、そのスタックから抜けるとデバッガがふたたび呼び出される。
この印を消すにはコマンドuを使う。
C-gでデバッガへ入ったが、
実際には中断したいのであってデバッグはしたくない場合には
コマンドqを使う。
(bで指定したりdでフレームに入ることで)
Lispの呼び出しフレームから抜けでたためにデバッガが起動された場合に、
コマンドrは有用である。
コマンドrで指定した値は、当該フレームの値として使われる。
このコマンドは、debug
を呼び出してその戻り値を使う場合にも有用である。
さもなければ、rはcと同じ効果であり、指定した戻り値は関係ない。
エラーでデバッガに入った場合にはrは使えない。