IntelliJ IDEA 디버거를 실행중인 Java 프로세스에 연결할 수 있습니까? 그렇다면 어떻게?
IntelliJ IDEA 디버거를 실행중인 Java 프로세스에 연결할 수 있습니까? 그렇다면 어떻게?
답변:
예! 설정 방법은 다음과 같습니다.
원격 실행 구성을 작성하십시오.
위의 구성은 세 가지 읽기 전용 필드를 제공합니다. 애플리케이션을 실행할 때 원격 디버깅을 위해 포트 5005를 열도록 JVM에 지시하는 옵션입니다. 디버깅중인 애플리케이션의 JVM 옵션에 적절한 항목을 추가하십시오. 이 작업을 수행하는 한 가지 방법은 다음과 같습니다.
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
그러나 응용 프로그램 실행 방법에 따라 다릅니다. 세 가지 중 어느 것이 자신에게 적용되는지 확실하지 않은 경우 첫 번째로 시작하여 작동하는 것을 찾을 때까지 목록을 내려가십시오.
IntelliJ에 연결될 때까지 응용 프로그램이 시작되도록 강제로 변경 suspend=n
하도록 변경할 수 있습니다 suspend=y
. 적중하려는 중단 점이 응용 프로그램 시작시 발생하는 경우에 유용합니다.
정상적으로 응용 프로그램을 시작한 다음 IntelliJ에서 새 구성을 선택하고 'Debug'를 누르십시오.
IntelliJ가 JVM에 연결하고 원격 디버깅을 시작합니다.
원하는 곳에 코드에 중단 점을 추가하여 애플리케이션을 디버깅 할 수 있습니다. 응용 프로그램의 출력은 이전의 어느 위치 에나 계속 표시되지만 중단 점은 IntelliJ에서 발생합니다.
Remote
커뮤니티 에디션을 사용할 수 없습니다? 유료 버전을 사용하고 있습니다. Community Edition을 가진 사람은 누구나 확인할 수 있습니까?
System.out.println
원격 디버깅시 IntelliJ 에서 출력을 얻는 방법을 알고 있습니까?
가능하지만 응용 프로그램을 시작할 때 일부 JVM 플래그를 추가해야합니다.
원격 디버그 구성을 추가해야합니다 (구성 편집-> 원격).
그런 다음 표시된 대화 상자 창에서 프로그램 실행에 추가 해야하는 매개 변수를 찾을 수 있습니다.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
그런 다음 응용 프로그램이 시작되면 디버거를 연결할 수 있습니다. 디버거가 연결될 때까지 응용 프로그램을 기다리려면 suspend 플래그를 y ( suspend=y
)로 변경하십시오.
또한 Tomcat GUI 앱 (내 경우 : C : \ tomcat \ bin \ Tomcat9w.bin)을 사용합니다.
Java 탭으로 이동 하십시오.
Java 특성을 설정하십시오 (예 :
자바 가상 머신
C : \ Program Files \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll
자바 가상 머신
C : \ tomcat \ bin \ bootstrap.jar; C : \ tomcat \ bin \ tomcat-juli.jar
자바 옵션 :
-Dcatalina.home = C : \ tomcat
-Dcatalina.base = C : \ tomcat
-Djava.io.tmpdir = C : \ tomcat \ temp
-Djava.util.logging.config.file = C : \ tomcat \ conf \ logging.properties
-agentlib : jdwp = transport = dt_socket, 서버 = y, 일시 중지 = n, 주소 = * : 8000
자바 9 옵션 :
--add-opens = java.base / java.lang = ALL-UNNAMED
--add-opens = java.base / java.io = ALL-UNNAMED
--add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED