[debugging] 실행중인 Java 프로세스에 IntelliJ IDEA 디버거 연결
IntelliJ IDEA 디버거를 실행중인 Java 프로세스에 연결할 수 있습니까? 그렇다면 어떻게?
답변
예! 설정 방법은 다음과 같습니다.
구성 실행
원격 실행 구성을 작성하십시오.
- 실행-> 구성 편집 …
- 왼쪽 상단에서 “+”를 클릭하십시오.
- 가장 왼쪽 창에서 “원격”옵션을 선택하십시오
- 이름을 선택하십시오 (내 이름은 “원격 디버깅”입니다).
- “확인”을 클릭하여 저장하십시오.
JVM 옵션
위의 구성은 세 가지 읽기 전용 필드를 제공합니다. 애플리케이션을 실행할 때 원격 디버깅을 위해 포트 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에서 발생합니다.
답변
가능하지만 응용 프로그램을 시작할 때 일부 JVM 플래그를 추가해야합니다.
원격 디버그 구성을 추가해야합니다 (구성 편집-> 원격).
그런 다음 표시된 대화 상자 창에서 프로그램 실행에 추가 해야하는 매개 변수를 찾을 수 있습니다.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
그런 다음 응용 프로그램이 시작되면 디버거를 연결할 수 있습니다. 디버거가 연결될 때까지 응용 프로그램을 기다리려면 suspend 플래그를 y ( suspend=y
)로 변경하십시오.
답변
AndroidStudio 또는 아이디어
- 응용 프로그램이 디버그되도록 구성하고 구성 편집을 엽니 다.
“VM 옵션”구성 추가 ”
“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”
주소”기억
- 구성되지 않은 경우 원격 디버거 구성, +를 클릭하여 추가
답변
또한 디버그 모드로 연결하려면 앱 JAVA_OPTS에 “-Xdebug”플래그를 추가해야합니다.
답변
또한 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