探针段类型

您定义的每个段都需要一个类型指定。类型指示何时将在目标方法中运行段。一个探针可以包含多个段,但不能包含任何给定类型的多个段。

下表列示和描述了段类型,并且指示了该类型是可用于方法探针还是可用于调用位置探针。(例如,要了解方法探针与调用位置探针之间的差别,请参阅方法探针与调用位置探针。)
段类型 方法或调用位置 描述
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 段的代码将在 entrycatch 段的代码之后运行。有一种情况是,如果存在 entry 段,则它将总是在其他类型的段之前运行。

不能将方法段和调用位置段混用在单个探针中,但在同一 Probekit 源文件(probe 文件)中可以同时具有方法探针和调用位置探针。

示例:

要指定段类型,在“探针”页的树窗格中选择条目,并从编辑窗格的“段类型”列表中选择一个段类型。

突出显示了“段类型”选项的 Probekit 编辑器

提供了有关下列探针段类型的其他信息:
相关参考
探针段 Java 源代码
探针段数据项