これらのオプションはEdebugの動作に影響します:
Edebug が使用される前に呼び出される関数です。新しい値が設定されるたびに、Edebug はこれらの関数を1回呼び出し、その後 edebug-setup-hook を nil
にリセットします。これを利用して、使用しているパッケージに関連付けられた Edebug 仕様を読み込むことも可能ですが、その場合は Edebug
も併せて使用している必要があります。Edebug
のインストルメンテーション を参照してください。
これが non-nil の場合、defun や
defmacro といった定義形式の通常の評価により、Edebug
用にインストゥルメント化されます。これは eval-defun、eval-region、および eval-buffer
にも適用されます。
コマンド M-x edebug-all-defs を使用して、このオプションの値を切り替えます。Edebug 用のインストルメンテーションを参照してください。
これが non-nil の場合、コマンド eval-defun、eval-region、eval-buffer
は、何も定義していないフォームも含め、すべてのフォームに適用されます。これは、ミニバッファでの読み込みや評価には適用されません。
コマンド M-x edebug-all-forms を使用して、このオプションの値を切り替えます。Edebug 用のインストルメンテーションを参照してください。
これが nil
以外の場合、生成されるコード内ですべてのマクロ引数がインストルメンテーションされます。任意のマクロにおいて、debug
宣言はこのオプションを上書きします。したがって、一部の引数が評価され、一部が評価されないマクロに対して例外を指定するには、debug 宣言を用いて Edebug フォームの仕様を指定してください。
これが nil 以外の場合、Edebug
はウィンドウ構成を保存および復元します。これには時間がかかるため、プログラムがウィンドウ構成の状態を問わないのであれば、この変数を nil
に設定するのが適切です。また、デフォルト値のせいで、ウィンドウ構成の保存・復元により、デバッグ対象のプログラムで使用されているバッファ内の point
の位置が Edebug によって上書きされてしまう場合は、この値を nil
に設定することを推奨します。これは、プログラムがそれらのバッファの1つ以上で point
を移動させた場合に起こり得ます。この場合にカスタマイズを試みるもう一つの選択肢として、後述する edebug-save-displayed-buffer-points があります。
edebug-save-windows
の値がリストの場合、リストに指定されたウィンドウのみが保存および復元されます。
Edebug の W コマンドを使用すると、この変数を対話的に変更できます。Edebug ディスプレイの更新 を参照してください。
これが non-nil の場合、Edebug
は表示されているすべてのバッファでポイントを保存・復元します。
選択されていないウィンドウに表示されているバッファのポイント(Pointを参照)を変更するコードをデバッグする場合、他のバッファのポイントを保存および復元する必要があります。Edebugまたはユーザーがそのウィンドウを選択すると、そのバッファのポイントはウィンドウのポイント値に移動します。
すべてのバッファでポイントを保存・復元する処理は、各ウィンドウを2回選択する必要があるためコストがかかります。そのため、必要な場合にのみ有効にしてください。Edebug Display Updateを参照してください。
この変数が nil 以外の場合、Edebug
が最初に有効化された際の初期実行モードを指定します。指定可能な値は step、next、go、Go-nonstop、trace、Trace-fast、continue、および Continue-fast です。
デフォルト値は step です。この変数は C-x C-a
C-m (edebug-set-initial-mode) で対話的に設定できます。Edebug 実行モード を参照してください。
これが nil 以外の場合、各関数のエントリとエグジットをトレースします。トレース出力は *edebug-trace*
という名前のバッファに表示され、1行につき1つの関数エントリまたはエグジットが、再帰レベルに応じてインデントされて出力されます。
また、トレースバッファのedebug-tracingも参照してください。
nil 以外の場合は、Edebug
外で実行されている任意のキーボードマクロの定義または実行を継続します。デバッグ対象外となるため、使用には注意してください。Edebug 実行モードを参照してください。
nil 以外の場合、印刷時の print-length のデフォルト値は Edebug となります。出力に影響する変数 を参照してください。
nil 以外の場合、印刷時の print-level のデフォルト値は Edebug となります。出力に影響する変数 を参照してください。
nil 以外の場合、印刷時の print-circle のデフォルト値は Edebug となります。出力に影響する変数 を参照してください。
nil 以外の場合、Edebug
は式の結果を表示する際に、自身によるインストルメンテーションを削除しようとします。これは、式の結果自体がインストルメンテーションされた式となっているマクロをデバッグする際に重要となります。非常に作為的な例として、例示関数
fac にインストルメンテーションが施されているとし、次のような形式のマクロを考えてみましょう:
(defmacro test () "Edebug example."
(if (symbol-function 'fac)
...))
test マクロにインストルメントを施してステップ実行すると、デフォルトでは symbol-function 呼び出しの結果に多数の edebug-after や edebug-before
形式が含まれるため、実際の結果を把握しにくくなることがあります。edebug-unwrap-results が nil
以外の場合、Edebug は結果からこれらの形式を削除しようとします。
debug-on-error が以前は nil
であった場合、Edebug は debug-on-error をこの値にバインドします。エラーのトラップ を参照してください。
debug-on-quit が以前は nil
であった場合、Edebug は debug-on-quit をこの値にバインドします。エラーのトラップ を参照してください。
Edebugが有効な状態でedebug-on-errorまたはedebug-on-quitの値を変更しても、新しいコマンドでEdebugが呼び出される次回まで、その値は使用されません。
nil 以外の場合、各停止点で判定する式。結果が nil 以外であれば、中断する。エラーは無視される。グローバル中断条件 を参照。
ブレークポイントに到達し、実行モードがトレースまたはコンティニューの場合の一時停止秒数。Edebug 実行モードを参照してください。
ブレークポイント到達時に edebug-sit-for-seconds
で一時停止するかどうか。一時停止を防ぐ場合は nil を、許可する場合は nil 以外を設定してください。
デフォルトでは、このalistにはキー edebug
を持つエントリが1つ含まれており、そこにはインストルメンテーション済みコードに挿入される関数のデフォルト実装である3つの関数 edebug-enter、edebug-before、edebug-after
がリストされています。Edebugの動作をグローバルに変更するには、このデフォルトエントリを変更してください。
また、任意のキーと3つの関数をこのalistにエントリとして追加することで、定義ごとにEdebugの動作を変更することも可能です。その後、インストルメンテーション対象の定義のedebug-behaviorシンボルプロパティをその新規エントリのキーに設定すると、Edebugはその定義において、自前の関数の代わりに新規関数を呼び出します。
Edebugが定義またはクロージャの本体をラップした後に実行する関数。Edebugが自身のデータを初期化した後、この関数は1つの引数(定義に関連付けられたシンボル)とともに呼び出される。このシンボルは、実際に定義されたシンボルである場合もあれば、Edebugによって生成されたシンボルである場合もある。この関数は、Edebugによってインストルメントされた各定義のedebug-behaviorシンボルプロパティを設定するために使用できる。
Edebugを使用する前に、そのインストルメンテーションを検査または変更するには、この変数に、インストルメンテーション対象のトップレベルフォームを1つの引数として受け取り、元のフォームまたは代替フォームのいずれかを返す関数を設定してください。Edebugは、そのフォームをインストルメンテーションの最終結果として使用します。