Next: , Previous: , Up: Lispデバッガ   [Contents][Index]


19.1.7 バックトレース

DebuggerモードはEdebugとERT(Edebugthe 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の操作と閲覧を行うコマンドのリストです:

v

カレントスタックフレームのローカル変数の表示を切り替える。

p

フレームまたは前のフレームの先頭に移動する。

n

次のフレームの先頭に移動する。

+

可読性向上のためにポイント位置に行ブレークを追加してトップレベルLispフォームにインデントする。

-

ポイント位置のトップレベルLispフォームを1行に折り畳む。

#

ポイント位置のフレームのprint-circleを切り替える。

:

ポイント位置のフレームのprint-gensymを切り替える。

.

ポイント位置のフレームの“...”で省略されたすべてのフォームを展開する。