Удаленная отладка Java-приложения
У меня есть приложение 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 ответов:
Edit: я заметил, что некоторые люди вырезают и вставляют вызов здесь. Ответ, который я первоначально дал, имел отношение только к ОП. Вот более современный стиль вызова (в том числе с использованием более обычного порта 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
тут два момента:
- нет пробелов в .
- опции приходят перед классом имя. Любые аргументы, которые у вас есть после имени класса, являются аргументами для вашей программы!
для 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
пожалуйста, измените номер порта в зависимости от ваших потребностей.
начиная с версии 5.0 параметр-agentlib:jdwp используется для загрузки и указания параметры для агента JDWP. Для выпусков до 5.0,- Xdebug и - Используются параметры Xrunjdwp (реализация 5.0 также поддерживает - Xdebug и-Xrunjdwp параметры, но более новый-agentlib: jdwp вариант предпочтительнее, поскольку агент JDWP в 5.0 использует интерфейс JVM TI для VM, а не старый интерфейс JVMDI)
еще одна вещь, чтобы отметить, от документация по интерфейсу инструмента JVM:
JVM TI был представлен в JDK 5.0. JVM TI заменяет Java Virtual Machine Profiler Interface (JVMPI) и Java Virtual Machine Debug Interface (JVMDI), которые, начиная с JDK 6, являются больше не предоставляется.
действия:
- запустите удаленное приложение java с параметрами отладки, как указано выше.
- настроить Eclipse для удаленной отладки, указав хост и порт.
- запустите удаленную отладку в Eclipse и дождитесь успешного подключения.
- настройки точки останова и отладка.
- Если вы хотите отлаживать от начала использования приложения suspend=y , это будет держать удаленное приложение приостановлено до подключения от затмение.
посмотреть Пошаговое Руководство по удаленной отладке Java для полной информации.
вот как вы должны настроить Eclipse Debugger для удаленной отладки:
Настройки Eclipse:
1.Нажмите кнопку Выполнить
2.Выберите конфигурации отладки
3.Выберите "удаленное приложение Java"
4.Новая Конфигурация
- Имя: GatewayPortalProject
- проект: GatewayPortal-портлет
- Тип Подключения: Разъем Attach
- подключение Свойства: i) localhost 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 :
на Каталина.летучая мышь file:
Шаг 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, которые вы хотите отладить.
лучшим вариантом отладки является создание журналов и анализ журналов. Но в некоторых случаях нам нужно отлаживать веб-приложение, развернутое на сервере.
посмотреть удаленная отладка веб-приложения java ссылка. Полный поток удаленной отладки описан здесь. Надеюсь, это поможет.