Рубрики
Без рубрики

Как выполнить удаленную отладку в IntelliJ

Милан Бхардвадж – коллега и специалист по разработке программного обеспечения AI /ML с богатым опытом sol… С пометкой tutorial, java.

Милан Бхардвадж – коллега и специалист по разработке программного обеспечения AI/ML с богатым опытом решения реальных задач с помощью масштабируемых решений. Он руководил многими циклами разработки от начала до завершения и написал это экспертное и хорошо продуманное руководство по удаленной отладке в средах IntelliJ .

Отладка – один из наиболее важных аспектов циклов разработки программного обеспечения. Разработчики используют его не только для поиска и исправления ошибок, но и для выявления потенциальных проблем с производительностью в коде. Умение отлаживать – это основной навык, которым должен обладать каждый разработчик, чтобы предоставлять ценные масштабируемые решения.

Для приложений, запущенных на удаленных серверах и компьютерах, разработчики обращаются к удаленной отладке, чтобы выявить проблемы, которые невозможно создать локально. Например, вы можете запустить меньший экземпляр вашей базы данных локально для тестирования, но при загрузке в рабочую среду могут возникнуть ошибки, связанные с большими наборами данных . Или вы можете не использовать те же разрешения и ограничения брандмауэра при локальной разработке, что и в рабочей среде. Это может привести к ошибкам, которые невозможно воспроизвести локально без значительных инвестиций в инструментарий.

С помощью удаленной отладки вы можете удаленно управлять целевым объектом, используя экземпляр отладчика, запущенный на другом компьютере. Экземпляр отладчика, также называемый механизмом отладки, выполняется на том же компьютере, что и отлаживаемая процедура. На вашем локальном компьютере запускается пользовательский интерфейс отладчика, в то время как удаленная система запускает как механизм отладки, так и целевую процедуру.

Удаленная отладка особенно полезна по нескольким причинам:

  • Управление потоком выполнения: Очень важно, чтобы разработчики понимали контекст ошибки по мере ее проявления, и удаленная отладка позволяет это с помощью таких функций, как приостановка, возобновление и пошаговое выполнение программы.
  • Отладка в производственных средах: Устранение неполадок на удаленных тестовых и производственных серверах – непростая задача. Запуск отладчика непосредственно на сервере, на котором запущено приложение, имеет свой собственный набор ограничений. Производственные серверы обычно работают в строгих средах, где отсутствуют удобные инструменты разработчика. Удаленная отладка – это идеальное решение.
  • Поддержка нескольких сценариев развертывания: Разработчики могут отлаживать различные сложные сценарии развертывания, от одного автономного приложения до распределенных приложений и кластеров.

Удаленная отладка на практике

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

В этом руководстве вы увидите, как настроить удаленную отладку вкл IntelliJ таким образом, вы можете эффективно отлаживать приложения, развернутые на промежуточных и производственных машинах, когда это необходимо.

Настройка удаленной отладки в IntelliJ

JetBrains IntelliJ – одна из самых интеллектуальных интегрированных сред разработки (IDE), используемая более чем 62 процент разработчиков Java . Он предлагает разработчикам готовые функции отладки Java, которые облегчают эффективные и устойчивые решения.

Создание нового проекта и класса

Первым шагом является правильная настройка и настройка вашего Java project в IntelliJ. Если вы раньше не настраивали Java-программу, прочитайте документацию IntelliJ , чтобы понять, как вы можете создать и настроить новый Java-проект.

Чтобы продемонстрировать удаленную отладку, создайте новый класс. Нажмите src на боковой панели наведите курсор на/| Создать , затем нажмите Класс Java . Для этого примера мы создадим класс с именем My_Numbers .

После того, как вы создали класс Java, пришло время написать некоторый код. Заполните метод Main приведенным ниже примером:

public class My_Numbers { public static void main(String[] args) { System.out.println("Initiating"); for (int num = 0; num < 100; num++) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(num); } System.out.println("Done"); } }

Этот код является базовым примером, который выводит числа от 0 до 100. Хотя это простой пример, его будет достаточно, чтобы продемонстрировать удаленную отладку, не добавляя слишком много сложностей. Вы добавите [( https://www.jetbrains.com/help/idea/using-breakpoints.html )debug точка останова] на последующих этапах.

Настройка Удаленной Отладки

Теперь, когда у вас есть готовый проект Java и тестовый класс, вам нужно настроить конфигурацию отладки в IntelliJ. Перейдите к Запустите , затем Отредактируйте конфигурации . Нажмите Добавить новую конфигурацию (+) и выберите Удаленная отладка JVM .

Заполните следующую информацию, чтобы описать вашу среду удаленной отладки:

  • Имя: В данном случае My_Numbers_remote_debug |/. Хост: Это поле предназначено для адреса компьютера, на котором будет запущено приложение хоста. Поскольку в этом примере мы работаем на одном сервере, он должен быть
  • localhost , но если вы хотите отладить удаленный сервер (например, 192.168.18.46 ), вы должны ввести здесь IP-адрес. Порт:
  • 5005 в данном случае. Этот порт должен быть доступен, поэтому выберите тот, который поддерживает ваш сервер. Аргументы командной строки: Вы можете скопировать сгенерированные аргументы командной строки и вставить их в командную строку, где активна JVM. Вы можете скопировать строку прямо сейчас (например, –
  • agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005) и сохраните его для последующего использования.

Теперь IntelliJ знает, где получить доступ к вашему удаленному (или локальному) приложению для отладки, но вам все равно нужно упаковать и запустить Java-приложение, чтобы войти в сеанс отладки.

Запуск приложения

Настройте хост-приложение, упаковав ваше приложение в JAR и используя ранее сгенерированную строку аргументов непосредственно в командной строке.

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 remote-debug-application-sample.jar

Далее нажмите кнопку Запустите , затем Отредактируйте конфигурацию , затем выберите My_Numbers из Application .

В Изменить параметры выберите Добавить параметры виртуальной машины .

В поле Параметры виртуальной машины вставьте строку аргумента, которую вы скопировали ранее.

После выполнения необходимых настроек вы готовы к запуску приложения. Щелкните правой кнопкой мыши в текстовом редакторе и выберите Запустите My_Numbers.main() .

В выводе программы вы увидите Прослушивание транспортного dt_socket по адресу: 5005 , за которым следует вывод вашего приложения. В первой строке указывается, что агент отладки активен и программа готова принимать входящие подключения отладчика.

Добавление точки останова

Теперь, когда ваша Java-программа запущена, вы можете добавить точку останова и присоединить ее к процессу. Точки останова позволяют вам установить место в коде, где выполнение будет приостановлено, чтобы вы могли проверить память, переменные и состояние вашей программы.

Вы можете установить точку останова линии, нажав на желоб на выбранной вами линии. В этом примере щелкните строку 10 и установите точку останова с условием num . Программа приостанавливается, как только условие точки останова удовлетворяет условию.

На этом этапе вы можете выполнить соответствующие действия по отладке, включая вычисление выражений и пошаговое выполнение, среди других задач. Эти действия будут работать независимо от того, работаете ли вы локально на своем компьютере или подключаетесь к удаленному экземпляру вашего Java-приложения.

Нельзя отрицать, что с распределенными приложениями стало проще управлять, масштабировать и распределять рабочую нагрузку. Однако архитектура значительно затрудняет обнаружение/воспроизведение ошибок, поскольку сложно отследить аномалии до источника или воспроизвести сложные производственные среды. Удаленная отладка с помощью IntelliJ может помочь разработчикам выявлять ошибки и воспроизводить ошибки на каждом этапе жизненного цикла развертывания программного обеспечения.

Оригинал: “https://dev.to/eyalk100/how-to-debug-remotely-in-intellij-11o8”