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を参照のこと。