꿈소년의 개발 이야기

CoroutineName 과 Coroutine 디버깅 본문

Android Development

CoroutineName 과 Coroutine 디버깅

꿈소년 2023. 1. 13. 13:53
반응형

코루틴 디버깅을 하는 것은 쉽지 않습니다.

 

일반적으로 코루틴을 디버깅할 때, 어떤 코루틴인지 알기 어렵기 때문에 이름을 붙입니다.

 

CoroutineName 활용

CoroutineScope(CoroutineName("MyCoroutine") + Dispatchers.IO).launch {
    // impl
}
  • CoroutineName 을 추가하면 해당 코루틴에게 이름이 붙습니다.
  • 로그 메시지에서 해당 이름이 출력됩니다.

이를 통해서 디버깅할 때, 동시 다발로 발생하는 코루틴도 이름으로 식별 가능합니다.

 

CoroutineName 이 표시가 되려면 디버깅 옵션을 추가해야 하는데요.

-Dkotlinx.coroutines.debug

인텔리제이 기준으로 

Run > Edit Configuration > VM options 에 위 문구를 추가합니다.

 

다만, 안드로이드 스튜디오는 저런 부분이 없습니다. 그리고 실제로 애플리케이션이 실행되는 시점에 뭔가 처리를 해줘야 합니다.

그래서 메인 애플리케이션에 아래와 같이 처리해주면 좋습니다.

System.setProperty("kotlinx.coroutines.debug", "on" )

이렇게 설정하고 나면, 앱에서 실행한 코루틴 이름을 출력하면 나타납니다.

프로덕트로 배포되는 경우에는 제거하거나, 빌드 flavor 에 따라 다르게 처리해주는 건 덤입니다.