プローブ・ターゲット指定

ターゲット指定は、プローブを適用するクラスおよびメソッドを示します。

注: プローブの一部としてターゲット指定を定義することに加え、 「プロファイル」ダイアログ・ボックスからプロファイル実行を起動する際のフィルターも設定できます。 これら 2 つの方法を使用するヒントについては、『プローブのターゲットおよびフィルター』を参照してください。

ターゲット指定はオプションです。 ターゲットが指定されていない場合、プローブは、インスツルメンテーション・エンジンによって処理されるすべてのクラスに適用されます。

ターゲット指定を使用すると、パッケージ名、クラス名、メソッド名、およびメソッド・シグニチャーと一致するパターンに 基づいて、インスツルメンテーションにメソッドを包含したり、 インスツルメンテーションからメソッドを除外したりするためのフィルター規則を作成できます。 パターンにはワイルドカードを含めることができます。その「*」は、ゼロまたはそれ以上の文字と突き合わされます。

規則のワイルドカード・パターンがメソッドのパッケージ名、クラス名、メソッド名、およびメソッド・シグニチャーと一致した場合、 ターゲット型 プロパティーによって、メソッドが計測されるか (include) 計測されないか (exclude) が決まります。 このパターンがメソッドのパッケージ名、クラス名、メソッド名、およびメソッド・シグニチャーと一致しない場合、次の規則が調べられます。 規則のリストの最後に「すべて組み込み (include all)」という暗黙的な規則があるので、明示的に除外されなかったメソッドは すべて計測されます。

ターゲットには、以下のプロパティーが含まれます。
プロパティー 説明
ターゲット型 必須です。ターゲット型 プロパティーによって、あるプローブがターゲット・メソッドに適用されるか どうかが決まります。 ワイルドカード・パターンと一致するクラスおよびメソッドにプローブを適用する場合は Include を選択し、 それらのパターンに一致するクラスおよびメソッドを除外する場合は Exclude を指定します。
パッケージ名パターン オプションです。 クラス名のパッケージ部分と突き合わせるワイルドカード・パターンを指定します。 例えば、java.util* は、java.util パッケージおよび そのサブパッケージ内の各クラスと一致します。 指定していない場合、デフォルト値は * です。
クラス名パターン オプションです。 クラス名と突き合わせるワイルドカード・パターンを指定します。 指定していない場合、デフォルト値は * です。
メソッド名パターン オプションです。 メソッド名と突き合わせるワイルドカード・パターンを指定します。 指定していない場合、デフォルト値は * です。
メソッド・シグニチャー・パターン オプションです。 メソッドのシグニチャーと突き合わせるワイルドカード・パターンを指定します。 (シグニチャー は、メソッドの引数および戻りの型を表すストリングです。) メソッド・シグニチャーには、Java™ 内部フォーマットを使用します。 例えば、(Ljava/lang/Object;)D は、パラメーターとして Object を取り、double 型を戻すメソッドのシグニチャーです。 このワイルドカード・パターンを使用すると、多重定義のメソッド間で区別することができます。 指定していない場合、デフォルト値は * です。

注:

  • プローブには、連続したターゲット規則を含む複数のターゲット指定を持たせることができます。 特定のメソッドにのみプローブを適用する場合は、まず最初に組み込みたいメソッドを指定し、 次に最終ターゲット指定 package=* className=* method=* signature=* type=exclude を追加します。
  • 指定するパッケージおよびクラス名が、クラスが実装するインターフェースのパッケージおよびクラス名についても検査されます。 例えば、java.util.HashMap はインスタンス java.util.Map を実装します。 プローブがパッケージ java.util、クラス名 Map、およびメソッド名 size をターゲットとしている場合、 そのプローブは java.util.HashMap.size() と、Map インターフェースを実装する他のクラス の size メソッドに適用されます。
  • パターン・マッチングは、継承関係を考慮しません。 クラス Derived がクラス Base を拡張し、プローブのターゲットが Base.run() である場合、 そのプローブは Derived.run() に自動的には適用されません。
  • ターゲット指定内のパッケージ・パターンが単一のピリオド文字 (「.」) である場合、それはグローバルな 名前なし Java パッケージを表します。 これにより、グローバル・パッケージ内のクラスを明示的にターゲットにすることができます。
  • 呼び出しサイト・プローブは、呼び出されるメソッドのパッケージ名、クラス名、 メソッド名、およびメソッド・シグニチャーに対して、 ターゲット・パターンと規則を突き合わせます。 突き合せは、呼び出されるメソッドに対して、コンパイル時に認知されたとおりに行われます。 つまり、継承および仮想関数のために呼び出される実際のメソッドではなく、 静的に認知されたクラスおよびメソッド名に対して、突き合せが行われます。 インターフェース参照を介して呼び出しが行われる場合は、インターフェース名が一致する必要があります。
例:

プローブ用のターゲット規則のリストを指定するには、 「プローブ」ページのツリー・ペインで「ターゲット」を選択し、 「追加」をクリックして、編集ペインの「編集」をクリックします。

 型のターゲット・エントリーが包含および除外。 除外ターゲット・エントリーは、すべてを除外するためにアスタリスクのワイルドカードを使用します。 包含エントリーは、ターゲットとなる正確なメソッドを指定します。

この例では、 パッケージ com.example パッケージ内の、名前が Proxy で終っているクラス内の、 名前が Get で始まっているメソッドにのみ、プローブを適用します。 その他のクラスおよびメソッドはすべて、インスツルメンテーションから除外されます。

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.