Fragment 探針物件

Fragment 探針物件是探針的邏輯規格。其中包含將會被執行的 Java 程式碼。

需要至少一個 Fragment 物件。它包含 Code 物件,以及 Code 物件中的程式碼所參照的所有資料項目。探針可以包含多個 Fragment 物件,但是兩個 Fragment 物件不能有相同的 type

Fragment 物件包括下列內容︰
內容 說明
type 必要。如果是方法探針,它必須為 entryexitcatchstaticInitializerexecutableUnit。如果是 Callsite 探針,它必須為 beforeCallafterCall。您不能在單一探針中混合使用方法片段和 Callsite 片段。
下表列出及說明片段類型,並指出可使用於哪種探針類型︰
片段類型 探針類型 說明
entry 方法 entry 片段是在方法進入時執行。對於 Probekit 所插入類別中的方法,將不會執行 entry 片段。
exit 方法 exit 片段是在方法結束時執行;可能是正常結束(當方法擲出異常狀況),或是擲出的異常狀況傳送到方法之外。對於 Probekit 所插入類別中的方法,將不會執行 exit 片段。
catch 方法 catch 片段是在方法中的 catch 子句開頭執行,或是在執行為異常狀況結果的 finally 子句開頭執行。
staticInitializer 方法 staticInitializer 片段在每個探測類別的類別起始設定程式內執行。如果類別還沒有靜態起始設定程式,將會建立起始設定程式。如果需要詳細資訊,請參閱 staticInitializer 探針片段
executableUnit 方法 executableUnit 片段是在符合探針的目標和過濾條件規格並且有程式碼的方法中的每一個可執行程式碼單元之前執行。如果方法沒有指令行資訊,將會出現為單一可執行單元,編號為零。如果需要詳細資訊,請參閱executableUnit 探針片段
beforeCall Callsite beforeCall 片段是先在呼叫方法中執行,緊接著才呼叫目標方法。對方法探針無效。
afterCall Callsite afterCall 片段是在目標方法結束之後,立即在呼叫端方法中執行;有可能是正常結束,或是當目標方法擲出異常狀況時。對方法探針無效。
Notes:
  • 當探針套用到宣告為 synchronized 的方法時,entryexitexecutableUnit 片段中的程式碼不保證在多重執行緒同時執行的情況下可以受到保護。例如,entry 片段和最先的一些 executableUnit 片段可能會在方法同步化邏輯取得鎖定之前執行,而 exit 片段可能在釋放鎖定之後執行。
  • 探針可以有多重片段套用到方法中的相同位置;例如,entry 片段和第一個 executableUnit 位置。另一個範例是 catch 片段與其相關聯的 executableUnit 位置,因為異常狀況處理 catch 子句一定代表新的可執行單元的開始。在這些情況下,executableUnit 片段的程式碼將在 entrycatch 片段的程式碼之後執行。因此 entry 片段(如果有的話)一定會在其他種類的片段之前執行。
範例
<fragment type="entry"> 
   <data . . . />
   <code>
      . . . 
   </code>
</fragment>

內含於
Probe 物件

上層主題: Probekit 元素參照

相關參考
Probekit 範例
executableUnit 探針片段
staticInitializer 探針片段

Terms of use | Feedback
(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved.