brunch

You can make anything
by writing

C.S.Lewis

by 에디의 기술블로그 Jul 07. 2019

스프링부트 리모트 디버깅

intelliJ 에서 스프링부트 원격 서버 디버깅 실행하기

웹애플리케이션 운영을 하다보면, 로컬 개발환경에서 테스트를 하기 어려운 경우가 종종 발생한다. 이번 글에서는 IntelliJ IDE 환경에서, 외부 서버에 배포된 스프링부트를 디버깅 하는 방법에 대해서 알아보겠다. 아주 짧은 글이다. 


주의!! 실서비스(상용서버) 운영 중에 

리모트 디버깅을 실행하면 절대 안됩니다. 



서버 설정


디버깅을 하기 위해서는, java 애플리케이션 실행 옵션에 디버깅 옵션을 추가해야 한다. 필자는, 별도의 실행 스크립트를 아래와 같이 작성하였다. 


nohup java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n -Dspring.cache.type=NONE -jar /data/www/test0701/demo-0.0.1-SNAPSHOT.jar


디버깅 포트는 8888 로 실행 될 것이다. 


자세한 디버깅 옵션은 레퍼런스를 참고하길 바란다. 


IDE 설정


IntelliJ 에서 Edit Configurations 를 클릭한다.

좌측 메뉴에서 Remote 를 선택한다.

Host 와 Port 정보를 입력한다. 필자는 8888 포트로 설정하였다. Host 는 서버의 IP 또는 도메인을 입력하면 된다. 


생각보다 쉽다.


디버깅 찍어보자.


자 이제 디버깅을 실행해보자!!!

디버깅 포트에 잘 연결되면, 아래와 같이 "Connected to the target VM" 이라고 표시될 것이다. 

디버깅을 하고 싶은 포인트를 찍고, 서비스를 호출해보면 

요렇게 정상적으로 리모트 디버깅을 정상적으로 실행하는 것을 확인할 수 있다. 



빌드되어 배포된 jar 파일은 로컬 IDE 에서 실행중인 코드와 동일해야 한다. 그래야 정상적으로 디버깅을 할 수 있다. 



대충 마무리


짧은 글을 대충 마치겠다. 다시한번 강조하지만, 실서비스에 리모트 디버깅을 찍으면 안된다. 서비스가 멈출 수 있다. 끝...

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari