データ・プローブ・オブジェクト

データ・プローブ・オブジェクトには、フラグメントの Code オブジェクト内のソース・コードによって参照されるデータ項目の名前およびタイプが含まれます。

データ・オブジェクトの使用は任意です。 プローブ・フラグメントには複数のデータ・オブジェクトを含めることができますが、1 つのフラグメント内の 2 つのデータ・オブジェクトを同じタイプまたは名前にすることはできません。

データ・オブジェクトには、以下のプロパティーが含まれています。
プロパティー 説明
name 必須。有効な Java 変数の名前を指定する必要があります。
type 必須。使用可能なタイプを以下の表にリストします。
以下の表は、使用可能なタイプのリストとその説明、および各タイプのデータ型を示しています。
タイプ データ型 説明
className String

プローブ済みメソッドのクラス名で、パッケージ名を含む (内部フォーマット)。

例: org/eclipse/hyades/SomeClass

methodName String

プローブ済みメソッドのメソッド名 (内部フォーマット)。 staticInitializer フラグメントでは無効です。

コンストラクターはメソッド名 <init> を持ち、静的クラス・イニシャライザーはメソッド名として <clinit> を持ちます。

methodSig String

メソッドの引数および戻りの型のシグニチャー (内部フォーマット)。 staticInitializer フラグメントでは無効です。

例: (Ljava/lang/String;)I

thisObject Object

プローブ済みメソッドに渡された this オブジェクト (インスタンス・メソッド用)。 staticInitializer フラグメントでは無効です。

静的メソッド、コンストラクターに適用される entry フラグメント、および、コンストラクターが例外をスローしたときにコンストラクターに適用される exit フラグメントに対しては、thisObjectnull になります。

args Object[] プローブ済みメソッドへの引数を表す、Object 参照の配列です。 この配列の中に、メソッドへの各引数ごとに 1 つの要素が含まれます (this 引数はカウントしません)。 プリミティブ型の引数は、適切な参照タイプの一時オブジェクトにバインドされます。たとえば、int に対する Integer のようになります。 メソッドに引数がない場合は、サイズがゼロの Object[] 配列になります。 非静的インナー・クラスのコンストラクターには「インナー」レベルごとに 1 つの隠し引数があるため、ソース・コードにあるより多くの要素が、引数配列に含まれていることに注意してください。 staticInitializer フラグメントでは無効です。
returnedObject Object 戻されるオブジェクトへの参照。 このタイプは、exit フラグメントに対してのみ使用可能です。 プローブ済みメソッドの戻りの型がプリミティブ型である場合、戻される値は、適切な参照タイプの一時オブジェクトにバインドされます。 メソッドが void (値を戻さない) であるか、または例外によって終了する場合は、returnedObjectnull になります。 afterCall フラグメントでのみ有効です。
exceptionObject Throwable スローされる例外オブジェクトへの参照。 このタイプは、catch および exit フラグメントに対してのみ使用可能です。 メソッドが正常に終了した場合は、exceptionObjectnull になります。
isFinally boolean フラグメントが finally 文節から呼び出されたのか (true)、あるいは catch 文節から呼び出されたのか (false) を示すフラグ。 catch フラグメントでのみ有効です。
staticField (各種) 静的フィールドによって参照されるオブジェクト。 このタイプは、staticField オブジェクトで宣言されたものと同じタイプです。 これは、プローブが staticField オブジェクトも持っている場合にのみ有効です。 呼び出し側プローブでは無効です。
classSourceFile String クラス・ファイルのデバッグ属性から使用可能な、ソース・ファイル名情報です。 ソース情報がない場合は、classSourceFilenull になります。 Java の場合、この値は一般的に、パス情報のないファイル名のみになります。 呼び出し側プローブでは無効です。
methodNames String

メソッド名とシグニチャーの、エンコードされたリスト。 このリスト内のメソッドの順序は、methodLineTables 内のメソッドの順序と同じで、methodNumber データ項目によって反映される順序付けと同じです。 このリストには、Probekit によってクラスに挿入されたメソッドの名前は含まれません。

methodNames ストリングは、1 つ以上のメソッド名とシグニチャーがプラス記号 ("+") で区切られたもので構成されています。 メソッド・シグニチャーは Java の内部フォーマットを使用します。 たとえば、2 つのメソッドを持つクラスで、String を取り int を戻すメソッド run のデフォルト・コンストラクターの場合、この methodNames ストリングは <init>()V+run(Ljava/lang/String;)I になります。

呼び出し側プローブでは無効です。

methodLineTables String クラス内のコードの各実行可能単位に対応する行番号リストの、エンコードされたもの。 このリストには、Probekit によってクラスに挿入された実行可能単位は含まれません。 エンコード方式の説明については、『methodLineTables ストリング・フォーマット』を参照してください。 呼び出し側プローブでは無効です。
methodNumber Integer プローブ・フラグメントが挿入されたメソッドの、methodNames テーブル内の索引番号。 呼び出し側プローブまたは staticInitializer フラグメントでは無効です。
executableUnitNumber Integer プローブ・フラグメントが挿入された実行可能単位の番号。 このデータ型は、executableUnit および catch プローブ・フラグメントでのみ有効です。 メソッドにソース行情報がない場合、番号 0 の実行可能単位が 1 つのものとして表示します。
<data
   type="className"
   name="__class" />

親トピック: Probekit 参照

Copyright IBM Corporation and others 2000, 2004.