トレースを行うためには:
KLICでは、種々のポートでユーザが実行に介入できるように 主に以下のような処理を行っている。
章 (
ページ)を参照のこと。
この擬似的にゴールがスケジュールされた際には必要な処理
(例えば、CALLポートでのユーザコマンドの受付)を行った後に、
本来のゴールをエンキューしなおすことにより実現されている。
[子ゴールの認識: ] リダクション処理が行われた結果生成された ゴールについては、以下のように処理されている。
ただし、他の優先度のゴールスタックにゴールが置かれた場合、また、 再実行可能になった場合などがあるため、それらのゴールについては特別な配慮 が必要になる(詳細後述)。
このリダクションが終了した際に、子ゴールについてもトレースすることが 適当な場合には、前述の「擬似的なゴール」により、本来のゴールを 保持させるようにゴールを変更しておく。
リダクションが終了した際に、再度ゴールスタックを検査する。 原則的には、このリダクション 前後のゴールスタックの差分が生成されたゴールである。
ただし、他の優先度のゴールスタックにゴールが置かれた場合、また、 再実行可能になった場合などがあるため、それらのゴールについては特別な配慮 が必要になる(詳細後述)。
このリダクションが終了した際に、子ゴールについてもトレースすることが 適当な場合には、前述の「擬似的なゴール」により、本来のゴールを 保持させるようにゴールを変更しておく。