Научите, как использовать IntelliJ IDEA для удаленной отладки.

Spring Boot Java

1. Введение

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

2. Удаленная отладка

Конечно, есть решение — удаленная отладка. Удаленная отладка позволяет разработчикам напрямую диагностировать проблемы на серверах или других онлайн-процессах. Она дает возможность отслеживать онлайн-ошибки выполнения и выявлять узкие места в производительности и основные причины. Она позволяет отлаживать удаленные серверы, как если бы они выполняли отладку локально. Далее мы будем использовать популярную Java IDE от JetBrains.IntelliJ IDEAдля удаленной отладки. Чтобы код, работающий на удаленном сервере, мог поддерживать удаленную отладку, он должен быть запущен с определенными параметрами JVM.Эти параметры:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}

вdebug_portЭто порт отладки, открытый сервером, который будет использоваться в последующей локальной конфигурации.

3. Удаленная отладка с помощью IDEA

IntelliJ IDEAУдаленная отладка не сложна и может быть легко настроена с помощью следующих шагов.

3.1 Конфигурация локальных параметров

Откройте панель конфигурации и создайте новую в соответствии с положением, показанным выше.RemoteПанель отладки выглядит следующим образом:

В соответствии с порядком, показанным на рисунке выше, поочередно настройте собственный сервер и локальную среду, а затем нажмите кнопку ОК. Среди них порты 2 и 4 обозначены нашим удаленнымdebug_portНомер порта.

3.2 Протокол JDWP

Вот небольшая точка знаний, которая находится в параметреjdwp. Так что жеjdwp?

JDWP — это аббревиатура от Java Debug Wire Protocol, которая определяет протокол связи между отладчиком (debugger) и целевой виртуальной машиной (target vm). Java-программа, которую мы хотим отладить, запускается в целевой виртуальной машине, которая ничем не отличается от обычной работающей JVM, за исключением того, что агент JDWP загружается при запуске для выполнения функции отладки. Отладчик — это наш локальный отладчик, который отправляет инструкции работающей целевой виртуальной машине, чтобы получить состояние выполнения целевой виртуальной машины и контролировать выполнение удаленной программы Java. Отладчик и целевая виртуальная машина работают в своих собственных процессах и взаимодействуют друг с другом через протокол связи JDWP.

3.3 Включить удаленную отладку

Нажмите на стрелкуКнопка зеленого жука (сочетание клавиш Shift + F9)Запустите отладку, а затем установите точку останова локального кода, чтобы удаленная логика могла инициировать логику точки останова для выполнения отладки точки останова.

Пожалуйста, убедитесь, что локальный код отладки точно такой же, как удаленный развернутый код, и никакие изменения не могут быть внесены! В противном случае точка останова не будет достигнута!

4. Некоторые моменты

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

Также помните, что, хотя удаленная отладка является очень мощным инструментом, это не панацея! Рабочая среда не является подходящей целью для отладки, не злоупотребляйте ею!

5. Резюме

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

关注公众号:Felordcn获取更多资讯

Личный блог: https://felord.cn