Перейти к основному содержимому

Удаленная отладка с IntelliJ IDEA

· 2 мин. чтения

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 мы создаем новую конфигурацию запуска для удаленной отладки:

./652836a0350e6e0a3c0bd2644d73cd1e.png

Теперь, когда наше приложение запущено, давайте начнем сеанс удаленной отладки, нажав кнопку « Отладка » .

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 .