Probekit is een framework in het Eclipse-platform waarmee u probes kunt maken en gebruiken. Probes zijn Java™-codefragmenten die in een programma kunnen worden ingevoegd om informatie te bieden over de programma-uitvoering.
Om probes te leren begrijpen begint u met de voorbeeldprobe die hier is beschreven. Het is een basisprobe die een bericht afdrukt met daarin alle methoden die worden aangeroepen als het programma wordt uitgevoerd.
Probes worden gedefinieerd door items die u in de Probekit-editor maakt. Dit voorbeeld bevat één fragment;
fragmenten bepalen wat de probe doet. Fragmentdefinities zijn onder andere:
- Een specificatie van het fragmenttype. Dit fragment is een invoerfragment, dat wil zeggen dat het wordt uitgevoerd als de methoden worden ingevoerd.
- Gegevensitems waartoe het fragment toegang heeft. Dankzij de gegevensitems heeft het fragment toegang tot namen van klassen en methoden.
- Het stukje Java-code dat de logica van de probe definieert. Dit fragment roept System.out.println aan om de klasse en naam van de actieve methode af te beelden.
De probe ziet er zo uit in de Probekit-editor:

Nadat u met de Probekit-editor een probe hebt gemaakt, kunt u deze toepassen op klassen en JAR-bestanden in het project. Als u vervolgens het project uitvoert, wordt de fragmentcode tegelijkertijd uitgevoerd.
Hier volgt een overzicht van het maken en gebruiken van probes en hoe Probekit u hierbij helpt:
- U gebruikt de Probekit-editor om probes te maken in de Probekit-bronbestanden.
Probekit-bronbestanden moeten de extensie .probe hebben. Ze kunnen een of meer probes bevatten en iedere probe kan een of meer probefragmenten bevatten.
- Probekit voegt probefragmenten samen tot een set Java-methoden en compileert ze vervolgens. Als Probekit een probe compileert, voegt het de probefragmenten samen met standaard-Java-code en genereert de Java-broncode voor een nieuwe probeklasse. De functies die uit de probefragmenten worden gegenereerd, verschijnen als nieuwe statische methoden in de nieuwe probeklasse.
- Als u een probe toepast, geeft u de doelklasse en de JAR-bestanden op die u wilt onderzoeken. De Probekit-engine voor bytecode-instrumentatie (BCI) gebruikt de lijst met beschikbare probes en hun doelpatronen en voegt aanroepen van probefragmentmethoden toe aan de doelprogramma's. Het proces van het invoegen van aanroepinstructies in doelmethoden wordt instrumentatie genoemd.
Een klasse die een geïnstrumenteerde methode bevat, wordt een probeklasse genoemd.
De gegevensitems die door een probefragment worden aangevraagd (bijvoorbeeld de naam van de methode en de klasse), worden als parameter doorgegeven.
- Nadat de toepassing is geïnstrumenteerd. De probefragmenten worden tegelijk met het programma uitgevoerd.
Het
type van het probefragment bepaalt wanneer een fragment wordt uitgevoerd. U kunt typen opgeven waarmee het fragment wordt uitgevoerd in de volgende situaties:
- Tijdens de invoertijd van een methode.
- Tijdens het afsluiten van een methode (als normale retouractie of als gevolg van een uitzondering).
- Tijdens het afhandelen van een uitzondering, dat wil zeggen boven aan een catch- of een finally-clausule die wordt aangeroepen als gevolg van een uitzondering.
- Voor de originele code in de class static-initialisatie.
- Voor iedere uitvoerbare code-eenheid (als de broncode-informatie beschikbaar is).
- Als er specifieke methoden worden aangeroepen. (In dit geval wordt de instrumentatie uitgevoerd aan de aanroepende zijde, niet in de aangeroepen methode.)
Probefragmenten hebben toegang tot gegevensitems die verschillende vormen van informatie bieden over de methoden waarin ze worden opgenomen. Voorbeeld:
- de naam van pakketten, klassen en methoden
- Methodehandtekening
- Object this
- Parameters
- Retourwaarde
Als u een probe alleen wilt toepassen op bepaalde klassen en methoden, moet u doelen opgeven of filters instellen. Raadpleeg Probedoelen en -filters voor meer informatie.