@kyanny's blog

My life. Opinions are my own.

Emacs Lisp のデバッガ edebug の使い方

pcomplete (programmable completion) の書き方 - 刺身☆ブーメランのはてなダイアリー で書いた pcmpl-lwp-request.el のデバッグをしているときに、便利な方法はないものかとおもってぐぐって見つけた edebug というのがとても便利だった。

Emacs Lisp デバッグ — ありえるえりあ

書いてあるとおりだけど、デバッガにステップ実行させたい関数定義の上のどこでもいいからカーソルを置いて C-u C-M-x とすると、次にその関数を実行したときデバッガのモードに入る。入れ子でいくつかの関数が順番に呼ばれる場合は、それぞれの関数に対して C-u C-M-x をする必要がある。

デバッガに入ったら SPC を押していくと S 式を順番に評価していく。これはごくごく普通に内側から外側へ評価していき、評価した式の値がミニバッファに出る。なので丁寧に見ていくだけで、どこでどの変数にどういう値が入っていて、どの関数がどういう値を返したのかがわかる。あとはもうひたすら納得がいくまで繰り返す。

edebug のマニュアルもぐぐるとすぐに見つかった。

GNU Emacs Lisp¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë: Edebug