문제

Linux 시스템에서 실행되는 Java 응용 프로그램이 있습니다. 다음을 사용하여 Java 응용 프로그램을 실행합니다.

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

이 Linux 시스템에서 TCP 용 Port 4000을 열었습니다. Windows XP 시스템에서 Eclipse를 사용 하고이 응용 프로그램에 연결하려고합니다. 나는 또한 창에서 포트를 열었다.

두 기계 모두 LAN에 있지만 디버거를 Java 응용 프로그램에 연결할 수는 없습니다. 내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

편집하다: 나는 어떤 사람들이 여기에서 호출을 자르고 붙여 넣고 있음을 알았습니다. 내가 원래 준 대답은 OP와 관련이있었습니다. 더 현대적인 호출 스타일 (더 기존 포트 8000을 포함하여)은 다음과 같습니다.

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

원래 답변이 따릅니다.


이 시도:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

여기에 두 가지 점 :

  1. 안에 공간이 없습니다 runjdwp 옵션.
  2. 옵션은 클래스 이름 앞에옵니다. 클래스 이름 이후에 가지고있는 모든 주장은 프로그램에 대한 논쟁입니다!

다른 팁

JDK 1.3 이하의 경우 :

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

JDK 1.4의 경우

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

최신 JDK의 경우 :

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

필요에 따라 포트 번호를 변경하십시오.

에서 Java Technotes

5.0에서 -agentlib : jdwp 옵션은 JDWP 에이전트에 옵션을로드하고 지정하는 데 사용됩니다. 5.0 이전 릴리스의 경우 -xdebug 및 -xrunjdwp 옵션이 사용됩니다 (5.0 구현은 -xdebug 및 -xrunjdwp 옵션도 지원하지만 새로운 -agentlib : jdwp 옵션은 JVM TI 인터페이스를 사용하기 때문에 선호됩니다. 구형 JVMDI 인터페이스가 아닌 VM)

주목해야 할 것 중 하나가 더 있습니다 JVM 도구 인터페이스 문서:

JVM TI는 JDK 5.0에 도입되었습니다. JVM Ti는 JVMPI (Java Virtual Machine Profiler Interface)와 JDK 6 기준으로 더 이상 제공되지 않는 JVMDI (Java Virtual Machine Debug Interface)를 대체합니다.

단계 :

  1. 위의 게시물에있는대로 디버깅 옵션으로 원격 Java 응용 프로그램을 시작하십시오.
  2. 호스트 및 포트를 지정하여 원격 디버깅을위한 Eclipse를 구성하십시오.
  3. Eclipse에서 원격 디버깅을 시작하고 연결이 성공할 때까지 기다리십시오.
  4. 설정 중단 점 및 디버그.
  5. 응용 프로그램 시작에서 디버깅을하려면 SPENTEND = Y를 사용하면 Eclipse에서 연결할 때까지 원격 애플리케이션이 중단됩니다.

보다 Java 원격 디버깅에 대한 단계별 가이드 자세한 내용은.

Java> = 9 : 답변 답변 :

Java 9+의 경우 JVM 옵션은 JVM을 호스팅하는 컴퓨터의 IP 주소로 주소를 접두사하거나 단지 약간 변경해야합니다. *:

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

이것은 언급 된 변경 때문입니다 https://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#jdk-8041435.

Java <9의 경우 포트 번호는 연결하기에 충분합니다.

원격 디버깅을 위해 Eclipse Debugger를 설정하는 방법입니다.

일식 설정 :

1. 실행 버튼을 클릭하십시오
2. 디버그 구성을 선택하십시오
3.“원격 Java 응용 프로그램”을 선택하십시오.
4. 신원 구성

  • 이름 : GatewayPortalProject
  • 프로젝트 : Gatewayportal-Portlet
  • 연결 유형 : 소켓 첨부
  • 연결 속성 : i) LocalHost II) 8787

Jboss의 경우 :

1. 교환 /path/toJboss/jboss-eap-6.1/bin/standalone.conf 다음과 같이 vm에서 : #을 제거하여 다음 줄을 타협합니다.

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

Tomcat의 경우 :

~ 안에 Catalina.bat 파일 :

1 단계:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

2 단계:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

3 단계 : 아래와 같이 명령 프롬프트에서 Tomcat을 실행하십시오.

catalina.sh jpda start

그런 다음 설정해야합니다 중단 점 Java 클래스에서는 디버그를 원합니다.

나는 그것을 강조하고 싶습니다 논쟁의 순서가 중요합니다.

나를 위한 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar app.jar 명령 디버거 포트가 열립니다,

하지만 java -jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 명령 그렇지 않습니다.

디버깅의 가장 좋은 옵션은 로그를 작성하고 로그를 분석하는 것입니다. 그러나 경우에 따라 서버에 배포 된 웹 응용 프로그램을 디버그해야합니다.

보다 Java 웹 응용 프로그램을 원격으로 디버깅합니다 링크. 원격 디버깅의 완전한 흐름이 여기에 설명되어 있습니다. 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top