此示例演示如何使用 FragmentAtClassScope 探针段。
在此示例中,探针对与“com.sample*”通配符模式相匹配的包中的所有类创建过的实例数进行计数,并且每创建 100 个实例就报告一次。
“类作用域中的段”声明一个计数器,该计数器作为 entry 段编译成的类中整型静态字段出现。该段还对 fragment 类声明静态初始化方法,该类报告已装入探针。注意,fragmentAtClassScope 部分中的项被构建到生成的探针类而不是探针所应用的类中。要将静态字段或静态初始化方法逻辑插入到探针所应用的类中,使用 staticField 和 staticInitializer 对象。
要使用此示例代码,更改 target 对象中的 package="com.sample*" 以引用实际的包名。
注意,要在 XML 中使用字符 & 和 <,必须指定字符实体 & 和 <,如示例中所示。
<?xml version="1.0" encoding="ASCII"?>
<probekit>
<probe>
<fragmentAtClassScope>
static public int entry_counter = 0;
static int counter = 0;
static { System.out.println("[fragmentAtClassScope sample probe has loaded.]"); }
</fragmentAtClassScope>
<target type="include" package="com.sample*" method="<init>" />
<target type="exclude" package="*" />
<fragment type="entry">
<code>
++counter;
if (counter % 100 == 0)
System.out.println("[" + counter + " instances of classes in com.sample package so far]");
</code>
</fragment>
</probe>
</probekit>
上级主题:Probekit 示例