Next: Trace Buffer, Previous: Eval List, Up: Edebug
読者のプログラムの式が循環したリスト構造を含む値を作り出す場合、 edebugがそれを出力しようとするとエラーになります。
循環構造を扱う1つの方法は、出力を切り詰めるために
print-length
やprint-level
を設定することです。
edebugが読者のためにこれを行います。
それらがnil
であると、
edebugはprint-length
とprint-level
を50に束縛します。
(実際は、edebugが使う値は
e-debug-print-length
とe-debug-print-level
が指定する。)
See Output Variables。
パッケージcust-printを使えば、 循環構造や要素を共有する構造をより的確に出力することもできます。
cust-printをロードしてedebugでのみこの特別な出力を使うようにするには、 単にコマンドM-x edebug-install-custom-printを使うだけです。 標準の出力関数に戻すには、M-x edebug-uninstall-custom-printを使います。
循環構造を作るコードの例を示します。
(setq a '(x y)) (setcar a a)
特別な出力ではこれを‘Result: #1=(#1# y)’と出力します。 ‘#1=’の記法は、これに続く構造に‘1’というラベルを付けます。 また、‘#1#’の記法はすでにラベル付けした構造を参照します。 この記法は、リストやベクトルの任意の共有された要素に使われます。
他のプログラムでもこの特別な出力を使えます。 詳しくは、cust-print.elを参照してください。