我知道有一些JAVA_OPTS设置为远程调试Java程序.
它们是什么,它们是什么意思?
在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 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 9.0 JDWP默认仅支持本地连接. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
对于远程调试,应该使用*:
in地址运行程序:
-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
对于java 1.4:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
对于java 1.3:
java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
这是一个简单程序的输出:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled Listening for transport dt_socket at address: 1044 Hello whirled