我正在尝试使用BTrace查找何时在程序中首次实例化某种类型的时间(Eclipse调试器无法找到它),因为我看到了一些奇怪的行为(Javolution XMLStreamWriterImpl在某种程度上向我的XML添加了元素它甚至应该已经创建)。
无论如何,我有以下通过JVisualVM使用的方法,但是运行时没有任何显示。
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
import java.lang.String;
@BTrace
public class ClassLoad {
@OnMethod(clazz = "javolution.xml.stream.XMLStreamWriterImpl", method = "<init>", location = @Location(value=Kind.NEW))
public static void site(@ProbeMethodName(fqn=true) String caller) {
println(strcat("Called from @", caller));
}
}
最佳答案
您需要一个不同的 @OnMethod 定义。
@OnMethod(clazz="/.*/", method="/.*/", location=@Location(value=Kind.NEW, clazz="javolution.xml.stream.XMLStreamWriterImpl"))
基本上,您指定要检查所有类的所有方法,以查看是否出现新的javolution.xml.stream.XMLStreamWriterImpl指令。
其余代码可以保持不变。