Использование BTrace для поиска, когда класс создается впервые
Я пытаюсь использовать 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));
}
}
1 ответ
Решение
Вам нужно другое определение @OnMethod.
@OnMethod(clazz="/.*/", method="/.*/", location=@Location(value=Kind.NEW, clazz="javolution.xml.stream.XMLStreamWriterImpl"))
По сути, вы указываете, что хотите проверить все методы всех классов на наличие новых инструкций javolution.xml.stream.XMLStreamWriterImpl.
Остальная часть кода может остаться прежней.