Отдалечено отстраняване на грешки с IntelliJ IDEA

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 като цел за нашия дебъгер. Параметърът за спиране казва на 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 и поставяме точка на прекъсване в основния метод на приложението.

4.1. Ограничения

Понякога регистрирането и извеждането ни объркват при дистанционно отстраняване на грешки. Регистрационните файлове няма да бъдат изпращани до IDE конзолата, така че външен регистрационен файл може да бъде използван и картографиран в IDE за по-стабилна способност за отстраняване на грешки.

Също така не забравяйте, че докато дистанционното отстраняване на грешки е много мощен инструмент, производствената среда не е подходяща цел за отстраняване на грешки .

5. Заключение

Както разгледахме в тази статия, дистанционното отстраняване на грешки с IntelliJ е лесно да се настрои и използва в няколко кратки стъпки.

Разгледахме как да конфигурираме нашето приложение JVM за отстраняване на грешки, както и някои ограничения на този важен инструмент в нашата кутия с инструменти за разработчици.

Примерното приложение може да бъде намерено в GitHub.