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.
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. |
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). |
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.