What are Java command line options to set to allow JVM to be remotely debugged?

后端 未结 8 2580
猫巷女王i
猫巷女王i 2020-11-22 06:37

I know there\'s some JAVA_OPTS to set to remotely debug a Java program.

What are they and what do they mean ?

相关标签:
8条回答
  • 2020-11-22 06:50

    Before Java 5.0, use -Xdebug and -Xrunjdwp arguments. These options will still work in later versions, but it will run in interpreted mode instead of JIT, which will be slower.

    From Java 5.0, it is better to use the -agentlib:jdwp single option:

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

    Options on -Xrunjdwp or agentlib:jdwp arguments are :

    • transport=dt_socket : means the way used to connect to JVM (socket is a good choice, it can be used to debug a distant computer)
    • address=8000 : TCP/IP port exposed, to connect from the debugger,
    • suspend=y : if 'y', tell the JVM to wait until debugger is attached to begin execution, otherwise (if 'n'), starts execution right away.
    0 讨论(0)
  • 2020-11-22 06:50

    java

    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar
    

    address specifies the port at which it will allow to debug

    Maven

    **Debug Spring Boot app with Maven:

    mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
    
    0 讨论(0)
  • 2020-11-22 06:51

    I have this article bookmarked on setting this up for Java 5 and below.

    Basically run it with:

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

    For Java 5 and above, run it with:

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
    
    0 讨论(0)
  • 2020-11-22 06:52

    For java 1.5 or greater:

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
    

    For java 1.4:

    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
    

    For java 1.3:

    java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
    

    Here is output from a simple program:

    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
    Listening for transport dt_socket at address: 1044
    Hello whirled
    
    0 讨论(0)
  • 2020-11-22 07:00
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
    

    Here we just use a Socket Attaching Connector, which is enabled by default when the dt_socket transport is configured and the VM is running in the server debugging mode.

    For more details u can refer to : https://stackify.com/java-remote-debugging/

    0 讨论(0)
  • 2020-11-22 07:02

    Since Java 9.0 JDWP supports only local connections by default. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435

    For remote debugging one should run program with *: in address:

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
    
    0 讨论(0)
提交回复
热议问题