デバッガモードはバックトレースモードから派生したもので、EdebugやERTによるバックトレースの表示にも用いられています。(ERT: Emacs Lisp Regression TestingのEdebugおよびERTマニュアルを参照してください。)
バックトレースバッファには、実行中の関数とその引数の値が表示されます。バックトレースバッファが作成されると、各スタックフレームが、場合によっては非常に長い1行に表示されます。(スタックフレームとは、Lispインタプリタが特定の関数呼び出しに関する情報を記録する場所のことです。)直近に呼び出された関数が最上部に表示されます。
バックトレースでは、ポイントをそのフレームを記述する行に移動させることで、スタックフレームを指定できます。ポイントがある行のフレームがカレントフレームとみなされます。
関数名に下線が引かれている場合、それはEmacsがそのソースコードの所在を把握していることを意味します。その名前をマウスでクリックするか、その位置まで移動して
RET
と入力すると、ソースコードを表示できます。また、下線が引かれていない関数名や変数名にポイントがある状態で RET と入力すると、ヘルプバッファが存在する場合に、そのシンボルのヘルプ情報を表示できます。M-. にバインドされている xref-find-definitions
コマンドは、バックトレース内の任意の識別子に対しても使用可能です(The GNU Emacs
Manual の Looking
Up Identifiers を参照してください)。
バックトレースでは、長いリストの末尾や長い文字列、ベクトルや構造体の終端、および深くネストされたオブジェクトが、下線付きの「...」として表示されます。「...」をマウスでクリックするか、ポインタが重なっている状態で
RET と入力すると、オブジェクトの非表示部分を表示できます。省略の程度を調整するには、backtrace-line-length をカスタマイズしてください。
バックトレースの移動や表示を行うコマンドの一覧は以下の通りです。
現在のスタックフレームのローカル変数の表示/非表示を切り替えます。
フレームの先頭、または前のフレームの先頭に移動します。
次のフレームの先頭に移動する。
point にあるトップレベルの Lisp フォームに改行とインデントを追加して、可読性を高めてください。
ポイント位置にあるトップレベルのLispフォームを1行に折りたたむ。
地点のフレームの print-circle を切り替えます。
地点のフレームの print-gensym を切り替えます。
フレーム内の「...」で省略されているすべてのフォームを展開してください。