Emacs Lisp用のソースコードデバッガである。ステップトレースやブレークポイント/ウォッチポイントの設定、変数の参照など、ソースコードデバッガとしての機能を一通り揃えている。Emacs19以上で標準elispとなっているようである。
Emacs Lisp Manualに記載がある。日本語版のinfoもあるので(GNU jdoc参照)、特に不自由はしないと思われる。HTML化されたものとしては、http://www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp.htmlなどが公開されている。
edebug.elをロードする。
対象となるコードをedebugに認識させる。(“膳立て(instrument)”と呼ぶ。Cコンパイラで-gオプションを付けてコンパイルするようなものか)
例えば、対象となる関数上で C-u M-C-x (eval-defunに前置引数を付加)すると、その関数が実行される段階でデバッグモードに突入する。
他に、M-x edebug-all-defs を実行後、eval-defun, eval-region, もしくはeval-current-buffer等を使う方法がある。edebug-all-defsはトグルになっている。
膳立てを解除したいときには再度edebug-all-defsを実行した後に対象の関数をeval-current-buffer等で評価し直す。
デバッグモードでよく使うコマンドを以下に挙げる。
| ? | ヘルプ |
|---|---|
| SPC | ステップトレース |
| f | ポイント位置の式一つ分進む |
| o | ポイント位置の式から抜けるまで実行 |
| h | ポイント位置近傍のストップポイントまで実行 |
| b | ブレークポイントの設定 |
| u | ブレークポイントの解除 |
| C-x C-e | ポイント直前の式の評価(結果はミニバッファに表示) |
| e | eval-expression |
| E | バッファ上で式の評価 |
| r | 最後の式の結果を再表示 |
| g | 次のブレークポイントまで進む |
| G | ブレークポイントを無視して進む |
| d | バックトレースを表示する |
| q | デバッグモードを抜ける |
| Q | デバッグモードを問答無用で抜ける |
ソースコード中に(edebug)と記述しておくと、ブレークポイントをあらかじめ埋め込んでおくことができる。条件式などと組み合わせることによって条件ブレークをしかけることもできる。
詳細についてはinfoを参照のこと。