Какие параметры командной строки Java необходимо установить для удаленной отладки JVM? - PullRequest
283 голосов
/ 26 сентября 2008

Я знаю, что есть некоторые JAVA_OPTS для удаленной отладки Java-программы.

Что они и что они значат?

Ответы [ 7 ]

435 голосов
/ 06 октября 2008

До Java 5.0 используйте -Xdebug и -Xrunjdwp аргументы. Эти параметры будут работать в более поздних версиях, но будут работать в интерпретируемом режиме вместо JIT, что будет медленнее.

В Java 5.0 лучше использовать -agentlib:jdwp single option:

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

Опции для -Xrunjdwp или agentlib:jdwp аргументов:

  • transport=dt_socket: означает способ подключения к JVM (сокет - хороший выбор, его можно использовать для отладки удаленного компьютера)
  • address=8000: открыт порт TCP / IP для подключения от отладчика,
  • suspend=y: если 'y', скажите JVM подождать, пока отладчик не подключится, чтобы начать выполнение, в противном случае (если 'n'), запуск сразу начнется.
264 голосов
/ 26 сентября 2008

У меня эта статья добавлена ​​в закладки на настройку этого для Java 5 и ниже.

В основном запустить его с :

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

Для Java 5 и выше , запустите его с:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
38 голосов
/ 23 января 2018

Начиная с Java 9.0, JDWP по умолчанию поддерживает только локальные соединения. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435

Для удаленной отладки необходимо запустить программу с *: в адресе:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
7 голосов
/ 28 октября 2016

Для Java 1.5 или выше:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Для Java 1.4:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Для Java 1.3:

java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Вот вывод из простой программы:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled
3 голосов
/ 30 марта 2018

Java

java -Xdebug -Xrunjdwp: transport = dt_socket, server = y, address = 8001, suspend = y -jar target / cxf-boot-simple-0.0.1-SNAPSHOT.jar

address указывает порт, на котором он будет разрешать отладку

Maven

Отладка приложения Spring Boot с Maven: mvn spring-boot: run -Drun.jvmArguments ="- Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = y, address = 8001"

2 голосов
/ 25 февраля 2019

Командная строка

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

Gradle

gradle bootrun --debug-jvm

Maven

mvn spring-boot: run -Drun.jvmArguments = "- Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = y, address = PORT_NUMBER

1 голос
/ 20 сентября 2017

При использовании Maven возникает много проблем с окружающей средой. Итак, если вы запускаете свою программу из maven, просто запустите команду mvnDebug вместо mvn и подключите отладчик к порту 8000. Он позаботится о всех проблемах среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...