Answers:
我将本文标记为针对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
对于远程调试,应使用*:
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 <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
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
在这里,我们仅使用套接字连接连接器,当配置了dt_socket传输并且VM在服务器调试模式下运行时,默认情况下启用该连接器。
有关更多详细信息,您可以参考:https : //stackify.com/java-remote-debugging/
*:1044
以便从任何计算机启用远程调试