JVM을 원격으로 디버깅할 수 있도록 설정하는 Java 명령줄 옵션은 무엇입니까?
나도 알아JAVA_OPTS
Java 프로그램을 원격으로 디버깅하도록 설정합니다.
그것들은 무엇이고 무엇을 의미합니까?
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 5 이하의 셋업에 관한 기사를 북마크 하고 있습니다.
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Java 9.0 JDWP는 기본적으로 로컬 연결만 지원합니다.http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
리모트 디버깅의 경우는, 다음과 같이 프로그램을 실행할 필요가 있습니다.*:
주소:
-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을 사용한 Spring Boot 앱 디버깅:
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
명령줄
-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
여기 가장 쉬운 해결책이 있습니다.
Maven을 사용하는 경우 많은 환경 특수 구성이 필요합니다.그러니, 만약 당신이 메이븐에서 프로그램을 시작한다면,mvnDebug
대신 지휘하다mvn
원격 디버깅을 구성한 상태에서 앱을 시작합니다.이제 디버거를 포트 8000에 연결할 수 있습니다.
모든 환경 문제를 해결해 줄 것입니다.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
여기서는 소켓 연결 커넥터를 사용합니다.이 커넥터는 dt_socket 전송이 구성되어 VM이 서버 디버깅모드로 동작하고 있을 때 디폴트로 유효하게 됩니다.
상세한 것에 대하여는, https://stackify.com/java-remote-debugging/ 를 참조해 주세요.
Java 9 이후를 사용하는 경우 리모트로 디버깅하려면 (로컬에서 도커를 사용하는 경우에도 마찬가지)--debug *:($port)
왜냐하면 자바9부터--debug ($port)
는 리모트가 아닌 로컬에서만 디버깅을 허용합니다.
그래서 '처럼 '도커 컴포넌트'에서 할 수 .command: -- /opt/jboss/wildfly/bin/standalone.sh --debug *:8787
언급URL : https://stackoverflow.com/questions/138511/what-are-java-command-line-options-to-set-to-allow-jvm-to-be-remotely-debugged
'sourcecode' 카테고리의 다른 글
Nuxt에서 Create() 글로벌 앱보다 먼저 접속하려면 어떻게 해야 하나요? (0) | 2022.08.21 |
---|---|
vim에서 C 코드를 자동 포맷/인디트하려면 어떻게 해야 합니까? (0) | 2022.08.21 |
정적 공장 출하시 방법이란 무엇입니까? (0) | 2022.08.21 |
vue js 또는 jquery를 사용하여 요소의 개체 바꾸기 (0) | 2022.08.19 |
모든 액션 Vuex 전 콜 변환 (0) | 2022.08.19 |