Я знаю, что некоторые JAVA_OPTS
для удаленной отладки Java-программы.
Что они и что они значат?
Я знаю, что некоторые JAVA_OPTS
для удаленной отладки Java-программы.
Что они и что они значат?
У меня есть эта статья в закладке на настройку для 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
: if 'y', сообщите JVM, чтобы ждать, пока отладчик не будет присоединен для начала выполнения, иначе (если "n" ) сразу начнет выполнение.Начиная с Java 9.0, JDWP по умолчанию поддерживает только локальные соединения. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
Для удаленной отладки необходимо запустить программу с *:
in address:
-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: транспорт = dt_socket, сервер = y, адрес = 8001, приостановить = y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar
address
указывает порт, на котором он позволит отлаживать
Отладка приложения Spring Boot с Maven: mvn spring-boot: run -Drun.jvmArguments = "-Xdebug -Xrunjdwp: транспорт = dt_socket, сервер = y, приостановить = y, адрес = 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
Там много проблем с окружающей средой, если вы используете Maven. Итак, если вы запустите свою программу из maven, просто запустите команду mvnDebug
вместо mvn
и присоедините отладчик на порт 8000. Это вы заботитесь обо всех проблемах с окружающей средой.