Next: , Previous: , Up: Edebug   [Contents][Index]


17.2.10 Evaluation List Buffer

式をインタラクティブに評価するために、*edebug*と呼ばれる評価リストバッファー(evaluation list buffer)を使用できます。Edebugがディスプレイを更新するたびに自動的に評価される、式の評価リスト(evaluation list)もセットアップできます。

E

評価リストバッファー*edebug*に切り替える(edebug-visit-eval-list)。

*edebug*バッファーでは、以下の特別なコマンドと同様に、Lisp Interactionモード(see Lisp Interaction in The GNU Emacs Manual)のコマンドも使用できます。

C-j

ポイントの前の式をコンテキスト外で評価して、その値をバッファーに挿入する(edebug-eval-print-last-sexp)。

C-x C-e

Edebugのコンテキスト外で、ポイントの前の式を評価する(edebug-eval-last-sexp)。

C-c C-u

バッファー内のコンテンツから、新たに評価リストを構築する(edebug-update-eval-list)。

C-c C-d

ポイントのある評価リストグループを削除する(edebug-delete-eval-item)。

C-c C-w

ソースコードバッファーに切り替えてカレントストップポイントに戻る(edebug-where)。

評価リストウィンドウ内では、*scratch*にいるときと同様に、C-jC-x C-eで式を評価できますが、それらはEdebugのコンテキスト外で評価されます。

インタラクティブに入力した式(とその結果)は、実行を継続すると失われます。しかし、実行がストップされるたびに評価されるように、式から構成される評価リストをセットアップできます。

これを行なうには、評価リストバッファー内で1つ以上の評価リストグループ(evaluation list group)を記述します。評価リストグループは、1つ以上のLisp式から構成されます。グループはコメント行で区切られます。

コマンドC-c C-u(edebug-update-eval-list)は、バッファーをスキャンして各グループの最初の式を使用して、評価リストを再構築します。(これはグループの2つ目の式は以前に計算、表示されている値だという発想からです。)

Edebugにエントリーするたびに、評価リストの各式(および式の後に式のカレント値)をバッファーに挿入して再表示します。これはコメント行も挿入するため、各式はそのグループの一員となります。したがって、バッファーのテキストを変更せずにC-c C-uとタイプした場合、評価リストは実際には変更されません。

評価リストからの評価の間にエラーが発生した場合、それが式の結果であるかのようにエラーメッセージが文字列で表示されます。したがって、カレントで無効な変数を使用する式により、デバッグが中断されることはありません。

以下は、いくつかの式を評価リストウィンドウに追加したとき、どのように見えるかの例です:

(current-buffer)
#<buffer *scratch*>
;---------------------------------------------------------------
(selected-window)
#<window 16 on *scratch*>
;---------------------------------------------------------------
(point)
196
;---------------------------------------------------------------
bad-var
"Symbol's value as variable is void: bad-var"
;---------------------------------------------------------------
(recursion-depth)
0
;---------------------------------------------------------------
this-command
eval-last-sexp
;---------------------------------------------------------------

グループを削除するには、グループ内にポイントを移動してC-c C-dをタイプするか、単にグループのテキストを削除してC-c C-uで評価リストを更新します。評価リストに新たな式を追加するには、適切な箇所にその式を挿入し、新たなコメント行を挿入してからC-c C-uをタイプします。コメント行にダッシュを挿入する必要はありません — 内容は関係ないのです。

*edebug*を選択した後に、C-c C-wでソースコードバッファーにリターンできます。*edebug*は実行を継続したときkillされ、次回必要なとき再作成されます。