



У меня есть закладка эта статья при настройке для 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
HerrDerb прав .. Начиная с Java 9 «адрес = 1044» не всегда прослушивает все интерфейсы. "address = *: 1044" заставляет Java 9+ вести себя как Java 8 ...
Просто примечание: это не требуется для добавления параметра address. Если не указан, агент выбирает случайный номер порта. Это может быть полезно, если вы запускаете несколько узлов в одной командной строке java.
также безопаснее использовать address=localhost:<debug port>, чем просто выбрать порт
До версии Java 5.0 используйте аргументы -Xdebug и -Xrunjdwp. Эти параметры по-прежнему будут работать в более поздних версиях, но он будет работать в интерпретируемом режиме вместо JIT, который будет медленнее.
Начиная с Java 5.0, лучше использовать одиночный вариант -agentlib:jdwp:
-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») немедленно начнет выполнение.Вы совершенно правы .. Я пробовал с -Xdebug и -Xrunjdwp, но это не сработало. когда я пробовал с -Xrunjdwp или agentlib: jdwp, он работает. (на Java 7)
Это сработало для меня только тогда, когда я заключил его в кавычки, иначе я получил эту ошибку: ОШИБКА: JDWP Несерверный транспорт dt_socket server = y suspend = y address = 8000 должен иметь адрес подключения, указанный с помощью опции 'address ='
Xrunjdwp устарел (или удален?), Почему мы должны выбрать agentlib:jdwp вместо него?
Я думаю, вы ошибаетесь. Netbeans использует -Xdebug -Xrunjdwp при отладке проектов Maven, и они работают как JIT.
Для 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
Вот самое простое решение.
Если вы используете Maven, вам потребуется множество специальных конфигураций среды. Итак, если вы запустите свою программу из maven, просто запустите команду mvnDebug вместо mvn, она позаботится о запуске вашего приложения с настроенной удаленной отладкой. Теперь вы можете просто подключить отладчик к порту 8000.
Он позаботится обо всех проблемах с окружающей средой.
Начиная с 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
Просто примечание: ссылка Oracle говорит, что это приведет к тому же старому поведению, но это небезопасно и не рекомендуется.
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar
address указывает порт, на котором разрешена отладка.
** Отладка приложения Spring Boot с помощью Maven:
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=PORT_NUMBER
gradle bootrun --debug-jvm
mvn spring-boot:run -Drun.jvmArguments = "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
Здесь мы просто используем соединитель подключения сокета, который включен по умолчанию, когда настроен транспорт dt_socket и виртуальная машина работает в режиме отладки сервера.
Для более подробной информации можете обратиться к: https://stackify.com/java-remote-debugging/
Стоит упомянуть, что вы можете настроить свой адрес, например
*:1044, чтобы включить удаленную отладку с любого компьютера.