edebug mini HOWTO

Last Updated: 2004/09/06
Created: 1998/12/10

edebugとは何か

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の使い方

  1. edebug.elをロードする。

  2. 対象となるコードを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等で評価し直す。

  3. デバッグモードでよく使うコマンドを以下に挙げる。
    ?ヘルプ
    SPCステップトレース
    fポイント位置の式一つ分進む
    oポイント位置の式から抜けるまで実行
    hポイント位置近傍のストップポイントまで実行
    bブレークポイントの設定
    uブレークポイントの解除
    C-x C-eポイント直前の式の評価(結果はミニバッファに表示)
    eeval-expression
    Eバッファ上で式の評価
    r最後の式の結果を再表示
    g次のブレークポイントまで進む
    Gブレークポイントを無視して進む
    dバックトレースを表示する
    qデバッグモードを抜ける
    Qデバッグモードを問答無用で抜ける

  4. ソースコード中に(edebug)と記述しておくと、ブレークポイントをあらかじめ埋め込んでおくことができる。条件式などと組み合わせることによって条件ブレークをしかけることもできる。

  5. 詳細についてはinfoを参照のこと。


[BACK] | [TOP]