IntelliJ IDEA
 
Get IntelliJ IDEA

Debug Kotlin coroutines

Last modified: 18 December 2024

While coroutines are particularly well suited for asynchronous programming, there is still room for mistakes, which may be hard to figure out due to the challenges that the asynchronous flow poses.

When debugging Kotlin code, IntelliJ IDEA allows you to suspend the execution and diagnose problems that the code in coroutines may have. The debug information is available even if the coroutine is not running at the moment.

Coroutine debugger provides you with the information on:

  • The list of coroutines and their states grouped by dispatcher. To get the list, go to the Coroutines tab. The top-level nodes are dispatchers, then go coroutines. For each coroutine, you get information on its current state (CREATED, RUNNING, SUSPENDED) and the state of its thread.

    List of coroutines in the Coroutines tab
  • Coroutine context: the values of local variables and fields available in a coroutine at a certain execution point. When debugging coroutines, you can use all the standard functionality of the Variables tab. For more information about using the Variables tab, refer to the Examine/update variables topic.

    Variables tab for a coroutine
  • The coroutine creation stack and the call stack inside the coroutine.

    The coroutine creation stack

    If you are not interested in calls in Kotlin classes, you can hide them by clicking Hide Frames from Libraries in the top-right corner of the Frames tab.

    Hide calls in Kotlin classes