티스토리 뷰



기본적으로 스프링 웹 프로젝트는


이클립스에 Tomcat을 연동시켜서 하기 때문에, 내장되어 있는 디버깅 모드로 실행 시 쉽게 동작을 합니다.


다른 방법이 있는지는 잘 모르겠으나... 실력이 미진한 탓에 원격 디버깅 지원 모드를 활성화 하고,


프로젝트에서 JVM 디버깅 세션을 연결해서 사용하는 방법을 찾아 해결하였습니다.


Spring Boot 프로젝트에서 디버깅 모드를 활성하기 위해


Maven Build를 사용할 것이고, pom.xml 아랫 부분에 다음과 같이 세팅합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>springloaded</artifactId>
                        <version>1.2.1.RELEASE</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <jvmArguments>
                        -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
                    </jvmArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
cs


dependencies 안에 springloaded는 프로젝트가 클래스 파일의 HotSwap 기능을 가지도록 지원해줍니다.


밑에 jvmArguments 부분처럼 
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n

코드를 작성해 주면, 원격 디버깅 모드가 활성화 됩니다. (suspend는 y로 설정하셔도 됩니다.) 

address는 포트 번호입니다. 편하신걸로 설정하세요.

해당 포트 번호로 JVM디버깅 세션을 연결하면, IDE의 디버깅 모드를 활성화 할 수 있습니다.


* 그냥 Run As -> Spring Boot App 으로 실행 하시는 분들은

Run Configuration 에서 Spring Boot App 쪽을 가셔서 Arguments 탭에 Vm arguments 부분에 작성해주면 되고, 위의 springloaded 관련도 vm argument에 -javaagent:라이브러리 패스 로 설정하면 되는데

자세한 것은 검색해보시길 바랍니다.


저는 Maven Build 를 활용할 것이니까 pom.xml 에서 위 소스코드처럼 작성하였고,

Run Configurations -> Maven Build 에서 해당 프로젝트를 확인하시고

오른쪽 Main Tab 에서 Goals: 에 spring-boot::run 을 작성합니다.



그리고 Run 버튼으로 실행을 하면, 아래와 같이 콘솔에 출력이 됩니다. 그럼 성공적으로 원격 디버깅 모드가 활성화가 되었습니다.



그런다음


해당 프로젝트-> 마우스 오른쪽 클릭 -> Debug As -> Debug Configurations 를 클릭하시고,

Remote Java Application 으로 가서 프로젝트 확인을 하고, 없으면 추가합니다.


Host 와 Post 를 확인하고, Connection Type 은 Standard ( Socket Attach ) 로 선택하고

Debug 버튼을 클릭하면 됩니다.



그러면 프로젝트가 정상적으로 실행이 되고(디버그 모드로)

실제 디버깅이 되는지 확인해보겠습니다.



간단하게 BreakPoint를 설정하고, 해당 Mapping 주소로 접근을 하면,



Debug 탭에서 이처럼 확인을 할 수 있습니다.


해당 프로젝트는 Springloaded 기능과 디버깅 모드를 적절히 활용하면, 스프링 부트에서도 쉽게 개발을 진행할 수 있을 것 같습니다.


Spring Boot App 같은 경우는 Jar 로 패키징 되고 WAS를 내장하게 되므로, 서비스 올릴 때에도 적절히 디버깅 모드를 활용해볼 수 있을 것 같습니다.



댓글