IntelliJ IDEA에서 코루틴 디버그하기 (Debug coroutines using IntelliJ IDEA – tutorial)
이 튜토리얼은 Kotlin 코루틴을 생성하고 IntelliJ IDEA를 사용하여 디버그하는 방법을 보여줍니다.
이 튜토리얼은 코루틴 개념에 대한 사전 지식이 있다고 가정합니다.
코루틴 생성하기
1. IntelliJ IDEA에서 Kotlin 프로젝트를 열어보세요. 프로젝트가 없다면 새로 만드세요.
2. Gradle 프로젝트에서 kotlinx.coroutines 라이브러리를 사용하려면 build.gradle(.kts)에 다음 종속성을 추가하세요:
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
}
다른 빌드 시스템의 경우 kotlinx.coroutines README의 지침을 참조하세요.
3. src/main/kotlin에 있는 Main.kt 파일을 열어보세요.
src 디렉토리에는 Kotlin 소스 파일과 리소스가 포함되어 있습니다. Main.kt 파일에는 "Hello World!"를 출력하는 샘플 코드가 포함되어 있습니다.
4. main() 함수에서 코드를 변경하세요:
코루틴을 래핑하기 위해 runBlocking() 블록을 사용하세요.
async() 함수를 사용하여 값을 계산하는 코루틴을 생성하세요.
await() 함수를 사용하여 계산 결과를 기다리세요.
println() 함수를 사용하여 계산 상태와 곱셈 결과를 출력하세요.
import kotlinx.coroutines.*
fun main() = runBlocking<Unit> {
val a = async {
println("일부 답을 계산 중입니다")
6
}
val b = async {
println("다른 일부 답을 계산 중입니다")
7
}
println("답은 ${a.await() * b.await()}")
}
5. Build Project를 클릭하여 코드를 빌드하세요.
코루틴 디버깅하기
1. println() 함수 호출 라인에 중단점을 설정하세요:
2. 화면 상단의 실행 구성 옆에 있는 Debug를 클릭하여 디버그 모드로 코드를 실행하세요.
디버그 도구 창이 나타납니다:
- Frames 탭에는 호출 스택이 포함되어 있습니다.
- Variables 탭에는 현재 컨텍스트의 변수가 포함되어 있습니다.
- Coroutines 탭에는 실행 중인 또는 중단된 코루틴에 대한 정보가 포함되어 있습니다. 세 개의 코루틴이 있음을 보여주며, 첫 번째 코루틴은 RUNNING 상태이고 나머지 두 개는 CREATED 상태입니다.
3. 디버그 도구 창에서 Resume Program을 클릭하여 디버거 세션을 다시 시작하세요:
이제 Coroutines 탭에는 다음이 표시됩니다:
- 첫 번째 코루틴은 SUSPENDED 상태이며 값들을 기다리고 있습니다.
- 두 번째 코루틴은 a 값을 계산 중이며 RUNNING 상태입니다.
- 세 번째 코루틴은 CREATED 상태이며 b 값을 계산하지 않습니다.
4. 디버그 도구 창에서 Resume Program을 클릭하여 디버거 세션을 다시 시작하세요:
이제 Coroutines 탭에는 다음이 표시됩니다:
- 첫 번째 코루틴은 SUSPENDED 상태이며 값들을 기다리고 있습니다.
- 두 번째 코루틴은 값을 계산하고 사라졌습니다.
- 세 번째 코루틴은 b 값을 계산 중이며 RUNNING 상태입니다.
IntelliJ IDEA 디버거를 사용하여 각 코루틴을 더 자세히 살펴볼 수 있습니다.
최적화된 변수
디버거에서 suspend 함수를 사용하는 경우 변수 이름 옆에 "was optimized out" 텍스트를 볼 수 있습니다:
이 텍스트는 변수의 수명이 감소하고 변수가 더 이상 존재하지 않음을 의미합니다. 최적화된 변수로 코드를 디버깅하는 것은 어렵기 때문에 -Xdebug 컴파일러 옵션을 사용하여 이 동작을 비활성화할 수 있습니다.
원문
댓글