Next: , Previous: Edebug Eval, Up: Edebug


17.2.10 評価リストバッファ

*edebug*’と呼ばれる評価リストバッファを使って、 式を対話的に評価できます。 さらに、edebugが表示を更新するたびに自動的に評価される 式の評価リストを設定することもできます。

E
評価リストバッファ‘*edebug*’へ切り替える (edebug-visit-eval-list)。

バッファ‘*edebug*’では、以下の特別なコマンドに加えて lisp対話モード (see lisp対話バッファ) のコマンドも使えます。

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の外側の文脈で評価されます。

実行を継続すると、対話的に入力した式(やその結果)は破棄されますが、 実行を停止するたびに評価される式から成る評価リスト(evaluation list) を設定できます。

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

コマンドC-c C-uedebug-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*’は削除され、 つぎに必要なときに再度作成されます。