Probekit on kehys, jonka avulla Eclipse-ympäristössä voi kirjoittaa ja
käyttää luotauksia. Luotaukset ovat Java™-koodin fragmentteja, jotka voi lisätä ohjelmaan. Ne antavat tietoja ohjelmasta sen ollessa ajossa.
Luotaukset selitetään seuraavassa esimerkkiluotauksen avulla. Se on
perusluotaus, joka tulostaa sanoman, jossa yksilöidään jokainen ohjelman ajossa
kutsuttu metodi.
Luotaukset määritetään Probekit-muokkausohjelmassa tehtyjen merkintöjen avulla. Tämä
malli sisältää yhden fragmentin.
Fragmentit määrittävät, mitä luotaus
tekee. Fragmentin määrityksiä ovat seuraavat:
- Fragmenttityypin määritys. Tämä fragmentti on entry-fragmentti eli se ajetaan metodin tulokohdassa.
- Tietoalkiot, joita fragmentti voi käyttää. Tietoalkiot, jotka sallivat
fragmentin käyttää luokka- ja metodinimiä.
- Java-koodin katkelma, joka määrittää luotauksen logiikan.
Tämä fragmentti
näyttää ajettavien metodien luokka- ja metodinimen kutsumalla kohdetta System.out.println.
Luotaus näyttää seuraavalta Probekit-muokkausohjelmassa:

Kun olet luonut luotauksen Probekit-muokkausohjelman avulla, voit käyttää
sitä projektin luokka- ja jar-tiedostoissa. Kun sitten ajat projektin,
fragmentin koodi ajetaan ohjelman mukana.
Seuraavassa on yleiskuvaus luotausten luonnista ja käytöstä sekä
tietoja siitä, miten Probekit on hyödyksi:
- Voit luoda luotauksia Probekit-lähdetiedostoihin
Probekit-muokkausohjelman avulla.
Probekit-lähdetiedostoilla on oltava tunniste .probe. Ne voivat
sisältää yhden luotauksen tai useita, ja kukin luotaus voi sisältää yhden luotausfragmentin tai useita.
- Probekit kokoaa luotausfragmentit joukoksi Java-metodeja ja kääntää
ne sitten. Kun Probekit kääntää luotauksen, se yhdistää luotausfragmentit
tavalliseen Java-vakiokoodiin ja muodostaa uuden luotausluokan
Java-lähdekoodin. Luotausfragmenteista muodostetut funktiot näkyvät uudessa
luotausluokassa staattisina metodeina.
- Kun käytät luotausta, määritä kohteena olevat luokka- ja jar-tiedostot, joita
haluat tutkia. Probekitin BCI (byte-code instrumentation) -ohjelma viittaa käytettävissä olevien luotausten ja niiden
kohdemerkkijonojen luetteloon ja lisää kohdeohjelmaan kutsuja luotausfragmentin
metodeihin. Kutsukäskyjen lisäystä kohdemetodeihin kutsutaan instrumentoinniksi.
Instrumentoidun metodin sisältävää luokkaa kutsutaan luodatuksi luokaksi.
Luotausfragmentin pyytämät tietoalkiot (esimerkiksi metodin nimi ja
luokan nimi) välitetään argumentteina.
- ###Kun sovellus on instrumentoitu. Luotausfragmentit ajetaan
ohjelman ajon yhteydessä.
Luotausfragmentin
tyyppi määrittää, milloin fragmentti ajetaan. Voit määrittää
tyypit, joiden seurauksena fragmentti ajetaan seuraavissa tilanteissa:
- Metodin tulokohdassa.
- Metodin poistumakohdassa (joko normaalin palautuksen yhteydessä tai poikkeuksen tuloksena).
- Poikkeuksen käsittelytoiminnon yhteydessä eli catch-lauseen alussa
tai sellaisen finally-lauseen alussa, jota kutsutaan poikkeuksen tuloksena.
- Ennen alkuperäistä koodia luokan staattisessa alustusfunktiossa.
- Ennen kutakin ajettavaa koodin yksikköä (kun lähdekooditiedot ovat käytettävissä).
- Kun tiettyjä metodeja kutsutaan. (Tässä tapauksessa instrumentointi tehdään
kutsupaikassa, ei kutsutun metodin sisällä.)
Luotausfragmentit voivat käyttää tietoalkioita, jotka antavat erilaisia tietoja
sovelluksesta siinä pisteessä, jossa ne on lisätty. Esimerkki:
- Paketin, luokan ja metodin nimi
- Metodin allekirjoitus
- this-objekti
- Argumentit
- Palautusarvo
Jos haluat käyttää luotausta vain tiettyihin luokkiin ja metodeihin, määritä kohteet tai aseta suodattimet. Lisätietoja on kohdassa Luotauksen kohdemääritykset ja suodattimet.