Pakiet Probekit to środowisko platformy Eclipse służące do tworzenia i stosowania sond. Sondy to fragmenty kodu w języku Java™, które można wstawiać do programów, aby uzyskiwać informacje o programie na bieżąco, w trakcie jego wykonywania.
Aby lepiej zrozumieć koncepcję sond, warto zacząć od pracy z opisaną tutaj sondą przykładową. Jest to bardzo prosta sonda, wyświetlająca komunikat identyfikujący każdą z metod wywoływanych w trakcie wykonywania programu.
Sondy są definiowane wpisami wykonywanymi w edytorze pakietu Probekit. Przedstawiony przykład zawiera pojedynczy fragment;
fragmenty określają, jak sonda będzie działać. Definicje fragmentu obejmują następujące elementy:
- Specyfikacja typu fragmentu. Ten fragment jest fragmentem punktu wejścia, co oznacza, że jest uruchamiany w momencie wchodzenia do metody.
- Elementy danych, do których fragment ma dostęp. Tutaj elementy danych umożliwiają dostęp fragmentu do nazw klas i metod.
- Fragment kodu Java definiujący logikę sondy. Ten fragment wywołuje metodę System.out.println w celu wyświetlenia nazwy metody i klasy dla wykonywanych metod.
Poniżej przedstawiono wygląd sondy w edytorze pakietu Probekit:

Po utworzeniu sondy przy użyciu edytora pakietu Probekit można ją zastosować do plików class i jar w projekcie. Następnie po uruchomieniu projektu kod fragmentu będzie wykonywany razem z nim.
Poniżej opisano ogólnie sposób tworzenia i używania sond ze szczególnym uwzględnieniem pomocnych funkcji pakietu Probekit:
- Za pomocą edytora pakietu Probekit sondy można tworzyć w plikach źródłowych pakietu Probekit.
Pliki źródłowe pakietu Probekit muszą mieć rozszerzenie .probe. Mogą one zawierać jedną lub więcej sond, a każda z sond może zawierać jeden lub większą liczbę fragmentów.
- Pakiet Probekit składa fragmenty sond do postaci zestawu metod Java, po czym je kompiluje. Kiedy pakiet Probekit kompiluje sondę, łączy on fragmenty sondy ze standardowymi, gotowymi elementami kodu Java, generując w ten sposób kod źródłowy Java dla nowej klasy sondy. Funkcje wygenerowane na podstawie fragmentów sondy będą metodami statycznymi nowej klasy sondy.
- Podczas stosowania sondy należy określić docelowe pliki class i jar, które mają podlegać sondowaniu. Mechanizm instrumentacji kodu bajtowego (byte-code instrumentation - BCI) odwołuje się do listy sond i ich wzorców docelowych, a następnie wstawia do programów docelowych wywołania metod fragmentów sondy. Proces wstawiania instrukcji wywołań do metod docelowych nosi nazwę instrumentacji.
Klasa zawierająca instrumentowaną metodę jest nazywana klasą sondowaną.
Elementy danych żądane przez fragment sondy (np. nazwa metody i nazwa klasy) są przekazywane jako argumenty.
- Po zinstrumentowaniu aplikacji fragmenty sond będą uruchamiane przy uruchamianiu programu.
Typ fragmentu sondy określa, kiedy sonda ma być wykonywana. Do wyboru są typy powodujące uruchomienie fragmentu w następujących sytuacjach:
- W momencie wejścia do metody.
- W momencie wyjścia z metody (w wyniku normalnego powrotu lub w drodze wyjątku).
- W momencie uruchomienia obsługi wyjątku, czyli na samym początku klauzuli catch lub na początku klauzuli finally wywoływanej w wyniku wystąpienia wyjątku.
- Przed oryginalnym kodem w inicjatorze static klasy.
- Przed każdą wykonywalną jednostką kodu (gdy dostępne są informacje o kodzie źródłowym).
- Przy wywoływaniu określonych metod. W takiej sytuacji instrumentacja jest wykonywana w miejscu wywołania, a nie wewnątrz wywoływanej metody.
Fragmenty sond mogą uzyskiwać dostęp do elementów danych zawierających różne rodzaje informacji o aplikacji w miejscu, gdzie zostały wstawione. Na przykład:
- Nazwa pakietu, klasy i metody
- Sygnatura metody
- Obiekt this
- Argumenty
- Wartość zwracana
Jeśli dana sonda ma być stosowana tylko względem określonych klas i metod, należy zdefiniować cele lub skonfigurować filtry. Więcej informacji na ten temat zawiera sekcja Cele sondy i filtry.