Ответы:
У меня есть эта статья в закладке на настройку для 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
До 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'), запуск сразу начнется.Xrunjdwp
устаревшим (или удален) , почему бы мы выбрали agentlib:jdwp
над ним?
-Xdebug -Xrunjdwp
при отладке проектов Maven, и они работают так, как будто они JITed.
Начиная с 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
Для 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
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"
Вот самое простое решение.
Существует много специальных конфигураций среды, необходимых для использования Maven. Итак, если вы запускаете свою программу из maven, просто запустите mvnDebug
команду вместоmvn
, она позаботится о запуске вашего приложения с настроенной удаленной отладкой. Теперь вы можете просто подключить отладчик к порту 8000.
Он позаботится обо всех проблемах окружающей среды для вас.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
Здесь мы просто используем Socket Attaching Connector, который включен по умолчанию, когда настроен транспорт dt_socket и виртуальная машина работает в режиме отладки сервера.
Для более подробной информации вы можете обратиться к: https://stackify.com/java-remote-debugging/
*:1044
чтобы включить удаленную отладку с любого компьютера