% Function INVOKE-DEBUGGER
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に束縛され、
プログラムの実行は中止となり、
デバッガーに入ります。
なし。
なし。