【问题标题】:Using BTrace to find when a class is created for the first time使用 BTrace 查找第一次创建类的时间
【发布时间】:2013-01-25 10:55:45
【问题描述】:

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

【问题讨论】:

    标签: java javolution btrace


    【解决方案1】:

    您需要一个不同的 @OnMethod 定义。

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

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

    其余代码可以保持不变。

    【讨论】:

    • clazz参数可以动态取类名吗?
    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多