Dataelementer for probefragmenter

Et fragments dataelementer er dataelementnavnene og -typene som kildekoden for fragmentet kan referere til.

Spesifiseringen av dataelementer er valgfri. Et fragment kan inneholde flere dataelementer, men hver type element kan bare forekomme en gang.

Et dataelement har følgende egenskaper:
Egenskap Beskrivelse
Datatype Obligatorisk. De tilgjengelige typene er oppgitt i tabellen nedenfor.
Navn Obligatorisk. Må oppgi et gyldig Java-variabelnavn. Kildekoden for probefragmentet vil bruke dette navnet for å referere til de oppgitte dataene.
Tabellen nedenfor viser og beskriver datatypene som er tilgjengelige via Probekit-redigeringsprogrammet:
Datatype type Beskrivelse
className Streng

For metode-prober, klassenavnet til den probebehandlede metoden, inkludert pakkenavnet, i internt format. For kallsted-prober, klassenavnet til den kalte metoden.

Eksempel: org/eclipse/tptp/SomeClass

methodName Streng

For metode-prober, metodenavnet til den probebehandlede metoden, i internt format. For kallsted-prober, metodenavnet til den kalte metoden.

Konstruktører har metodenavnet <init>, og statiske klasseinitialiserere har metodenavnet <clinit>.

methodSig Streng

Metodeargumentet og returtypesignaturen, i internt format. Ikke gyldig for staticInitializer-fragmenter.

Eksempel: (Ljava/lang/Streng;)I

thisObject Objekt

this-objektet (for forekomstmetoder) som ble sendt til den probebehandlede metoden. Ikke gyldig for staticInitializer-fragmenter.

thisObject er null for statiske metoder, for entry-fragmenter som blir brukt i konstruktører, og for exit-fragmenter som blir brukt i konstruktører når det oppstår et unntak i konstruktøren.

args Object[]

En matrise av Objekt-referanser som representerer argumentene for den probebehandlede metoden. Det er ett element i denne matrisen for hvert argument for metoden (i tillegg til this-argumentet). Argumenter som er primitive typer, blir bundet i midlertidige objekter av riktig referansetype, for eksempel: Integer for int. Hvis metoden ikke har argumenter, er størrelsen på Object[]-matrisen null.

Legg merke til at konstruktører for ikke-statiske klasser har et skjult argument per "indre" nivå, så argumentmatrisen inneholder flere elementer enn det som blir vist i kildekoden. Ikke gyldig for staticInitializer-fragmenter.

returnedObject Objekt En referanse til objektet som blir returnert. Denne typen er bare tilgjengelig i exit- og afterCall-fragmenter. Hvis returtypen for den probebehandlede metoden er en primitiv type, blir den returnerte verdien bundet i et midlertidig objekt av riktig referansetype. Hvis metoden er void (returnerer ikke en verdi) eller et unntak gjør at den avsluttes, vil returnedObject være null.
exceptionObject Throwable En referanse til unntaksobjektet som kastes. Denne typen er bare tilgjengelig for catch- og exit-fragmenter. Hvis metoden avsluttes normalt, vil exceptionObject være null.
isFinally boolsk Et flagg som viser om fragmentet ble kalt fra et finally-ledd (true), eller fra et catch-ledd (false). Bare gyldig i catch-fragmenter.
staticField (varierer) Objektet som det statiske feltet refererer til. Typen er den samme som den som ble deklarert i staticField-objektet. Denne er bare gyldig hvis proben deklarerer en staticField. (Se Eksempel på staticField og en staticInitializer-probe.) Ikke gyldig for kallsted-prober.
classSourceFile Streng Informasjon om kildefilnavnet som er tilgjengelig fra feilsøkingsattributtene til klassefilen. Hvis det ikke er noe kildeinformasjon, vil classSourceFile være null. For Java er verdien vanligvis bare filnavnet, uten banen. Ikke gyldig for kallsted-prober.
methodNames Streng

En kodet liste over metodenavn og -signaturer. Rekkefølgen på metodene på listen er den samme som rekkefølgen på metodene i methodLineTables, og er den samme som rekkefølgen som reflekteres av methodNumber-dataelementet. Listen inkluderer ikke navn på metoder som ble satt inn i klassen av Probekit.

Strengen methodNames består av ett eller flere metodenavn eller en eller flere metodesignaturer, skilt av et plusstegn ("+"). Metodesignaturene er i internt Java-format. For eksempel: en klasse med to metoder, en standard konstruktør, en metode som kjøres som tar en Streng og returnerer en int, har denne methodNames-strengen: <init>()V+run(Ljava/lang/Streng;)I

Ikke gyldig for kallsted-prober.

methodLineTables Streng En kodet liste over linjenumre som tilsvarer alle utførbare kodeenheter i klassen. Listen inkluderer ikke utførbare enheter som ble satt inn i klassen av Probekit. Du finner en forklaring på kodingen under Datastrengformatet methodLineTables. Ikke gyldig for kallsted-prober.
methodNumber Heltall Indeksnummeret i methodNames-tabellen for metoden der probefragmentet ble satt inn. Ikke gyldig for kallsted-prober eller staticInitializer-fragmenter.
executableUnitNumber Heltall Nummeret på den utførbare enheten som probefragmentet ble satt inn i. Denne datatypen er bare gyldig for executableUnit og catch-probefragmenter. Hvis metoden ikke har kildelinjeinformasjon, ser den ut til å ha en enkelt utførbar enhet, med nummeret null.
Eksempel:

Hvis du skal oppgi dataelementer for probefragmenter, velger du Fragment i treruten og bruker deretter Legg til og Rediger for å oppgi og definere dataelementene i redigeringsruten.

Probekit-redigeringsprogram som viser hvordan dataelementene for et fragment ser ut

Beslektet referanse
Java-kildekode for probefragment
Probefragmenttyper