2012-05-12 5 views
5

Есть ли способ, чтобы я мог записывать/записывать/контролировать/просматривать каждое выполнение метода внутри Java-программы.Записать выполнение каждого метода

Например:

12:30:12 someMethod("argument") 
12:30:12 anotherMethos(1, 2, 3) 
12:30:13 finalMethod("invalidInputHere1234") 
+1

Просмотрите эту статью: http://extranet.ipl.be/OOMADB/document/IPL_cours/COO/logging-at-loadingTime.htm – ChristopheD

+1

http://stackoverflow.com/questions/4823557/java- logging-method-calls & http://stackoverflow.com/questions/4653013/is-there-an-aspect-already-written-and-tested-well-for-trace-logging – assylias

+0

использовать профилировщик <> – bestsss

ответ

3

Easy ответ: изменить метод, и вставить заявление протоколирования.

Несколько более сложный ответ, который работает, даже если вы не можете изменить метод: посмотрите на аспектное программирование.

+0

Я хочу чтобы отслеживать сотни методов, поэтому они не могут действительно изменить каждый из них. Нет ли способа контролировать выполнение Java-программы для просмотра запущенных методов? Я знаю, что я могу использовать NetBeans для отслеживания значения переменной - как насчет того, какие методы были выполнены? – jSherz

+2

Взгляните на [эту статью] (http://mathewjhall.wordpress.com/2011/03/31/tracing-java-method-execution-with-aspectj/) – Amadan

2

Без изменения кода вы можете использовать отладчик или профилировщик, способный записывать любое изменение состояния, например Chronon time travelling debugger.

1

Вы можете записать программу, а затем воспроизвести его с Chronon

0

Вы можете использовать @Loggable аннотацию из jcabi-aspects, который оборачивает все методы, которые вы хотите отлаживать с помощью простого механизма регистрации:

@Loggable(Loggable.DEBUG) 
public String load(URL url) { 
    return url.openConnection().getContent(); 
} 

Он регистрируется через SLF4J.

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