2016-03-22 3 views
0

Я пытаюсь найти ответ на простой вопрос и пока не повезло.Использование загрузчика классов Java для получения трассировки стека

Возникает вопрос: can i use java class loader (implement a new class loader) to investigate the stack trace ?

Чтобы быть более точным,

Я говорю о scenerio, в котором я бегу тест на некоторый код, и я хочу использовать трассировку стека для того, чтобы определить, какой из тестовых классов запускает этот код? (Один способ смотреть на ближайший тест в трассировки стека)

другой авансовый идея, использовать загрузчик классов, чтобы найти ближайший «тестовый метод», который выполняется текущий код ..

Edit:

У меня нет доступа к тестам, которые запускают код или сам код. Вот почему я думаю о загрузчике классов. -> Я могу запустить загрузчик классов, но я не могу изменить код приложения или тестовый код приложения .. (вот почему я не могу использовать Thread.getStackTrace()).

+0

Его трудно понять, что вы просите. Вы спрашиваете, как определить класс, в котором находится раздел кода? –

+0

нормальная stacktrace должна уже рассказать вам о цепочке методов, которая называется – SomeJavaGuy

+0

. Посмотрите на http://stackoverflow.com/questions/1069066/get-current-stack-trace-in-java, это один из способов получить трассировка стека во время выполнения. – Philipp

ответ

1

Чтобы получить текущую трассировку стека, вы можете использовать метод Thread.getAllStackTraces() - он дает вам объект Map с потоками потоков. Вы можете сослаться на эту карту с помощью клавиши Thread.currentThread().

UPDATE

Если вам нужно смотреть стековые следы за пределами вашего хоста тестового приложения/вы можете просто использовать jstack Util, чтобы выяснить, какой именно поток выполняется целевой код.

Кроме того, вы можете использовать инструмент трассировки байтового кода, например BTrace. С помощью BTrace вы можете отслеживать вызовы методов из других методов. Пожалуйста, взгляните на это tutorial. Я думаю, вас особенно интересует часть, описывающая @ Местоположение использование параметра @OnMethod аннотация.

Смежные вопросы