Emacsでelispをデバッグする方法 (original) (raw)
emacs 起動時に elisp でエラーが出る場合
debug-on-error
emacs 起動時に elisp でエラーが出る場合は ~/.emacs.d/early-init.el で debug-on-error を t に設定する方法が便利です
(setq debug-on-error t)
debug-on-error を t にしておくと,エラー時に Backtrace が表示され,デバッガが起動します.
backtraceが表示されるので,どこでエラーが発生したか確認できます
early-init.el は emacs起動時に最初に読み込まれるファイルです.~/.emacs などよりも先にロードされるので,autoload 関連のエラーなども catch できます.
elisp-bug-hunter
elisp-bug-hunter を使うと init.el や .emacs にあるバグが自動で検出できます
使い方も簡単で,まずインストール
M-x package-install RET bug-hunter
自動検出は
M-x bug-hunter-init-file RET e
これだけでエラーがある行を特定できます!
特定の関数をデバッグしたい場合
debug-on-entry
debug-on-entry で関数にブレークポイントが設定できます
M-x debug-on-entry RET 関数名 RET
関数が起動されるとデバッガが起動します.backtraceが表示されるので 'd' をタイプするとステップ実行できます.
デバッガの操作方法は,とりあえず
- 'd' ステップ実行
- 'c' デバッガ終了
- '?' ヘルプの表示
を覚えておけば何とかなります.困ったら '?' です
コーディングしながらデバッグしたい場合
lispxmp
lispxmp が便利です
設定は use-package で
(use-package lispxmp :commands (lispxmp)) (use-package elisp-mode :bind (("C-c C-c" . lispxmp)))
使い方は,ソースコードで,コメント文に "; => " を書いておいて
(+ 3 4)
"C-c C-c"を実行すると
(+ 3 4)
とS式の実行結果がコメント文に書き込まれます
なお lispxmp.el の作者,るびきち氏(は「Emacsテクニックバイブル」と言う書籍を出版しています.