2013-01-25 21 views
2

我想使用BTrace來查找某個類型是否在我的程序中第一次實例化(Eclipse調試器無法找到它),因爲我是看到一些奇怪的行爲(Javolution XMLStreamWriterImpl在它甚至被創建之前以某種方式將元素添加到我的XML中)。使用BTrace找到什麼時候第一次創建類

無論如何,我通過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)); 
    } 
} 

回答

2

你需要一個不同的@OnMethod定義。

@OnMethod(clazz="/.*/", method="/.*/", [email protected](value=Kind.NEW, clazz="javolution.xml.stream.XMLStreamWriterImpl")) 

基本上你指定要檢查所有類的所有方法的新javolution.xml.stream.XMLStreamWriterImpl指令的出現。

其餘代碼可以保持不變。

+0

太好了,非常感謝! – MeanwhileInHell

+0

clazz參數是否可以動態獲取類名? – flash

相關問題