IntelliJ에서 자바, 코틀린 코드 호출 횟수 확인 방법
하나의 에디터를 잘 사용하라
텍스트는 프로그래밍의 원재료이다.
따라서, 에디터는 소프트웨어 개발의 가장 중요한 도구중 하나이다.
에디터를 하나 골라 마스터하고,
모든 편집 작업에 그 에디터를 사용하라.
- Andrew Hunt in “Pragmatic Programmer”
대상
- Java/Kotlin 사용자 (초보자부터 전문가까지)
버전 요구 사항:
- IntelliJ IDEA 2023.2.5 (Ultimate Edition)
- Kotlin 1.5 이상
- **하위 버전에 대해서는 별도 확인 필요
👉🏼 서론
때때로 우리는 특정 코드가 얼마나 자주 실행되는지 알고 싶어 합니다. 예를 들어, 스프링부트 서버 개발 과정에서…
빌드 테스트 시 `SpringApplication.refreshContext()` 호출 횟수
…와 같은 질문을 할 수 있습니다.
이번 포스트에서는 IntelliJ를 활용한 자바/코틀린 코드의 호출 횟수를 확인하는 방법을 공유하고자 합니다.
결론부터 말씀드리자면 방법은 IntelliJ Debug 모드를 활용하는 것입니다.
👉🏼 본론
카운트할 부분에 브레이크포인트(빨간 동그라미) 설정: 해당 위치를 클릭하면 브레이크포인트가 생성됩니다.
브레이크포인트를 마우스 오른쪽 버튼으로 클릭하면 나타나는 팝업에서 ‘Done’ 버튼 반대편에 있는 ‘More’ 버튼 클릭합니다.
좌측 목록에서 선택한 브레이크포인트 클릭, 예를 들어 (ServletWebServerApplicationContext.java:145)
잠시 “Breakpoints” dialog 구성에서 주요 옵션들만 설명
- ‘Suspend’ : 브레이크포인트에 도달했을 때 일시 정지 정책
- ‘All’ : 하나의 스레드라도 브레이크포인트에 도달하면 모든 스레드가 일시 중단
- ‘Thread’ : 브레이크포인트에 도달한 스레드만 일시 중단 - ‘Log’: 브레이크포인트에 도달했을 때의 로깅 정책
- “Breakpoint hit” message’ 옵션 : 단순 메시지 출력 (e.g. ‘Breakpoint reached at ocean.Whale.main(Whale.java:5)’) - 나머지 설명은 생략
우리는 Suspend 옵션 해제 후 Log -> “Breakpoint hit” message 만 체크해줍니다.
그리고 우측 하단의 Done 버튼 클릭
화면보면 Breakpoint 가 노란색으로 보입니다.
로깅만 하기 때문에 👍🏼
실행할 테스트를 디버그 모드로 실행합니다.
테스트 소스 디렉토리를 오른쪽 버튼으로 클릭한 후 ‘Debug “Tests in ‘kotlin’’ 버튼 클릭도 가능합니다.
다른 디버그 실행 방법으로는 인터넷에서 “IntelliJ 디버그 모드 실행 방법”을 검색해 볼 수도 있습니다.
위 사진을 따라 같이 디버그 툴 창을 엽니다.
열기 방법은 여러 가지가 있는데, 그 중 제가 알고 있는 방법은 다음 두 가지입니다.
- 맥북 단축키: Cmd + 5
- IntelliJ 상단 툴바 -> View -> Tool Windows -> Debug
(사진 상단 동그라미) - InteliJ 하단 툴바 -> Debug 클릭
(사진 하단 동그라미)
위 화면에서 우측에 ‘Layout Settings’ 버튼(1번)을 클릭한 후 ‘Overhead’(2번) 라인을 클릭하면…
위 사진과 같이 설정한 브레이크포인트에 도달할 때마다 ‘Hits’ 카운트가 증가합니다.
위 예제에서는 총 9회 호출 된 것이 확인됩니다.
참고로 Breakpoint에 ‘Suspend’를 비활성화하고 ‘Logging’만 활성화했기 때문에 테스트가 중간에 일시 정지되지 않은 것입니다.
👉🏼 결론
에디터와 같은 적극적인 툴 활용은 개발자의 생산성에 중요한 영향을 미칩니다.
특히, IntelliJ의 디버그 모드는 그 기능의 용도와 범위가 상당히 강력합니다.
이번에 소개한 호출 횟수 확인 방법 외에도, IntelliJ 의 디버그 모드의 여러 기능들을 적극 활용하면 개발 과정에서 생산성이 많이 향상될 것입니다.
반대로 비효율은 피해야합니다. 예를들어 디버깅 목적으로 코드 곳곳에 System.out.println을 삽입하는 행위 처럼 말이지요.
결론적으로, IntelliJ 의 강력한 기능들의 적극 활용을 권장드리며 다른 유용한 기능 찾아내신다면 (저를 포함한 🥹) 주변 분들에게 공유해주시면 너무 좋을 것 같습니다.
질문이나 다른 문의 사항은 제 🔗linkedin 을 통해 DM 주시면 적극 답변드리겠습니다.
읽어주셔서 감사합니다.!