이 튜토리얼은 IntelliJ IDEA를 사용해 Kotlin Coroutine을 만들고 디버깅하는 방법을 설명한다.
이 튜토리얼에서는 독자들이 Coroutine 개념에 대한 사전 지식이 있다고 가정한다.
Coroutine 생성하기
1. Intellij IDEA에서 Kotlin 프로젝트를 연다. 만약 프로젝트가 없다면 하나를 새로 만든다.
2. kotlinx.coroutines 라이브러리를 Gradle 프로젝트에서 사용하기 위해서 다음 종속성을 build.gradle(.kts)에 추가한다.
Kotlin Gradle
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
}
Groovy Gradle
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
}
다른 빌드 시스템을 위해서는 kotlinx.coroutines README 의 지침을 참조하라.
3. src/main/kotlin 속의 Main.kt 파일을 연다.
src 디렉토리에는 Kotlin 소스 파일고 리소스가 포함되어 있다. Main.kt 파일에서는 Hello World! 를 출력하는 샘플 코드가 들어 있다.
4. main()함수 속의 코드를 수정한다 :
- Coroutine을 감싸기 위해 runBlocking() 블록을 사용한다.
- async() 함수를 사용해 Deferred 값인 a와 b를 생성하는 Coroutine을 생성한다.
- await() 함수를 사용해 연산 결과가 나올 때까지 기다린다.
- println() 함수를 사용해 연산 상태와 곱셈 결과를 출력한다.
import kotlinx.coroutines.*
fun main() = runBlocking<Unit> {
val a = async {
println("I'm computing part of the answer")
6
}
val b = async {
println("I'm computing another part of the answer")
7
}
println("The answer is ${a.await() * b.await()}")
}
5. Build Project를 클릭해서 코드를 빌드한다.
Coroutine 디버그 하기
1. println() 함수 호출부들에 브레이크 포인트를 설정한다:
2. 화면 상단의 Run 옆에 있는 Debug를 클릭해서 디버그 모드로 코드를 실행한다.
디버그 툴 윈도우는 다음과 같이 나타난다:
- Frames 탭은 콜스택을 포함한다.
- Variable 탭은 현재 Context 속의 변수를 포함한다.
- Coroutines 탭은 실행중이거나 일시중단된 Coroutine에 대한 정보를 포함한다. 이는 3개의 Coroutine이 있음을 보여준다. 첫 째는 RUNNING 상태를 가진다, 그리고 다른 두개는 CREATED 상태를 가진다.
3. 디버그 툴 윈도우의 Resume Program을 눌러서 Debugger 세션을 재개한다.
이제 Coroutine 탭은 다음을 보여준다:
- 첫 Coroutine은 SUSPENDED 상태를 가진다 - 이는 값을 기다리고 이에 따라 곱셈 연산을 수행할 수 있다.
- 두번째 Coroutine은 a 값을 계산한다 - 이는 RUNNING 상태를 가진다.
- 셋째 Coroutine은 CREATED 상태를 가지고 b의 값을 계산하지 않는다.
4. 디버그 툴 윈도우의 Resume Program을 눌러서 Debugger 세션을 재개한다.
이제 Coroutine 탭은 다음을 보여준다:
- 첫 Coroutine은 SUSPENDED 상태를 가진다 - 이는 값을 기다리고 이에 따라 곱셈 연산을 수행할 수 있다.
- 두번째 Coroutine은 값을 계산했고 사라졌다.
- 셋째 Coroutine은 b의 값을 계산한다 - 이는 RUNNING 상태를 가진다.
IntelliJ IDEA 디버거를 사용하면, 코드를 디버그 하기 위해 각 Coroutine을 깊게 팔 수 있다.
이 글은 Coroutines 공식 문서를 번역한 글입니다.
원문 : Debug coroutines using IntelliJ IDEA – tutorial
원문 최종 수정 : 2022년 8월 5일
'공식 문서 번역 > Coroutines 공식 문서' 카테고리의 다른 글
Coroutines와 Channels 튜토리얼 - 1. 시작하기 전 준비하기 (0) | 2023.05.19 |
---|---|
IntelliJ IDEA 사용해 Kotlin Flow 디버깅 하기 (0) | 2023.05.18 |
Coroutine 공유 상태와 동시성 3편 - Mutex 사용하기, Actors 사용하기 (0) | 2023.05.16 |
Coroutine 공유 상태와 동시성 2편 - Thread-safe한 데이터 구조, 세밀하게 Thread 제한하기, 굵게 Thread 제어하기 (0) | 2023.05.15 |
Coroutine 공유 상태와 동시성 1편 - Coroutine을 여러개 실행했을 때의 문제점, Volatile은 동시성 문제를 해결하지 못한다. (0) | 2023.05.14 |