일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- K6
- 오라클
- SQL
- auto configure
- 프로젝트
- spring
- 오라클 디비
- resilience4j
- 티스토리
- 백준 알고리즘
- 학점
- MongoDB
- 알고리즘
- JVM
- oracle
- jsp
- 리눅스
- hyperledger
- 파이썬 소스
- gradle
- 파이썬
- 자바 프로젝트
- dynamic query
- 유사코드
- 자바
- 문법 정리
- 운영체제
- smart cast
- c#
- 초대장
- Today
- Total
모종닷컴
IntelliJ IDEA 디버깅 팁 본문
담당하던 프로젝트 일정이 조금씩 딜레이 되면서 오랜만에 다시 블로그로 돌아온 것 같습니다. 이번 프로젝트 때 많은 기술적인 이슈들을 마주하였는데 지금부터 조금씩 정리하면서 올리려고 합니다. 그중에서도 오늘은 Intellij IDEA 디버깅과 관련된 간단한 팁을 먼저 공유드리려고 합니다.
멀티스레드 환경에서 디버깅하기
개발을 하다보면 동시성 관련 이슈들을 마주하게 됩니다. 동시성 문제라는 걸 자각하지만 로컬에서 재현한다는 것은 꽤나 귀찮은 부분들이 많습니다. 하지만 Intellij IDEA를 사용하시는 분들이라면 이 동시성 재현을 편하게 할 수 있습니다.
사용법은 간단합니다. 아래 사진과 같이 디버깅을 시작하기 원하는 라인에 브레이크 포인트를 걸어놓습니다.
이 상태에서 빨간색 원위에서 우클릭을 해줍니다. 그러면 아래 사진과 같은 옵션 설정 화면이 나올 텐데 Suspend에 현재 All로 설정되어있는 것을 Thread로 바꿔주시면 됩니다.
옵션 이름으로 유추를 해볼 수 있는데 Suspend는 중지를 뜻하고 해당 라인에 특정 스레드가 멈추면 그 외의 모든 스레드들을 모두 멈출지(All) 아니면 해당 라인에 멈춘 스레드만 멈출지를 의미합니다. 따라서 멀티스레드 테스트를 위해서는 이 옵션을 Thread로 두고 하는 게 좋습니다.
Condition 추가하기
아래와 같은 코드가 있다고 가정해보겠습니다.
IntRange(1, 100).forEach { number -> println(number) }
여기서 number가 55인 순간에 라인을 중지하고 싶다고 가정했을 때 브레이크포인트를 걸고 55가 될 때까지 F8 버튼을 누르기는 힘듭니다. 이 경우 디버깅 옵션의 Condition을 사용할 수 있습니다. 위와 같이 브레이크 포인트를 걸어서 우클릭으로 디버깅 옵션을 띄우면 아래에 Condition이라고 되어있는 부분이 존재할 겁니다. 이 부분에 코드를 삽입할 수 있는데 언어는 우측에서 선택하면 되고(저는 지금 화면과 같이 Kotlin으로 설정하였습니다) 아래의 텍스트 칸에는 아래 사진과 같이 해당 언어를 사용하여 조건을 걸 수 있습니다.
'Programming > Intellij IDEA' 카테고리의 다른 글
Intellij IDEA Gradle JVM 설정 (0) | 2023.02.25 |
---|---|
Intellij Idea &Visual VM (with WebFlux, Vegeta) (0) | 2023.02.18 |