Использование 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.

Остальная часть кода может остаться прежней.

Другие вопросы по тегам