定义的每个段都需要指定 type。type 表明段何时将在目标方法中运行。一个探针可以包含多个段,但是不能包含任何给定类型的多个段。
段类型 | 方法或调用位置 | 描述 |
---|---|---|
entry | 方法 | entry 段在方法进入时运行。对于由 Probekit 插入到类中的方法,将不会运行 entry 段。 |
exit | 方法 | exit 段在方法退出时运行(无论是正常退出、方法抛出异常时退出还是抛出的异常传播到方法外部时退出)。对于由 Probekit 插入到类中的方法,将不会运行 exit 段。 |
catch | 方法 | catch 段在方法中的 catch 子句的开头运行,或者在由于发生异常而运行的 finally 子句的开头运行。 |
staticInitializer | 方法 | staticInitializer 段在每个探测类的类初始化方法中运行。如果类还没有静态初始化方法,则将创建一个。有关更多信息,请参阅 staticInitializer 探针段类型。 |
executableUnit | 方法 | executableUnit 段在符合下列条件的方法中的代码的每个可执行单元之前运行:符合探针的目标和过滤器规范并且为其提供了源代码。如果该方法没有源代码行信息,则它将显示为具有单个可执行单元,编号为零。有关更多信息,请参阅 executableUnit 探针段类型。 |
beforeCall | 调用位置 | 刚好在调用目标方法之前在调用方法中运行 beforeCall 段。对于方法探针无效。 |
afterCall | 调用位置 | 在目标方法退出(无论是正常退出还是当目标方法抛出异常时退出)之后立即在调用方法中运行 afterCall 段。对于方法探针无效。 |
一个探针可以具有应用于方法中的同一位置的多个段;例如,entry 段和第一个 executableUnit 位置。另一个示例是 catch 段及其相关联的 executableUnit 位置,因为用于异常处理的 catch 子句总是表示新的可执行单元的开始。在这些情况下,executableUnit 段的代码将在 entry 或 catch 段的代码之后运行。一种结果是,如果存在 entry 段,则它将总是在其它类型的段之前运行。
不能将方法段和调用位置段混用在单个探针中,但是在同一个 Probekit 源文件(probe 文件)中可以同时具有方法探针和调用位置探针。
要指定段类型,在“探针”页面的树窗格中选择段条目,然后从编辑窗格中的“段类型”列表中进行选择。