Function INVOKE-DEBUGGER
invoke-debugger condition => |
condition - コンディションオブジェクト
invoke-debuggerは、conditionとともにデバッガーへ入ろうと試みます。
もし*debugger-hook*がnilではないとき、 その値は関数(あるいは関数の名前)で無ければならず、 標準のデバッガーに入る前に呼び出されます。 その関数が呼び出されるときに *debugger-hook*にはnilが束縛され、 その関数は2つの引数としてconditionと、 nilを束縛する前の *debugger-hook*の値が渡されます。 もしその関数が普通に終わったとき、標準のデバッガーに入ります。
標準のデバッガーは決して直接戻りません。 戻るときは、restart関数を使用したような ただ非局所的な遷移の制御のみで起こります。
(ignore-errors ;通常はデバッガーに入るのを抑制する
(handler-bind ((error #'invoke-debugger)) ;しかしここは強制的にデバッガーに入る
(error "Foo.")))
Debug: Foo.
To continue, type :CONTINUE followed by an option number:
1: Return to Lisp Toplevel.
Debug>*debugger-hook*はnilに束縛され、 プログラムの実行は中止となり、 デバッガーに入ります。
なし。
なし。