DebuggerモードはEdebugとERT(Edebugとthe ERT manual in ERT: Emacs Lisp Regression Testingを参照)がbacktrace表示にも使用するBacktraceモードから派生したモードです。
backtraceバッファーは実行されている関数と、その関数の引数の値を示します。backtraceバッファー作成時には1つのスタックフレームにたいして1行(非常に長い可能性がある)を表示します(スタックフレームとはLispインタープリターが特定の関数呼び出しに関する情報を記録する場所のこと)。もっとも最近の呼び出しが最上行になります。
backtraceではフレームを記述する行にポイントを移動してフタックフレームを指定できます。ポイントのある行のフレームがカレントフレーム(current frame)とみなされます。
関数名に下線が引かれている場合には、Emacsがソースコードの場所を知っていることを意味します。その関数名をマウスでクリックするか、そこに移動してRETをタイプすることにより、ソースコードをvisitできます。下線のない関数名や変数名にポイントがあるときにRETをタイプした場合には、もしあればそのシンボルにたいするヘルプ情報をhelpバッファーで確認することもできます。M-.にバインドされているxref-find-definitions
コマンドはbacktrace内の任意の識別子にも使用できます(Looking
Up Identifiers in The GNU Emacs Manualを参照)。
backtraceでは長いリストの末尾およびベクターや構造、同じように深くネストされたオブジェクトの終端は下線つきの“...”でプリントされます。“...”上でマウスをクリックするか、その上にポイントがある状態でRETをタイプすることにより、オブジェクトの隠蔽されている部分を表示できます。省略を行う量の制御はbacktrace-line-length
をカスタマイズしてください。
以下はbacktraceの操作と閲覧を行うコマンドのリストです:
カレントスタックフレームのローカル変数の表示を切り替える。
フレームまたは前のフレームの先頭に移動する。
次のフレームの先頭に移動する。
可読性向上のためにポイント位置に行ブレークを追加してトップレベルLispフォームにインデントする。
ポイント位置のトップレベルLispフォームを1行に折り畳む。
ポイント位置のフレームのprint-circle
を切り替える。
ポイント位置のフレームのprint-gensym
を切り替える。
ポイント位置のフレームの“...”で省略されたすべてのフォームを展開する。