среда, 16 ноября 2016 г.

Отладка Java приложений на удаленной машине


При разработке Java приложений иногда возникают ошибки, которые сложно или долго воспроизвести локально, на рабочей машине. В таких ситуациях можно воспользоваться специальным протоколом связи между отладчиком и виртуальной машиной Java. Называется этот протокол Java Debug Wire Protocol (JDWP) и его поддержка реализована в IntelliJ IDEA и Eclipse.


Далее я покажу как настроить отладку удаленного приложения в популярных Java IDE.



Настройка IntelliJ IDEA для отладки удаленного приложения


1. Откройте проект в IDE

2. В меню выберите Run -> Edit Configurations


3. Создаем новую конфигурацию (нажимаем +), выбираем Remote


4. Копируем аргументы для JVM, указываем адрес удаленной машины

5. Запускаем Java приложение с указанными настройками

$ java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar application.jar


6. В идее ставим брейкпоинт и запускаем Remote конфигурацию


7. Пользуемся дебагером :)


Настройка Eclipse для отладки удаленного приложения


1. Запускаем проект
2. В меню выбираем Run -> Debug Configurations -> Remote Java Application
3. В настройках указываем Connection Type: Standart (Socket Attach), Host, Port: 5005
4. Запускаем Java приложение c настройками JVM для JDWP:

$ java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar application.jar


5. Пользуемся отладчиком

Важно!

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

Комментариев нет:

Отправить комментарий