Додайте відладчик IntelliJ IDEA до запущеного процесу Java


237

Чи можливо приєднати відладчик IntelliJ IDEA до запущеного процесу Java? Якщо так, то як?


3
Звичайно. Потрібно створити конфігурацію запуску / налагодження "Віддалений". Більше тут
Вік

2
Гм, ці аргументи командного рядка ЧИТАТИ ТОЛЬКО станом на 14.0.2. Ви можете відредагувати лише пару з них, що не допоможе вирішити проблему в цьому питанні. Будь-яка ідея, як це виправити?
nuzzolilo


Відповіді:


372

Так! Ось як ви це налаштували.

Запустити конфігурацію

Створіть конфігурацію віддаленого запуску:

  1. Запустити -> Редагувати конфігурації ...
  2. Клацніть "+" у верхньому лівому куті
  3. Виберіть варіант "Віддалений" на самій лівій панелі
  4. Виберіть ім'я (я назвав шахту "віддаленою налагодженням")
  5. Натисніть "ОК", щоб зберегти:

введіть тут опис зображення

Параметри JVM

Наведена вище конфігурація містить три поля лише для читання. Це варіанти, які повідомляють JVM відкрити порт 5005 для віддаленої налагодження під час запуску програми. Додайте відповідний параметр до параметрів JVM програми, на якій ви налагоджуєте. Один із способів зробити це було б так:

export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

Але це залежить від способу запуску програми. Якщо ви не впевнені, яке з трьох стосується вас, почніть з першого і спустіться зі списку, поки не знайдете той, що працює.

Ви можете змінити suspend=nнаsuspend=y змусити вашу програму чекати, поки ви підключитесь з IntelliJ до її запуску. Це корисно, якщо точка запуску, яку ви хочете натиснути, виникає при запуску програми.

Налагоджувати

Запустіть програму так, як зазвичай, а потім у IntelliJ виберіть нову конфігурацію та натисніть «Налагодження».

введіть тут опис зображення

IntelliJ підключиться до JVM та ініціює віддалену налагодження.

Тепер ви можете налагоджувати програму, додаючи кращі точки до свого коду, де потрібно. Вихід програми все ще з’явиться там, де раніше це робилося, але ваші точки перерви потраплять в IntelliJ.


2
Параметр "Віддалений" відсутній у моєму Intellij IDEA 15.0.2 на mac os el capitan. Як я можу отримати такий варіант?
користувач674669

@ user674669 Я не впевнений. Можливо, Remoteйого немає у спільноті? Я використовую платну версію. Чи може хтось із спільноти видання підтвердити?
Cory Klein

@CoryKlein Чи знаєте ви, як захопити вихід з System.out.printlnIntelliJ при віддаленій налагодженні?
Дон Роммі

1
@DonRhummy Якщо ви зрозумієте, як я, я би радий додати цю інформацію до цієї відповіді, але AFAIK IntelliJ наразі не підтримує передачу протоколу stdout та stderr з віддаленого додатка назад до IntelliJ.
Cory Klein

Якщо віддалений сервер доступний лише через ssh, як ми можемо вказати файл ключа?
vach

44

Це можливо, але вам потрібно додати кілька прапорів JVM під час запуску програми.

Ви повинні додати конфігурацію віддаленої налагодження: Редагувати конфігурацію -> Віддалене.

Потім ви знайдете у відображеному діалоговому вікні параметри, які потрібно додати до виконання програми, наприклад:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

Потім, коли ваша програма запущена, ви можете приєднати налагоджувач. Якщо ви хочете, щоб ваша програма зачекала, поки підключений налагоджувач, просто змініть призупинити прапор на y ( suspend=y)


Мене збентежило те, що ви редагуєте вхідні дані нижче, а потім оновлюєте рядки параметрів вище (принаймні 13,1 CE)
Carl G

7
Гм, ці аргументи командного рядка ЧИТАТИ ТОЛЬКО станом на 14.0.2. Ви можете відредагувати пару з них. Будь-яка ідея, як це виправити?
nuzzolilo

1
Крім того, до якого процесу ви приєднуєтесь, встановивши ці параметри?
нуцоліло

5
Перший працював на мене. Зауважте іншим - мені потрібно було вказати це перед прапором -jar.
джим

2
@Nuzzolilo, аргументи командного рядка, відображені в ідеї, призначені лише для відображення і, отже, лише для читання. Вони не повинні додаватися до ідеї, але до віддаленого додатку Java, який ви хочете налагодити.
Ганеш Крішнан

6

в AndroidStudio або ідеї

  1. Налаштуйте програму налагодження, відкрийте Змінити конфігурації

додати "Параметри VM" Налаштувати “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” запам'ятати "адресу"

введіть тут опис зображення

  1. Налаштуйте віддалений відладчик, якщо він не виходить, натисніть +, щоб додати

вкажіть "Порт" так само, як у кроці 1 "Адреса" введіть тут опис зображення


6

Крім того, не забувайте, що вам потрібно додати прапор "-Xdebug" у додатку JAVA_OPTS, якщо ви хочете підключитися в режимі налагодження.


0

Також я використовую додаток GUI Tomcat (у моєму випадку: C: \ tomcat \ bin \ Tomcat9w.bin).

  • Перейдіть на вкладку Java :

    введіть тут опис зображення

  • Встановіть ваші властивості Java, наприклад:

    Віртуальна машина Java

    C: \ Файли програм \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll

    Віртуальна машина Java

    C: \ tomcat \ bin \ bootstrap.jar; C: \ tomcat \ bin \ tomcat-juli.jar

    Параметри Java :

    -Dcatalina.home = C: \ tomcat

    -Dcatalina.base = C: \ tomcat

    -Djava.io.tmpdir = C: \ tomcat \ temp

    -Djava.util.logging.config.file = C: \ tomcat \ conf \ logging.properties

    -agentlib: jdwp = транспорт = dt_socket, сервер = y, призупинити = n, адреса = *: 8000

    Варіанти Java 9 :

    --add-opens = java.base / java.lang = ALL-UNNAMED

    --add-opens = java.base / java.io = ALL-UNNAMED

    --add-opens = java.rmi / sun.rmi.transport = ВСЕ-НЕЗНАЧЕНО

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.