Sondenobjekt 'Data'

Data-Sondenobjekte enthalten die Namen und Typen von Datenfeldern, die vom Quellcode im Code-Objekt eines Fragments referenziert werden.

Das Objekt 'Data' ist optional. Ein Sondenfragment kann mehr als ein Data-Objekt enthalten. Die Objekte in einem Fragment dürfen jedoch nicht denselben Namen haben oder vom selben Typ sein.

Das Data-Objekt enthält folgende Merkmale:
Merkmal Beschreibung
name Erforderliches Merkmal, das einen gültigen Java-Variablennamen angeben muss
type Erforderliches Merkmal. Die verfügbaren Typen sind in der folgenden Tabelle aufgelistet.
Die folgende Tabelle enthält eine Liste und eine Beschreibung der Typen sowie eine Angabe des jeweiligen Datentyps.
Typ Datentyp Beschreibung
className String

Der Klassenname der instrumentierten Methode, einschließlich des Paketnamens, im internen Format

Beispiel: org/eclipse/hyades/SomeClass

methodName String

Der Methodenname der instrumentierten Methode im internen Format. Nicht gültig für staticInitializer-Fragmente.

Konstruktoren haben den Methodennamen <init>, Initialisierungsoperatoren für statische Klassen den Methodennamen <clinit>.

methodSig String

Die Methodensignatur mit den Argumenten und dem Rückgabetyp im internen Format. Nicht gültig für staticInitializer-Fragmente.

Beispiel: (Ljava/lang/String;)I

thisObject Object

Das this-Objekt (für Instanzmethoden), das an die instrumentierte Methode übergeben wurde. Nicht gültig für staticInitializer-Fragmente.

thisObject ist für statische Methoden, für Fragmente des Typs entry, die auf Konstruktoren angewendet werden, und für Fragmente des Typs exit, die auf Konstruktoren angewendet werden, wenn der Konstruktor eine Ausnahme auslöst, gleich null.

args Object[] Ein Array mit Object-Referenzen, das die Argumente für die instrumentierte Methode repräsentiert. Dieses Array enthält für jedes Methodenargument ein Element (ohne das Argument this). Argumente eine Primitive-Typs werden in temporäre Objekte des entsprechenden Referenztyps eingebunden, z. B. Integer für int. Wird die Methode ohne Argumente verwendet, ist dieser Typ ein Array Object[] der Größe null. Beachten Sie, dass Konstruktoren für nicht statische untergeordnete Klassen pro untergeordneter Ebene ein verdecktes Argument haben, so dass das Argument-Array mehr Elemente enthält, als im Quellcode erscheinen. Nicht gültig für staticInitializer-Fragmente.
returnedObject Object Ein Verweis auf das Objekt, das zurückgegeben wird. Dieser Typ ist nur für Fragmente des Typs exit verfügbar. Wenn der Typ des Rückgabewerts der instrumentierten Methode ein Primitive-Typ ist, wird der Rückgabewert an ein temporäres Objekt des entsprechenden Referenztyps gebunden. Wenn die Methode void ist (keinen Wert zurückgibt) oder der Methodenaustritt durch eine Ausnahme erfolgt, hat returnedObject den Wert null. Dieser Typ ist nur in afterCall-Fragmenten gültig.
exceptionObject Throwable Ein Verweis auf das Ausnahmeobjekt der ausgelösten Ausnahme. Dieser Typ ist nur für Fragmente des Typs catch und exit verfügbar. Wenn der Methodenaustritt auf normale Weise erfolgt, hat exceptionObject den Wert null.
isFinally Boolean Eine Markierung, die angibt, ob das Fragment von einer Klausel finally (true) oder einer Klausel catch (false) aufgerufen wurde. Sie ist nur in Fragmenten des Typs catch gültig.
staticField (verschieden) Das Objekt, das vom statischen Feld referenziert wird. Der Typ des Objekts stimmt mit dem im Objekt staticField deklarierten Typ überein. Dieser Typ ist nur gültig, wenn die Sonde auch das Objekt staticField enthält. Für Callsite-Sonden ist dieser Typ nicht gültig.
classSourceFile String Die aus dem Debug-Attributen der CLASS-Datei verfügbare Namensangabe der Quellendatei. Wenn es keine Quelleninformationen gibt, hat classSourceFile den Wert null. Für Java ist der Wert in der Regel der Dateiname ohne Pfadinformation. Für Callsite-Sonden ist dieser Typ nicht gültig.
methodNames String

Eine codierte Liste mit Methodennamen und Signaturen. Die Reihenfolge der Methoden in dieser Liste stimmt mit der Reihenfolge der Methoden in methodLineTables überein und entspricht der Angabe im Datenfeld methodNumber. Die Liste enthält keine Namen von Methoden, die vom Probekit in die Klasse eingefügt wurden.

Die Zeichenfolge methodNames besteht aus Methodennamen und Signaturen, die durch jeweils ein Pluszeichen ("+") voneinander getrennt sind. Die Methodensignaturen haben das Java-interne Format. Beispiel: Eine Klasse mit zwei Methoden, einem Standardkonstruktor und einer Methode run, die mit einer String verwendet wird und ein int zurückgibt, hat folgende Zeichenfolge für methodNames: <init>()V+run(Ljava/lang/String;)I

Für Callsite-Sonden ist dieser Typ nicht gültig.

methodLineTables String Eine codierte Liste mit den Zeilennummern, die den einzelnen ausführbaren Codeeinheiten in der Klasse entsprechen. Die Liste enthält keine ausführbaren Einheiten, die vom Probekit in die Klasse eingefügt wurden. Eine Erläuterung der Codierung finden Sie im Abschnitt Zeichenfolgenformat 'methodLineTables'. Für Callsite-Sonden ist dieser Typ nicht gültig.
methodNumber Integer Die Indexnummer in der Tabelle methodNames für die Methode, in die das Sondenfragment eingefügt wurde. Sie ist nicht für Callsite-Sonden oder staticInitializer-Fragmente gültig.
executableUnitNumber Integer Die Nummer der ausführbaren Einheit, in die das Sondenfragment eingefügt wurde. Dieser Datentyp ist nur für executableUnit-Fragmente und Sondenfragmente des Typs catch gültig. Wenn es für die Methode keine Quellenzeileninformationen gibt, erscheint sie als Methode mit nur einer ausführbaren Einheit, die die Nummer null hat.
Beispiel:
<data
   type="className"   
   name="__class" />

Übergeordnetes Thema: Referenzinformationen zu Probekit-Elementen

Zugehörige Verweise
Sondenfragment 'staticInitializer'
Sondenobjekt 'StaticField'
Zeichenfolgenformat 'methodLineTables'
Sondenfragment 'executableUnit'

Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2004. Alle Rechte vorbehalten.