什么是Java命令行选项设置为允许远程debuggingJVM?

我知道有一些JAVA_OPTS设置为远程debuggingJava程序。

他们是什么,他们是什么意思?

我将这篇文章的书签设置为Eclipse for Java 5及以下版本。

基本上运行它 :

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 

对于Java 5及更高版本的 Eclipse,请使用以下命令运行它:

 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044 

在Java 5.0之前,请使用-Xdebug-Xrunjdwp参数。 这些选项仍然可以在更高版本中使用,但是它将以解释模式运行,而不是JIT,这将会变慢。

从Java 5.0开始,最好使用-agentlib:jdwp single选项:

 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 

-Xrunjdwpagentlib:jdwp参数上的选项是:

  • transport=dt_socket :表示用于连接到JVM的方式(套接字是个不错的select,它可以用来debugging远端的计算机)
  • address=8000 :TCP / IP端口暴露,从debugging器连接,
  • suspend=y :如果'y',告诉JVM等待直到debugging器被连接开始执行,否则(如果'n'),立即开始执行。

对于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上附加一个debugging器。它负责处理所有的环境问题。