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.
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. |
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. |
<data type="className" name="__class" />
Enthalten in:
Sondenobjekt 'Fragment'
Übergeordnetes Thema: Referenzinformationen zu Probekit-Elementen
Zugehörige Verweise
Sondenfragment 'staticInitializer'
Sondenobjekt 'StaticField'
Zeichenfolgenformat 'methodLineTables'
Sondenfragment 'executableUnit'