Eclipse를 사용하여 Spring Boot 응용 프로그램을 디버깅하는 방법
나의Spring Boot
webapp은 정상적으로 실행되고 있으며, Eclipse를 통해 디버깅하고 싶습니다.
Remote Java Application 디버거를 실행할 때 어떤 포트를 재생해야 합니까?디버깅을 활성화하기 위해 웹 앱에서 설정해야 하는 설정이 있습니까?
오른쪽 버튼을 클릭해 주세요.main()
방법 및 선택"Debug As... Java Application"
?
Spring Boot Reference 섹션 19.2에서는 원격 디버깅 지원을 활성화한 상태에서 애플리케이션을 시작하는 방법에 대해 설명합니다.
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/myproject-0.0.1-SNAPSHOT.jar
응용 프로그램을 시작한 후 실행/디버깅 구성에서 원격 Java 응용 프로그램 구성을 추가하고 응용 프로그램 시작 시 정의한 포트/주소를 선택하면 자유롭게 디버깅할 수 있습니다.
간단한 솔루션:
타이핑 대신mvn spring-boot:run
, 간단히 입력해 주세요.mvnDebug spring-boot:run
관련 포트에서 "원격 Java 응용 프로그램"에 대한 새로운 디버깅 구성을 만들어 Eclipse에서 디버거를 연결해야 합니다.
이것을 실행하기 위해서 리모트 디버깅을 설정할 필요는 없었습니다.Maven을 사용했습니다.
- 이클립스에 Maven 플러그인이 설치되어 있는지 확인합니다.
- [ Run ] > [ Run Configurations ]> [ Maven Build ]> [ new laun configuration ]을 클릭합니다.
- 기본 디렉토리: 프로젝트의 루트를 참조합니다.
- 목표:
spring-boot::run
.
- Apply를 클릭한 다음 Run을 클릭합니다.
주의: IDE에서 라인별 디버깅을 수행할 때 프로젝트의 소스 코드를 찾을 수 없는 경우 이 SO 답변을 참조하여 수동으로 소스 코드를 디버깅 응용 프로그램에 첨부하는 방법을 확인하십시오.
이게 누군가에게 도움이 되길 바라!
원격 스테이징 또는 실제 가동 중인 Spring Boot 응용 프로그램을 디버깅하는 방법
서버측
Spring Boot의 서비스로서의 Spring Boot 어플리케이션 설정에 관한 가이드에 따라 정상적으로 실행했다고 가정합니다.애플리케이션 아티팩트가 있는 위치:/srv/my-app/my-app.war
(컨피규레이션파일과 함께)/srv/my-app/my-app.conf
:
# This is file my-app.conf
# What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script
# (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script
# gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that
# we can also do in a regular shell script.
JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n"
export SPRING_PROFILES_ACTIVE=staging
를 사용하여 Spring Boot 응용 프로그램을 재시작할 때sudo service my-app restart
다음 위치에 있는 로그 파일에 있습니다./var/log/my-app.log
라고 하는 행이어야 한다.Listening for transport dt_socket at address: 8002
.
클라이언트 측(개발자 머신)
서버에 대한 SSH 포트 포워딩 터널을 엽니다.ssh -L 8002:localhost:8002 myusername@staging.example.com
이 SSH 세션을 계속 실행합니다.
Eclipse 툴바의 [Run]-> [ Debug Configurations ]-> [ Remote Java Application ]-> [ New ]버튼 -> [ Connection Type Standard ( Socket Attach ) ], [Host localhost], [Port 8002] (또는 이전 순서로 설정한 것) 순으로 선택합니다.Apply를 클릭한 후 Debug를 클릭합니다.
이제 Eclipse 디버거가 원격 서버에 연결됩니다.디버깅 시점으로 전환하면 연결된 JVM과 해당 스레드가 표시됩니다.중단점은 원격으로 트리거되는 즉시 발생해야 합니다.
하면 됩니다.pom.xml
다음과 같이 합니다.
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
또한 포트에서 디버깅 옵션을 사용하여 원격 Java 애플리케이션을 시작합니다.5005
가장 좋은 해결책은 pom.xml에 플러그인을 추가하는 것으로 항상 다른 작업을 할 필요는 없습니다.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898
</jvmArguments>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "Debug As = > Java or Spring boot App"을 선택합니다. - spring1 -
- 왼쪽을 더블클릭하여 앱을 일시 정지하고 싶다면 이 캡처 2와 같이 됩니다.
- 그 후, 앱을 기동할 때는, 다음의 화살표를 사용해 주세요.(그림 3)
이 질문은 이미 답변이 끝난 상태이지만, Springboot + gradle + jHipster를 디버깅하기 위해서도 같은 문제가 발생하였습니다.
대부분의 스프링 부트어플리케이션은 오른쪽 클릭과 디버깅으로 디버깅이 가능하지만 gradle을 사용하면 환경 파라미터가 추가로 설정되어 있기 때문에 직접 디버깅할 수 없습니다.
이 문제를 해결하기 위해 Eclipse는 원격 Java 애플리케이션으로 한 가지 추가 기능을 제공했습니다.
이 기능을 사용하면 응용 프로그램을 디버깅할 수 있습니다.
다음의 순서에 따릅니다.
./gradlew bootRun --debug-jvm
이제 이클립스 --> 프로젝트 및 디버깅 설정 --> 리모트 Java 어플리케이션으로 이동합니다.
호스트 및 포트를 localhost로, 포트를 5005로 추가(그래들디버깅의 디폴트에서는 변경할 수 있습니다.
상세한 것에 대하여는, 을 참조해 주세요.
디버거 포인트를 넣고 우체부 같은 클라이언트에서 앱을 호출합니다Right click on the spring boot project -> debug as -> spring boot App
.
리모트 디버깅을 유효하게 하려면 , http://java.dzone.com/articles/how-debug-remote-java-applicat 를 참조해 주세요.Tomcat을 사용하여 응용 프로그램을 실행하는 경우 원격 디버깅 매개 변수를 사용하여 Tomcat을 시작하거나 다음 명령을 사용하여 JPDA 지원을 사용하여 Tomcat을 시작할 수 있습니다.
창문들
<tomcat bin dir>/startup.bat jpda
*nix
<tomcat bin dir>/startup.sh jpda
그러면 포트 8000에서 원격 디버깅이 활성화됩니다.
Eclipse 또는 기타 IDE에서는 메인 스프링 부트 애플리케이션을 오른쪽 클릭하여 "debug as java application"을 클릭합니다.
Spring Boot Applications 메인 클래스 파일을 오른쪽 클릭합니다.-> [ Debug As options ](디버깅 옵션)을 선택합니다.-> [ Java Application ](Java 애플리케이션 선택)
이제 중단점을 사용하여 응용 프로그램을 디버깅할 수 있습니다.
언급URL : https://stackoverflow.com/questions/24113939/how-to-debug-spring-boot-application-with-eclipse
'programing' 카테고리의 다른 글
Java에서는 16진수까지의 정수 (0) | 2022.10.02 |
---|---|
스프링 컨테이너의 싱글톤 디자인 패턴 vs 싱글톤 원두 (0) | 2022.10.02 |
JavaScript에서 두 어레이의 차이를 확인하는 방법 (0) | 2022.10.02 |
C#과 Java의 3진 연산자(? :)의 차이 (0) | 2022.10.02 |
pyplot 하위 그림에 대한 공통 축 레이블 (0) | 2022.10.02 |