片段的資料項目是指片段的程式碼可參照的資料項目名稱和類型。
資料項目的規格是選用的。一個片段可以包含多個資料項目,但每一種項目只能出現一次。
內容 | 說明 |
---|---|
資料類型 | 必要的項目。下表將列出可用的類型。 |
名稱 | 必要的項目。必須指定一個有效的 Java 變數名稱。探測片段程式碼會利用這個名稱來參照指定的資料。 |
資料類型 | 類型 | 說明 |
---|---|---|
className | String | 以 Method 探測而言,指被探測方法的類別名稱,包括套件名稱,以內部格式表示;以 Callsite 探測而言,指被呼叫方法的類別名稱。 範例:org/eclipse/tptp/SomeClass |
methodName | String | 以 Method 探測而言,指被探測方法的方法名稱,以內部格式表示;以 Callsite 探測而言,指被呼叫方法的方法名稱。 建構子的方法名稱是 <init>,static 類別起始設定程式的方法名稱是 <clinit>。 |
methodSig | String | 方法引數和傳回類型簽章,採內部格式。不適用於 staticInitializer 片段。 範例:(Ljava/lang/String;)I |
thisObject | Object | 傳給被探測方法的 this 物件(用於實例方法)。不適用於 staticInitializer 片段。 對於 static 方法、套用至建構子的 entry 片段, 以及建構子擲出異常狀況時套用至建構子的 exit 片段,thisObject 為 null。 |
args | Object[] | Object 參照的陣列,代表被探測之方法的引數。對於方法的每一個引數(this 引數不算)來說,這個陣列有一個元素。初始類型的引數會封裝在適當參照類型的暫時物件中, 例如:int 封裝成 Integer。如果方法沒有引數,則 Object[] 陣列的大小為零。 請注意,非 Static 內部類別的建構元,它在每一個「內部」層都有一個隱藏式引數, 因此,引數陣列所含的元素,要比程式碼所含的元素更多。不適用於 staticInitializer 片段。 |
returnedObject | Object | 即將傳回之物件的參照。這個類型僅適用於 exit 和 afterCall 片段。如果被探測方法的傳回類型是初始類型,則傳回值一定是適當參照類型的暫時物件。如果方法是 void(不傳回值)或隨著異常狀況而結束,則 returnedObject 是 null。 |
exceptionObject | Throwable | 即將擲出之異常狀況物件的參照。這個類型只適用於 catch 和 exit 片段。如果方法正常結束,則 exceptionObject 將為 null。 |
isFinally | boolean | 為一旗標,可指出片段是從 finally 子句 (true) 呼叫, 還是從 catch 子句 (false) 呼叫。它只適用於 catch 片段。 |
staticField | (varies) | 靜態欄位所參照的物件。其類型與 staticField 物件所宣告的一樣。這僅適用於探測宣告 staticField 的情況。(請參閱 staticField 和 staticInitializer 探測範例。) 它不適用於 Callsite 探測。 |
classSourceFile | String | 程式檔名稱資訊,可從類別檔的除錯屬性取得。如果沒有程式碼資訊,則 classSourceFile 為 null。對於 Java 而言,該值只不過是檔案名稱,並沒有路徑資訊。它不適用於 Callsite 探測。 |
methodNames | String | 編碼的方法名稱和簽章清單。這份清單中的方法順序,與 methodLineTables 中的方法順序一樣, 也與 methodNumber 資料項目所反映的順序一樣。清單中不含 Probekit 在類別內插入的任何方法的名稱。 methodNames 字串是由一或多個方法名稱和簽章所組成,中間以一個加號 ("+") 區隔。方法簽章是採 Java 內部格式。例如,假設類別有兩個方法、一個預設建構子及一個需要 String 且傳回 int 的 run 方法, 則類別有這個 methodNames 字串:<init>()V+run(Ljava/lang/String;)I 它不適用於 Callsite 探測。 |
methodLineTables | String | 編碼的行號清單,這些行號各自對應到類別中的每一個程式碼執行單元。清單中不含 Probekit 在類別內插入的執行單元。如需編碼的說明,請參閱 methodLineTables 資料字串格式。它不適用於 Callsite 探測。 |
methodNumber | Integer | methodNames 表中的索引號碼,代表片段被插進的方法。不適用於 Callsite 探測或 staticInitializer 片段。 |
executableUnitNumber | Integer | 探測片段被插進的執行單元數目。這個資料類型僅適用於 executableUnit 和 catch 探測片段。如果方法沒有程式碼指令行資訊,則只會有一個編號為零的執行單元。 |
若要輸入探測片段資料項目,請在樹狀窗格中選取片段, 在編輯窗格中使用新增和編輯來輸入並定義資料項目。