Probekit è un framework sulla piattaforma Eclipse che è possibile utilizzare per scrivere ed utilizzare probe. I probe
sono frammenti di codice Java™ che possono essere inseriti in un programma allo scopo di fornire informazioni sul programma quando è in esecuzione.
Per comprendere il funzionamento dei probe, iniziare con il probe di esempio descritto di seguito. Si tratta di un
probe di base che stampa un messaggio identificando ciascun metodo richiamato quando viene eseguito il programma.
I probe sono definiti da voci immesse nell'editor Probekit. Questo esempio contiene
un singolo frammento;
fragments determina il comportamento del probe. Le definizioni di frammento comprendono:
- Una specifica del tipo di frammento. Questo frammento è di tipo entry, il che
significa che viene eseguito all'ora di immissione del metodo.
- Elementi di dati a cui il frammento può accedere. Gli elementi di dati
consentono al frammento di accedere ai nomi delle classi e dei metodi.
- Frammento di codice Java che definisce la logica del probe.
Questo frammento richiama
System.out.println per visualizzare il nome delle classi e dei metodi eseguiti.
L'immagine seguente mostra il probe nell'editor Probekit:

Dopo aver creato un probe con l'editor Probekit, applicarlo alla classe e ai file jar
del progetto. Quando il progetto viene eseguito, il codice di frammento verrà eseguito con il programma.
Di seguito è riportata una panoramica sulle modalità di creazione e di utilizzo
dei probe, e alcune informazioni sulle modalità di utilizzo del Probekit:
- L'editor Probekit viene utilizzato per creare probe nei file di origine Probekit.
I file di origine Probekit hanno estensione .probe. Contengono uno o più
probe, e ciascun probe può contenere uno o più frammenti probe.
- Probekit assembla i frammenti probe in un insieme di metodi Java successivamente li compila. Quando Probekit compila un probe, combina i frammenti probe
con codice boilerplate standard Java, e genera codice di origine Java per la nuova classe
probe. Le funzioni generate dai frammenti probe vengono visualizzate come metodi statici della nuova classe
probe.
- Quando si applica un probe, si specifica una classe di destinazione e i file jar che si desidera esplorare. Il motore BCI (Probekit byte-code instrumentation) fa riferimento all'elenco
dei probe disponibili e ai loro modelli di destinazione e inserisce richiami ai metodi dei
frammenti probe nei programmi di destinazione. Il processo di inserimento delle
istruzioni di chiamata nei metodi di destinazione viene definito strumentazione.
Le classi che contengono un metodo fornito di probe, vengono chiamate classi con probe.
Gli elementi di dati richiesti da un frammento probe (ad esempio, il nome dei
dei metodi e della classe) vengono passati come argomenti.
- Dopo l'assegnazione dei probe all'applicazione. I frammenti di probe verranno eseguiti
quando viene eseguito il programma.
Il frammento probe
type determina quando il probe deve essere eseguito. È possibile specificare
i tipi che determinano l'esecuzione del frammento nelle seguenti occasioni:
- All'immissione del metodo.
- All'immissione del metodo (dopo aver restituito un valore oppure come risultato di
un'eccezione).
- All'avvio del gestore eccezioni: ovvero all'inizio della proposizione catch,
o all'inizio della proposizione finally richiamata come risultato di un'eccezione.
- Prima del codice originale nell'inizializzatore statico della classe.
- Prima di ciascuna unità di codice eseguibile (quando le informazioni sono disponibili).
- Quando vengono richiamati metodi specifici. in questo caso la strumentazione viene eseguita
al punto di chiamata, non all'interno del metodo richiamato.
I frammenti probe possono accedere agli elementi dati che forniscono diversi tipi di informazioni
che riguardano l'applicazione nel punto in cui sono stati inseriti.
Ad esempio:
- Pacchetto, classe e nome metodo
- Firma del metodo
- Oggetto this
- Argomenti
- Valore di ritorno
Se si desidera applicare il probe solo a determinate classi o metodi, specificare le destinazioni o impostare
i filtri.
Per ulteriori informazioni, vedere Destinazioni e filtri probe.