[java] JVM을 원격으로 디버깅 할 수 있도록 설정하는 Java 명령 행 옵션은 무엇입니까?

JAVA_OPTSJava 프로그램을 원격으로 디버깅하도록 설정해야한다는 것을 알고 있습니다 .

그들은 무엇이며 무엇을 의미합니까?



답변

내가 가진 이 기사 아래에 자바 5에 대한이 최대 설정에 북마크를.

기본적으로 다음을 실행하십시오 .

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

를 들어 위의 자바 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’인 경우) 즉시 실행을 시작하십시오.

답변

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


답변

자바

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

address 디버그 할 수있는 포트를 지정합니다

메이븐

** Maven을 사용한 디버그 스프링 부트 앱 :

mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"


답변

가장 쉬운 해결책은 다음과 같습니다.

Maven을 사용하는 경우 많은 환경 특수 구성이 필요합니다. 따라서 maven에서 프로그램을 시작하는 경우 mvnDebug대신 대신 명령을 실행하면 mvn원격 디버깅이 구성된 상태에서 앱을 시작합니다. 이제 포트 8000에서 디버거를 연결할 수 있습니다.

모든 환경 문제를 처리합니다.


답변

커맨드 라인

-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