trace コマンドでは、特定のオブジェクト (クラス、インスタンス、またはキーワード) に対してトレースするサブジェクトを指定できます。サブジェクトには、存在、属性、メソッド、およびイベントがあります。すべてのオブジェクトを 1 つのサブジェクトでトレースするか、1 つのオブジェクトをすべてのサブジェクトでトレースするか、またはその間のすべてを選ぶことができます。
デフォルトでは、トレーサーは以下のコマンドを実行するのと同じように、すべてのクラスとインスタンスをトレースし、システム項目 (コール・スタックはイベント・キューなど) はトレースしません。
trace #all all
アニメーションでは、以下のコマンドを実行するのと同じように、デフォルトではどの項目もトレースしません。
trace object nothing
object
トレースするオブジェクトを指定します。以下のいずれかの項目にすることができます。
interest-list
コンマで区切ったサブジェクトのリストを指定します。関心リスト (interest-list) は、オブジェクトに関するどんな情報をレポートするかを決定します。
| existence | constructors |
| relations | destructors |
| attributes | timeouts |
| states | parameters |
| controls | subclasses |
| methods | threads |
| events |
キーワードは all はこれらのサブジェクトすべてを示し、nothing はどれも示しません。
サブジェクトの前にプラス (+) かマイナス (-) 記号を指定して、現在の関心リストにサブジェクトを追加または削除します。「+」も「-」もない場合、入力されたサブジェクトが現在の関心リストになり、以前選択したサブジェクトを置き換えます。
サブジェクト existence はオブジェクトの存在をレポートします。
サブジェクト subclasses は、トレース・コマンドを、クラスのすべてのサブクラスに適用します。 これはクラス・オブジェクトにのみ当てはまります。
オブジェクトの名前に続けて指定するサブジェクトで、特定のオブジェクトの関心リストを設定または変更します。
以下のコマンドは、B[5] の関心リストを関係に設定します。
trace B[5] relations
トレーサーは、これでオブジェクト B[5] の関係が変更されるたびにメッセージを表示します。例:
OMTracer B[5] item A[7] added to relation itsA
B[5] については、関係に関するメッセージのみが表示されます。
以下の trace コマンドは B[5]: の関心リストに関係を追加します。
trace B[5] +relations
B[5] に関する他のメッセージが表示されるかどうかは、サブジェクトの追加コマンドを実行する前の関心リストの値によって決まります。
以下の trace コマンドは、B[5] の関心リストから関心を削除します。
trace B[5] -relations
このコマンドの結果、オブジェクト B[5] の関係に関するメッセージは何も表示されません。B[5] に関する他のメッセージが表示されるかどうかは、コマンドを実行する前の関心リストの値によって決まります。
サブジェクトごとのメッセージの全リストについては、トレーサー・メッセージを参照してください。
関心リスト内のすべてのサブジェクトに「+」か「-」記号が付いている場合、オブジェクトの関心リストが変更されています。例えば、以下のコマンドは、B[5] の関心リストにサブジェクト関係を追加し、サブジェクト状態を削除します。
trace B[5] +relations, -states
これに対して、以下のコマンドは B[5] の関心リストが正確にサブジェクトの関係と状態を含むよう設定します。
trace B[5] relations, states
trace コマンドを使用するときは、以下の特殊な取り扱いに注意してください。
trace A +relations
このコマンドを実行した後で作られるクラス A の新しいインスタンスも、関心リストに関係が追加されています。
サブジェクト subclasses はクラス・オブジェクトにのみ関連しています。これは、特定のコマンドの関心リストをすべてのサブクラスに伝搬します (再帰的に)。