Есть ли программа, которая может сказать вам, какой класс / метод вызывается - PullRequest
2 голосов
/ 08 декабря 2010

Я работаю над очень большим проектом java / servlets / web, и мне трудно найти, какие классы и методы вызывается иногда требуются часы, чтобы найти правильный класс. есть ли приложение или плагин или методика, которая немного помогает? я использую затмение.

edit: я использую apache и tomcat

Ответы [ 4 ]

2 голосов
/ 08 декабря 2010

Что касается вашего комментария к ответу Bozhos: используйте профилировщик на вашем экземпляре сервера.Вы начинаете профилирование прямо перед тем, как нажмете на ссылку в своем клиентском приложении («браузер») и остановитесь сразу после получения правильного ответа.Затем просто изучите журналы / представления профилировщика, чтобы выяснить, что на самом деле происходит на сервере.

* * * * * * * * * * * * * * * * * * * * * * * 1004

1 голос
/ 08 декабря 2010

Из вашего комментария к ответу Бхозо я заключаю, что вы имеете в виду НЕ во время разработки, а во время выполнения.

Я предлагаю вам подключить отладчик к вашему приложению и приостановить его.Затем вы можете проверить колл-стэк в это время, что обычно дает вам представление, где искать.

Для этого запустите ваше Java-приложение со следующими настройками:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

Затемв eclipse добавьте отладочную конфигурацию для «remote» в порт 8787 и выполните ее.Ваш отладчик теперь связан с вашим приложением.Поместите eclipse в перспективу отладки.

Теперь щелкните ссылку в своем приложении и сразу же нажмите кнопку паузы в отладчике.Теперь вы можете увидеть стек вызовов.Обычно, когда у вас есть подсказка, вы можете быстро найти хорошие места для установки точек останова.Но эта техника поможет вам понять:)

1 голос
/ 08 декабря 2010
  • CTRL + ALT + H, или щелкните правой кнопкой мыши> открыть иерархию вызовов (при объявлении метода), и вы получите всех вызывающих, их вызывающих и т. Д.Вы также можете изменить иерархию

  • Щелкните правой кнопкой мыши> ссылки> проект, чтобы указать, где используется данный класс.

0 голосов
/ 08 декабря 2010

Возможно, вы захотите рассмотреть использование AOP для добавления аспекта трассировки / ведения журнала в определенные части вашего кода.Таким образом, вам не нужно обновлять свой код, и вы можете просто написать аспект, в котором записывается строка для каждого метода, который вызывается, например, с именем метода, класса и параметров.Этот аспект, конечно, можно «отключить» при сборке рабочей версии, чтобы предотвратить регистрацию трассировки на рабочих машинах.Если вы знакомы с AOP, вы можете легко настроить аспект и контрольные точки, чтобы, например, регистрировать вызовы только определенных методов в ваших классах контроллера или что-то в этом роде.

Если вам нужна дополнительная информация об этомРешение, не стесняйтесь комментировать этот ответ, запрашивая более конкретную информацию или просто Google для AOP и регистрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...