3

我正在尝试使用 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));
    }
}
4

1 回答 1

3

您需要不同的@OnMethod定义。

@OnMethod(clazz="/.*/", method="/.*/", location=@Location(value=Kind.NEW, clazz="javolution.xml.stream.XMLStreamWriterImpl"))

基本上,您指定要检查所有类的所有方法是否出现新的 javolution.xml.stream.XMLStreamWriterImpl指令。

其余代码可以保持不变。

于 2013-02-13T13:59:48.087 回答