2013-07-16 4 views
10

В настоящее время я разрабатываю Java Agent, чтобы облегчить динамическое оснащение новых и старых приложений Java.Отладка агента Java

Мне пришло в голову, что в отношении отладки IDE Java-агенты могут быть, пожалуй, рассмотрены как частный случай, поскольку они должны быть введены в целевой JVM-процесс для запуска. Это, естественно, порождает вопрос о том, как можно было бы отлаживать, тестировать и профилировать приложение типа агента.

Беглый поиск существующих решений показал несколько вариантов на основе командной строки (т. Е. YourKit, JIP и т. Д.), Однако многие из них ТАКЖЕ Java-агенты под капотом. Которая, если она будет использована, приведет, по крайней мере, на мой взгляд, к довольно странному сценарию отладки/профилирования агента другим агентом. Я знаю, что агенты могут быть сложены в иерархическом порядке, однако я не уверен, что Agent Applications можно отладить, уложив агентов в эту усадьбу.

ответ

8

Как указано в Java How To ... The -javaagent: Option:

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

Название вводит в заблуждение, поскольку агент слова обычно предлагает что-то работающее удаленно и отдельно от первичного объекта. Но получается, что агент java используется в -javaagent: намного проще , чем это.

Одно приложение Java может иметь любое количество агентов, используя -javaagent: option любое количество раз. Агенты вызывается в том же порядке, который указан в опциях.

Каждый агент может также принимать аргументы, ориентированные на строки. Я думаю, что это причина , почему мы должны использовать эту опцию несколько раз для нескольких агентов. В противном случае, мы могли бы просто сделать что-то вроде:

-javaagent agent1.jar:agent2.jar 

, что неверно.

Итак, разместив агент профилирования (например, YourKit, JIP и т. Д.), Прежде чем ваш собственный агент предоставит вам контроль отладки.

+1

Вы скопировали большую часть своего сообщения без атрибуции из [Java How To ... The -javaagent: Option] (http://javahowto.blogspot.nl/2006/07/javaagent-option.html). – Virtlink

+0

Я уже предоставил ссылку в тексте (с самого начала), поэтому я не понимаю. Каково ваше предложение? –

+0

@MohammadDashti - Проще говоря, ссылка на ваш пост неприемлема для атрибуции. Вы * должны * помещать любую скопированную формулировку в блочные цитаты и четко определять, где она была скопирована. Я сделал это в приведенном выше. –

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