관리 메뉴

피터의 개발이야기

[kotlin] 코틀린 코루틴 디버깅 옵션설정 방법 본문

Programming/Kotlin

[kotlin] 코틀린 코루틴 디버깅 옵션설정 방법

기록하는 백앤드개발자 2024. 6. 12. 10:10
반응형

ㅁ 들어가며

ㅇ 코루틴의 디버깅을 하기 위해서는 코루틴의 Job, Dispatchers, Context 정보를 확인해야 한다.

ㅇ 비동기처리를 위한 다양한 코루틴의 방식을 이해하기 위해서 필요한 기본 정보를 출력할 수 있어야 한다.

ㅇ 이를 위한 디버깅 방법을 정리하였다.

 

ㅁ 기본 디버깅 방법: Debuging Mode 

fun main() = runBlocking<Unit> {
  println("[${Thread.currentThread().name}] 디버깅 테스트")
}
/*
[main] 디버깅 테스트
 */

ㅇ 메인 스레드의 이름만 나올 뿐 Coroutine의 내용을 확인하기 어렵다.

 

ㅇ 실행 시 Debug 모드로 실행

ㅇ Coroutine의 Job과 Dispatcher를 확인할 수 있다.

 

ㅁ 코루틴의 디버깅 옵션 설정:  Debugging using logging

ㅇ 오른쪽 상단에 Run Configurations에서 Edit Configurations를 클릭한다.

 

ㅇ Edit configuration templates를 클릭한다.

 

ㅇ Kotlin을 선택하고 VM options을 입력한다.

-Dkotlinx.coroutines.debug

ㅇ 이렇게 하면 신규로 생성하는 Run Configuration에 기본적으로 디버깅 옵션이 적용된다.

 

ㅇ 기본에 생성된 설정에도 VM 옵션을 추가하였다.

 

fun main() = runBlocking<Unit> {
  println("[${Thread.currentThread().name}] 디버깅 테스트")
}
/*
[main @coroutine#1] 디버깅 테스트
 */

ㅇ 디버깅 시 Coroutine의 정보도 함게 확인할 수 있다.

 

ㅁ 실행시간 추가

fun main() = runBlocking<Unit> {
  val startTime = System.currentTimeMillis()
  println("[${Thread.currentThread().name}][${chapter4.code8.getRunTime(startTime)}] 디버깅 테스트")
  delay(1000L)
  launch(Dispatchers.IO) {
    println("[${Thread.currentThread().name}][${chapter4.code8.getRunTime(startTime)}] 코루틴 실행")
  }
}
fun getRunTime(startTime: Long): String = "실행시간: ${System.currentTimeMillis() - startTime}ms"
/*
[main @coroutine#1][실행시간: 0ms] 디버깅 테스트
[DefaultDispatcher-worker-1 @coroutine#2][실행시간: 1027ms] 코루틴 실행
*/

ㅇ 할당된 스레드의 이름과 코루틴의 정보, 실행시간을 출력하는 샘플이다.

ㅇ 비동기처리를 위한 다양한 코루틴의 방식을 이해하기 위해서 필요한 기본 정보를 출력할 수 있다.

 

ㅁ 함께 보면 좋은 사이트

Debug coroutines using IntelliJ IDEA – tutorial

DEBUG_PROPERTY_NAME

반응형
Comments