[debugging] 실행중인 Java 프로세스에 IntelliJ IDEA 디버거 연결

IntelliJ IDEA 디버거를 실행중인 Java 프로세스에 연결할 수 있습니까? 그렇다면 어떻게?



답변

예! 설정 방법은 다음과 같습니다.

구성 실행

원격 실행 구성을 작성하십시오.

  1. 실행-> 구성 편집 …
  2. 왼쪽 상단에서 “+”를 클릭하십시오.
  3. 가장 왼쪽 창에서 “원격”옵션을 선택하십시오
  4. 이름을 선택하십시오 (내 이름은 “원격 디버깅”입니다).
  5. “확인”을 클릭하여 저장하십시오.

여기에 이미지 설명을 입력하십시오

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 또는 아이디어

  1. 응용 프로그램이 디버그되도록 구성하고 구성 편집을 엽니 다.

“VM 옵션”구성 추가 ”

“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”

주소”기억

여기에 이미지 설명을 입력하십시오

  1. 구성되지 않은 경우 원격 디버거 구성, +를 클릭하여 추가

1 단계 “주소”와 동일하게 “포트”를 지정하십시오.
여기에 이미지 설명을 입력하십시오


답변

또한 디버그 모드로 연결하려면 앱 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


답변