«1. Введение
Удаленная отладка дает разработчикам возможность диагностировать уникальные ошибки на сервере или другом процессе. Он предоставляет средства для отслеживания раздражающих ошибок времени выполнения и выявления узких мест в производительности и поглотителей ресурсов.
В этом руководстве мы рассмотрим удаленную отладку с помощью JetBrains IntelliJ IDEA. Давайте сначала подготовим наше тестовое приложение, изменив JVM.
2. Настройка JVM
Мы будем использовать пример приложения планировщика Spring, чтобы легко подключаться и добавлять точки останова к регулярно запланированной задаче.
Кроме того, IntelliJ IDEA предоставляет параметры JVM как часть конфигурации:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
2.1. Параметры JVM
Помимо конфигурации Java Debug Wire Protocol (JDWP) — jdwp=transport=dt_socket — мы видим параметры сервера, приостановки и адреса.
Параметр сервера настраивает JVM в качестве цели для нашего отладчика. Параметр suspend указывает JVM ждать подключения клиента отладчика перед запуском. Наконец, параметр адреса использует подстановочный знак хоста и объявленный порт.
Итак, создадим приложение-планировщик:
mvn clean package
А теперь запустим приложение, включая параметр -agentlib:jdwp:
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \
target/gs-scheduling-tasks-0.1.0.jar
Откройте любой терминал и запустите команду. Запустив наше приложение, давайте теперь переключимся на IntelliJ.
3. Запуск конфигурации в IntelliJ IDEA
Далее в IntelliJ мы создаем новую конфигурацию запуска для удаленной отладки:
Теперь, когда наше приложение запущено, давайте начнем сеанс удаленной отладки, нажав кнопку «Отладка».
4. Удаленная отладка
Затем мы открываем файл ScheduleTask и ставим точку останова в строке 36, показанной здесь:
public void reportCurrentTime() {
log.info("The time is now {}", dateFormat.format(new Date()));
}
Поскольку задача выполняется каждые пять секунд, она остановится вскоре после добавления. В результате теперь мы можем пройти через все приложение.
При проблемах с запуском приложения мы меняем флаг приостановки на n и ставим точку останова в основном методе Application.
4.1. Ограничения
Иногда логирование и вывод сбивают нас с толку при удаленной отладке. Журналы не будут отправляться на консоль IDE, поэтому можно использовать внешний файл журнала и сопоставить его с IDE для более надежной отладки.
Также помните, что, хотя удаленная отладка является очень мощным инструментом, производственная среда не является подходящей целью для отладки.
5. Заключение
Как мы уже говорили в этой статье, удаленную отладку с помощью IntelliJ легко настроить и использовать, выполнив несколько коротких шагов.
Мы рассмотрели, как настроить JVM нашего приложения для отладки, а также некоторые ограничения этого важного инструмента в нашем наборе инструментов разработчика.
Пример приложения можно найти на GitHub.