IntelliJ IDEA 2021.1 Help

Debug Kotlin coroutines

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 (RUNNING, SUSPENDED) and the state of its thread.

    Kotlin debug coroutines list
  • 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 on using the Variables tab, see the Examine/update variables topic.

    Kotlin debug coroutines context
  • The coroutine creation stack and the call stack inside the coroutine.

    Kotlin debug coroutines frames

    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.

    Kotlin debug coroutines frames f

Get coroutines dump

If you need to get a report containing the state of each coroutine and its stack, use the coroutine dump option. This is useful when you need to share the information about the coroutines in text format.

  1. Right-click anywhere in the Coroutines tab and select Get Coroutines Dump.

    Kotlin debug coroutines dump1
  2. A tab with the dump opens where you can choose what to export:

    • If you want to copy the information related to a specific coroutine, select it and click Copy.

      Kotlin debug coroutines dump2
    • To export the dump of all coroutines, click Export to Text File, then click Copy (to copy the dump to the clipboard), or specify the file and click Save.

      Kotlin debug coroutines dump3
Last modified: 31 May 2021