development

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

big-blog 2020. 3. 16. 08:21
반응형

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"


커맨드 라인

-Xdebug -Xrunjdwp : transport = dt_socket, 서버 = y, 일시 중지 = n, 주소 = PORT_NUMBER

그래들

gradle bootrun --debug-jvm

메이븐

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


Maven을 사용하는 경우 많은 환경 문제가 있습니다. 따라서 maven에서 프로그램을 시작하는 경우 포트 8000에서 디버거 mvnDebug대신 명령을 실행하고 mvn모든 환경 문제를 처리하십시오.

참고 : https://stackoverflow.com/questions/138511/what-are-java-command-line-options-to-set-to-allow-jvm-to-be-remotely-debugged

반응형