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
— мы видим параметры server
, suspend
и address
.
Параметр сервера
настраивает 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 .