next up previous contents
Next: デフォルトトレースフラグ設定機能 Up: 2.3.2 トレーサの各コマンドの詳細 Previous: 2.3.2 トレーサの各コマンドの詳細

実行制御コマンド

ここでは, トレースを続けたり中止したりするコマンドについて説明する.

c, <cr>
そのままトレースを続行し, 次のポートで止まり, 再び入力待ちとなる.

a
トレースを中止する. プログラムはその時点から最後までフリーに実行される.

s
その時点でコマンド入力待ちのポートにあるゴールのトレース フラグを offにする. 新たにトレース on となっているゴールが ポートを通過するまで, プログラムはフリーに実行される.

l
スパイされたゴールがポートを通るまで, トレースの表示・入力を抑制する. スパイされたゴールがポートを通ると, トレースモードに戻る.

また以下のコマンドは, サブゴールのトレースフラグの on/offを制御する もので, REDUポートでのみ入力可能である.

+ サブゴール番号:
そのサブゴールのトレースフラグを onにする.
− サブゴール番号:
そのサブゴールのトレースフラグを offにする.
サブゴール番号:
そのサブゴールのトレースフラグを反転する.

2.2の部分集合をチェックするプログラムを用いた, ` c', ` <cr>', ` a', ` s' コマンドの使用例を以下に示す. ` l' コマンドはリープコマンドと呼ばれる. 後で述べるスパイ機能と 併せて使用例を示す.

% subset -t                                                          1
   1 CALL:main:main? 
   1 REDU:main:main :-
   2   0:+subset(yes,[3,1],[1,3,5],_3)
   3   1:+io:outstream([print(_3),nl])? c                            5
   2 CALL:main:subset(yes,[3,1],[1,3,5],_3)? 
   2 REDU:main:subset(yes,[3,1],[1,3,5],_3) :-
   4   0:+member(3,[1,3,5],_11)
   5   1:+subset(_11,[1],[1,3,5],_3)? 
   4 CALL:main:member(3,[1,3,5],_11)? s                             10
   5 CALL:main:subset(yes,[1],[1,3,5],_3)? 
   5 REDU:main:subset(yes,[1],[1,3,5],_3) :-
   6   0:+member(1,[1,3,5],_1C)
   7   1:+subset(_1C,[],[1,3,5],_3)? -0
   5 REDU:main:subset(yes,[1],[1,3,5],_3) :-                        15
   6   0:-member(1,[1,3,5],_1C)
   7   1:+subset(_1C,[],[1,3,5],_3)? 
   7 CALL:main:subset(yes,[],[1,3,5],_3)? 
   7 REDU:main:subset(yes,[],[1,3,5],yes)? 
   3 CALL:io:outstream([print(yes),nl])? a                          20
%

10行目の ` s' コマンドにより, ゴール番号4番の member ゴールはトレー スされなくなった. 14行目の ` -0' コマンドにより, ゴール番号6番の member 述語はトレースされなくなった. 12行目の ` a' コマンドによ り, トレースが中止されプログラムが最後まで実行された.



next up previous contents
Next: デフォルトトレースフラグ設定機能 Up: 2.3.2 トレーサの各コマンドの詳細 Previous: 2.3.2 トレーサの各コマンドの詳細



KLIC