Elementy danych fragmentów sond

Elementy danych fragmentu są to nazwy i typy elementów danych, do których kod źródłowy fragmentu może się odwoływać.

Określenie elementów danych jest opcjonalne. Fragment może zawierać więcej niż jeden element danych, ale każdy typ elementu może wystąpić tylko jeden raz.

Element danych ma następujące właściwości:
Właściwość Opis
Typ danych Atrybut wymagany. Dostępne typy wymieniono w poniższej tabeli.
Nazwa Atrybut wymagany. Należy określić poprawną nazwę zmiennej Java. W kodzie źródłowym fragmentu sondy ta nazwa będzie używana w odwołaniach do odpowiednich danych.
W poniższej tabeli wymieniono i opisano typy danych dostępne za pośrednictwem edytora Probekit:
Typ danych Typ Opis
className String

W przypadku sond metod: nazwa klasy sondowanej metody, łącznie z nazwą pakietu, w formacie wewnętrznym. W przypadku sond miejsca wywołania: nazwa klasy wywoływanej metody.

Przykład: org/eclipse/tptp/SomeClass

methodName String

W przypadku sond metod: nazwa sondowanej metody w formacie wewnętrznym. W przypadku sond miejsca wywołania: nazwa wywoływanej metody.

Konstruktory mają nazwę metody <init>, a inicjatory klas statycznych - nazwę metody <clinit>.

methodSig String

Argument metody i sygnatura typu zwracanej wartości w formacie wewnętrznym. Nie dotyczy fragmentów staticInitializer.

Przykład: (Ljava/lang/String;)I

thisObject Object

Obiekt this (w przypadku metod instancji), który został przekazany do sondowanej metody. Nie dotyczy fragmentów staticInitializer.

Typ thisObject ma wartość NULL w przypadku metod static, fragmentów entry zastosowanych względem konstruktorów oraz fragmentów exit zastosowanych względem konstruktorów, jeśli konstruktor zgłosi wyjątek.

args Object[]

Tablica odwołań do obiektu Object reprezentująca argumenty przekazywane do sondowanej metody. W tej tablicy istnieje jeden element dla każdego argumentu przekazywanego do metody (nie licząc argumentu this). Argumenty typu podstawowego są wiązane w obiekty tymczasowe odpowiedniego typu referencyjnego (np. Integer w przypadku typu int). Jeśli metoda nie pobiera argumentów, wielkość tablicy Object[] wynosi zero.

Należy pamiętać, że konstruktory klas wewnętrznych innych niż static mają jeden ukryty argument w przypadku każdego poziomu wewnętrznego, co powoduje, że tablica argumentów będzie zawierała więcej elementów niż wynika to z kodu źródłowego. Nie dotyczy fragmentów staticInitializer.

returnedObject Object Odwołanie do zwracanego obiektu. Ten typ jest dostępny tylko we fragmentach exit i afterCall. Jeśli typ zwracanej wartości sondowanej metody jest typem podstawowym, zwracana wartość jest wiązana w obiekt tymczasowy odpowiedniego typu referencyjnego. Jeśli metoda należy do typu void (nie zwraca żadnej wartości) lub wyjście z niej następuje w wyniku wystąpienia wyjątku, typ returnedObject ma wartość NULL.
exceptionObject Throwable Odwołanie do zwracanego obiektu wyjątku. Ten typ jest dostępny tylko w przypadku fragmentów catch i exit. Jeśli wyjście z metody następuje w sposób normalny, obiekt exceptionObject ma wartość NULL.
isFinally Boolean Flaga wskazująca, że fragment został wywołany z klauzuli finally (prawda) lub z klauzuli catch (fałsz). Dotyczy tylko fragmentów catch.
staticField (różne) Obiekt, do którego odwołuje się pole static. Jego typ jest taki sam jak typ zadeklarowany w obiekcie staticField. Poprawne tylko w przypadku, gdy sonda deklaruje obiekt staticField. Patrz sekcja Przykład elementu danych staticField i sondy staticInitializer. Nie dotyczy sond miejsca wywołania.
classSourceFile String Informacje o nazwie pliku źródłowego dostępne w atrybutach debugowania pliku klasy. Jeśli brak informacji o kodzie źródłowym, obiekt classSourceFile ma wartość NULL. W przypadku języka Java tą wartością jest zazwyczaj tylko nazwa pliku bez informacji o ścieżce. Nie dotyczy sond miejsca wywołania.
methodNames String

Zakodowana lista nazw i sygnatur metod. Kolejność metod na tej liście jest taka sama, jak kolejność metod w przypadku typu methodLineTables i odpowiada kolejności określonej przy użyciu elementu danych methodNumber. Lista nie obejmuje nazw metod wstawionych do klasy przez pakiet Probekit.

Łańcuch methodNames składa się z jednej lub wielu nazw i sygnatur metod rozdzielonych znakiem plus (+). Sygnatury metod są zapisywane w wewnętrznym formacie języka Java. Na przykład w przypadku klasy zawierającej dwie metody (konstruktor domyślny oraz metoda run pobierająca wartość typu String i zwracająca wartość typu int) łańcuch methodNames wygląda następująco: <init>()V+run(Ljava/lang/String;)I

Nie dotyczy sond miejsca wywołania.

methodLineTables String Zakodowana lista numerów wierszy odpowiadających poszczególnym jednostkom wykonywalnym kodu w klasie. Lista nie obejmuje jednostek wykonywalnych wstawionych do klasy przez pakiet Probekit. Objaśnienia dotyczące kodowania można znaleźć w sekcji Format łańcucha danych methodLineTables. Nie dotyczy sond miejsca wywołania.
methodNumber Integer Numer indeksu tabeli methodNames odpowiadający metodzie, do której został wstawiony fragment sondy. Nie dotyczy sond miejsca wywołania ani fragmentów staticInitializer.
executableUnitNumber Integer Numer jednostki wykonywalnej, do której został wstawiony fragment sondy. Ten typ danych dotyczy tylko fragmentów sond executableUnit i catch. Jeśli metoda nie zawiera informacji o wierszu kodu źródłowego, będzie istniała tylko jedna jednostka wykonywalna (o numerze zero).
Przykład:

Aby wprowadzić elementy danych fragmentu sondy, w panelu drzewa należy wybrać opcję Fragment, a następnie użyć opcji Dodaj i Edytuj, aby wprowadzić i zdefiniować elementy danych w panelu edycji.

Edytor pakietu Probekit prezentujący wygląd elementów danych dla fragmentu

Informacje pokrewne
Źródłowy kod Java fragmentu sondy
Typy fragmentów sond