7.5.3 ユーザ拡張性能解析トレースのトレース対象メソッドの設定

ユーザ拡張性能解析トレースのトレース対象メソッドの設定は,ユーザ拡張性能解析トレース設定ファイルを使って設定します。ユーザ拡張性能解析トレース設定ファイルの内容は次のどれかに記述できます。

<この項の構成>
(1) 記述形式
(2) 記述項目
(3) 記述規則
(4) ユーザ拡張性能解析トレース設定ファイルの記述例
(5) ユーザ拡張性能解析トレース設定ファイル作成の注意事項

(1) 記述形式

ユーザ拡張性能解析トレース設定ファイルの記述形式を次に示します。

<指定形式>,<識別ID>,<サブクラスフラグ>[,[<イベントID>][,[<トレース取得レベル>]]][#コメント]

注1 []で囲んだ項目は省略できます。

注2 クラス名およびパッケージ名が一致するすべてのメソッドを対象とする場合,jvm.userprf.ExtendedSettingプロパティの値をtrueに設定してください。

注※ <指定形式>は次のどれかの形式で指定します。


記述形式の例

com.sample.Test.method(),TEST1,false,0xae02,A
com.sample.Test.method(),TEST1,false,0xae02
com.sample.Test.method(),TEST1,false,0xae02,
com.sample.Test.method(),TEST1,false,,A
com.sample.Test.method(),TEST1,false
com.sample.Test.method(),TEST1,false,
com.sample.Test.method(),TEST1,false,,

(2) 記述項目

ユーザ拡張性能解析トレース設定ファイルの記述項目を次に示します。

指定形式
トレース対象メソッドを指定します。
パッケージ名
トレース対象メソッドのクラスまたはインタフェースのパッケージ名を指定します。
クラス名
トレース対象メソッドのクラス名またはインタフェース名を指定します。クラス名の代わりにインタフェース名を指定し,かつ,サブクラスフラグにtrueを指定した場合,そのインタフェースを実装しているメソッドがトレース対象となります。
メソッド名
トレース対象メソッドの名前を指定します。
メソッドの引数の型名
トレース対象メソッドの引数の型を完全修飾名で指定します。
識別ID
トレース対象メソッドを識別するための文字列を指定します。
使用できる文字はASCII文字で0x21(!)から0x7e(~)までです。ただし,0x22("),0x23(#),および0x2c(,)は指定できません。
識別IDはPRFトレースファイルに出力されます。なお,PRFトレースファイルに出力される文字数は32文字までです。33文字目以降は省略されて,33文字目に*が出力されます。
注意
トレース対象メソッドが定義されているクラスにサブクラスが存在し,そのサブクラスでトレース対象メソッドがオーバーライドされていない場合,スーパークラスのトレース対象メソッドに対して指定された識別IDが出力されます。
サブクラスフラグ
指定したメソッドのクラスまたはインタフェースと継承関係にあるクラスのメソッドをトレース対象に含めるかどうかをtrueまたはfalseで指定します。
  • trueを指定した場合,指定したメソッドと,それをオーバーライドしているメソッドがトレース対象となります。
  • falseを指定した場合,指定したメソッドだけがトレース対象となり,指定したメソッドをオーバーライドしているメソッドはトレース対象となりません。
イベントID
トレース情報を取得するポイント(トレース取得ポイント)を16進数(0xae02~0xae7eおよび0xc000~0xcffe)の値で指定します。デフォルト値は0xae00です。
メソッドの入口で出力されるトレース情報にはこの値が出力され,メソッドの出口で出力されるトレース情報にはこの値+1が出力されます。
トレース取得レベル
トレース対象メソッドのトレース取得レベルに,A,B,C,またはそれぞれの小文字のどれかを指定します。デフォルト値はAです。
  • A:標準レベル
  • B:詳細レベル
  • C:保守レベル
 
参考
トレース取得レベルはcprflevelコマンドのPRFトレース取得レベルと同じです。トレース対象メソッドはすべてJava VMレイヤのレベルを参照します。PRF取得レベルとレイヤについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cprflevel(PRFトレース取得レベルの表示と変更)」を参照してください。
コメント
コメントは「#」で始まり,「#」から行末までの間の文字すべてをコメントとします。

(3) 記述規則

ユーザ拡張性能解析トレース設定ファイルの記述規則を次に示します。

(4) ユーザ拡張性能解析トレース設定ファイルの記述例

ここでは,トレース対象メソッドごとに,ユーザ拡張性能解析トレース設定ファイルの記述例について説明します。

なお,ここで説明する記述例は,パッケージ名が「com.sample」で,次の図に示すクラス構造を持っているアプリケーションとします。

図7-8 アプリケーションのクラス構造の例

[図データ]

(a) メソッド名と引数の型が一致するメソッドをトレースの対象とする場合

メソッド名と引数の型が一致するメソッドをトレースの対象とする場合のユーザ拡張性能解析トレース設定ファイルの記述例を次に示します。

●サブクラスフラグがfalseの場合

com.sample.ClassA.methodA1(java.lang.String,java.lang.Object),1000,false

サブクラスフラグがfalseの場合,記述したメソッド名と引数の型が一致するメソッドがトレース対象となります。

トレース対象のメソッド
  • ClassAクラスのmethodA1(String,Object)

トレース対象メソッドに対してイベントIDの設定を省略しているため,トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae00,メソッドの出口で0xae01のデフォルト値が出力されます。また,識別IDに「1000」を設定しているため,識別IDとして「1000」が出力されます。

●サブクラスフラグがtrueの場合

com.sample.ClassA.methodA2(),2000,true

サブクラスフラグがtureの場合,メソッド名と引数の型が記述と一致するメソッドに加えて,記述したメソッドをオーバーライドしているメソッドもトレース対象となります。

トレース対象のメソッド
  • ClassAクラスのmethodA2()
  • ClassAクラスのmethodA2()をオーバーライドしているClassBクラスのmethodA2()

トレース対象メソッドに対してイベントIDの設定を省略しているため,トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae00,メソッドの出口で0xae01のデフォルト値が出力されます。また,識別IDに「2000」を設定しているため,トレース対象のすべてのメソッドに識別IDとして「2000」が出力されます。

(b) メソッド名が一致するメソッドをトレースの対象とする場合

メソッド名が一致するメソッドをトレースの対象とする場合のユーザ拡張性能解析トレース設定ファイルの記述例を次に示します。

●サブクラスフラグがfalseの場合

com.sample.ClassA.methodA1(*),methodA1,false,0xae30

サブクラスフラグがfalseの場合,記述したメソッド名と一致するメソッドのすべてがトレース対象となります。

トレース対象のメソッド
  • ClassAクラスのmethodA1(String,Object)
  • ClassAクラスのmethodA1(int)

トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae30,メソッドの出口で0xae31が出力されます。また,トレース対象のすべてのメソッドに識別IDとして「methodA1」が出力されます。

●サブクラスフラグがtrueの場合

com.sample.ClassA.methodA1(*),methodA1,true,0xae30

サブクラスフラグがtrueの場合,記述したメソッド名と一致するメソッドのすべてがトレース対象となります。また,記述したメソッドに加えて,記述したメソッドをオーバーライドしているメソッドもトレース対象となります。

トレース対象のメソッド
  • ClassAクラスのmethodA1(String,Object)とmethodA1(int)
  • ClassAクラスのmethodA1(String,Object)をオーバーライドしているClassBクラスのmethodA1(String,Object)
  • ClassBクラスのmethodA1(String,Object)をオーバーライドしているClassCクラスのmethodA1(String,Object)

トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae30,メソッドの出口で0xae31が出力されます。また,トレース対象のすべてのメソッドに識別IDとして「methodA1」が出力されます。

(c) クラス名が一致するすべてのメソッドをトレースの対象とする場合

メソッドと引数を省略して,クラス名が一致するすべてのメソッドをトレースの対象とする場合のユーザ拡張性能解析トレース設定ファイルの記述例を次に示します。

●サブクラスフラグがfalseの場合

com.sample.ClassA,TEST01,false

サブクラスフラグがfalseの場合,記述したクラス名(ClassAクラス)のすべてのメソッドがトレース対象となります。

トレース対象のメソッド
  • ClassAクラスのmethodA1(String,Object),methodA1(int),およびmethodA2()

トレース対象となったメソッドが呼び出されると,イベントIDが省略されているため,メソッド入口で0xae00,メソッド出口で0xae01が出力されます。また,これらすべてのメソッドに識別IDとして「TEST01」が出力されます。

●サブクラスフラグがtrueの場合

com.sample.ClassB,TEST02,true

サブクラスフラグがtrueの場合,記述したクラス名(ClassBクラス)のすべてのメソッドと,そのメソッドをオーバーライドしているメソッドのすべてがトレース対象となります。

トレース対象のメソッド
  • ClassBクラスのmethodA1(String,Object)
  • ClassBクラスのmethodA2()
  • ClassBクラスのmethodB1()
  • ClassBクラスのmethodA1(String,Object)をオーバーライドしているClassCクラスのmethodA1(String,Object)

トレース対象となったメソッドが呼び出されると,イベントIDが省略されているため,メソッド入口で0xae00,メソッド出口で0xae01が出力されます。また,これらすべてのメソッドに識別IDとして「TEST02」が出力されます。

(d) パッケージ名が一致するすべてのメソッドをトレースの対象とする場合

クラス名とメソッド名と引数を省略して,パッケージ名が一致するすべてのクラスのすべてのメソッドをトレースの対象とする場合のユーザ拡張性能解析トレース設定ファイルの記述例を次に示します。

注意
この指定ではサブパッケージも対象に含まれます。トレース対象となった場合,対象となったメソッドが呼び出されるとトレースが出力されます。
com.sampleパッケージにサブパッケージがある場合,そのサブパッケージのすべてのクラスのすべてのメソッドもトレース対象となります。
●サブクラスフラグがfalseの場合

com.sample.*,6000,false

サブクラスフラグがfalseの場合,記述したパッケージ(com.sample)にあるすべてのクラスのすべてのメソッドがトレース対象となります。

トレース対象のメソッド
ClassA,ClassB,ClassC,ClassDのすべてのメソッドがトレース対象となります。

トレース対象となったメソッドが呼び出されると,イベントIDが省略されているため,メソッド入口で0xae00,メソッド出口で0xae01が出力されます。また,これらすべてのメソッドに識別IDとして「6000」が出力されます。

●サブクラスフラグがtrueの場合

com.sample.*,6000,false

サブクラスフラグがtrueの場合,記述したパッケージ(com.sample)にあるすべてのクラスのすべてのメソッドと,そのメソッドをオーバーライドしているメソッドのすべてがトレース対象となります。

トレース対象のメソッド
ClassA,ClassB,ClassC,ClassDのすべてのメソッドと,そのメソッドをオーバーライドしているすべてのメソッドもトレース対象となります。

トレース対象となったメソッドが呼び出されると,イベントIDが省略されているため,メソッド入口で0xae00,メソッド出口で0xae01が出力されます。また,これらすべてのメソッドに識別IDとして「6001」が出力されます。

(5) ユーザ拡張性能解析トレース設定ファイル作成の注意事項

ユーザ拡張性能解析トレース設定ファイルを作成するときの注意事項を次に示します。