Удаленная отладка приложения Java - PullRequest
230 голосов
/ 10 июня 2009

У меня есть Java-приложение, работающее на Linux-машине. Я запускаю Java-приложение, используя следующее:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

Я открыл порт 4000 для TCP на этом компьютере с Linux. Я использую Eclipse с компьютера с Windows XP и пытаюсь подключиться к этому приложению. Я также открыл порт в Windows.

Обе машины находятся в локальной сети, но я не могу подключить отладчик к приложению Java. Что я делаю не так?

Ответы [ 5 ]

443 голосов
/ 10 июня 2009

Редактировать: Я заметил, что некоторые люди сокращают и вставляют вызов здесь. Ответ, который я первоначально дал, был актуален только для ФП. Вот более современный стиль вызова (включая использование более обычного порта 8000):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

Ниже следует оригинальный ответ.


Попробуйте это:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

Здесь две точки:

  1. Нет пробелов в опции runjdwp.
  2. Опции располагаются перед именем класса. Любые аргументы после имени класса являются аргументами вашей программы!
77 голосов
/ 25 марта 2014

Для JDK 1.3 или ранее:

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

Для JDK 1.4

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

Для более новых JDK:

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

Пожалуйста, измените номер порта в зависимости от ваших потребностей.

Из Java Technotes

Начиная с 5.0, опция -agentlib: jdwp используется для загрузки и указания опции для агента JDWP. Для выпусков до 5.0, -Xdebug и Используются опции -Xrunjdwp (реализация 5.0 также поддерживает опции -Xdebug и -Xrunjdwp, но более новая опция -agentlib: jdwp предпочтительнее, поскольку агент JDWP в 5.0 использует интерфейс TI JVM для ВМ, а не старый интерфейс JVMDI)

Еще одна вещь, которую стоит отметить из Документация интерфейса JVM Tool :

JVM TI был представлен в JDK 5.0. JVM TI заменяет интерфейс профилировщика виртуальной машины Java (JVMPI) и интерфейс отладки виртуальной машины Java (JVMDI), которые, начиная с JDK 6, больше не предоставляются.

27 голосов
/ 15 ноября 2011

Шаги:

  1. Запустите ваше удаленное Java-приложение с параметрами отладки, как указано в посте выше.
  2. Настройте Eclipse для удаленной отладки, указав хост и порт.
  3. Запустите удаленную отладку в Eclipse и дождитесь успешного подключения.
  4. Настройка точки останова и отладки.
  5. Если вы хотите отлаживать с самого начала приложения, используйте suspend = y, это будет держать приостановленное удаленное приложение, пока вы не подключитесь из eclipse.

Подробнее см. Пошаговое руководство по удаленной отладке Java .

1 голос
/ 29 июня 2016

Вот как вы должны настроить Eclipse Debugger для удаленной отладки:

Настройки Eclipse:

1.Нажмите кнопку запуска
. 2. Выберите настройки отладки
3. Выберите «Удаленное приложение Java»
4.Новая конфигурация

  • Имя: GatewayPortalProject
  • Проект: GatewayPortal-портлет
  • Тип подключения: разъем Socket
  • Свойства соединения: я) местный хост II) 8787

Для JBoss:

1. Измените /path/toJboss/jboss-eap-6.1/bin/standalone.conf в вашей виртуальной машине следующим образом: Раскомментируйте следующую строку, удалив #:

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

Для Tomcat:

В catalina.bat Файл:

Шаг 1:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Шаг 2:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Шаг 3: Запустите Tomcat из командной строки, как показано ниже:

catalina.sh jpda start

Затем необходимо установить точки останова в классах Java, которые вы хотите отлаживать.

0 голосов
/ 08 июля 2017

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

См. Удаленная отладка Java-приложения ссылка. Полный поток удаленной отладки описан здесь. Надеюсь, это поможет.

...