Spec-Zone.ru › Kotlin 2

Отладка корутин с помощью IntelliJ IDEA — руководство

В этом руководстве показано, как создавать корутины Kotlin и отлаживать их с помощью IntelliJ IDEA.

Предполагается, что вы уже знакомы с понятием корутин.

Создание корутин

  1. Откройте проект Kotlin в IntelliJ IDEA. Если у вас нет проекта, создайте его.

  2. Чтобы использовать библиотеку kotlinx.coroutines в проекте Gradle, добавьте следующую зависимость в build.gradle(.kts):

    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0")
    }
    
    dependencies {
        implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0'
    }
    

    Инструкции для других систем сборки см. в файле README библиотеки kotlinx.coroutines.

  3. Откройте файл Main.kt в src/main/kotlin.

    Каталог src содержит исходные файлы Kotlin и ресурсы. Файл Main.kt содержит пример кода, который выведет Hello World!.

  4. Измените код в функции main():

    • Используйте блок runBlocking(), чтобы обернуть корутину.

    • Используйте функцию async(), чтобы создать корутины, вычисляющие отложенные значения a и b.

    • Используйте функцию await(), чтобы дождаться результата вычисления.

    • Используйте функцию println(), чтобы вывести в консоль состояние вычислений и результат умножения.

    import kotlinx.coroutines.*
    
    fun main() = runBlocking<Unit> {
        val a = async {
            println("I'm computing part of the answer")
            6
        }
        val b = async {
            println("I'm computing another part of the answer")
            7
        }
        println("The answer is ${a.await() * b.await()}")
    }
    
  5. Соберите проект, нажав Собрать проект.

    Build an application

Отладка корутин

  1. Установите точки останова на строках с вызовом функции println():

    Build a console application
  2. Запустите код в режиме отладки, нажав Отладка рядом с конфигурацией запуска в верхней части экрана.

    Build a console application

    Откроется окно инструментов Отладка:

    • Вкладка Кадры содержит стек вызовов.

    • Вкладка Переменные содержит переменные текущего контекста.

    • Вкладка Корутины содержит информацию о выполняющихся или приостановленных корутинах. Она показывает, что корутин три. Первая имеет статус ВЫПОЛНЯЕТСЯ, а две другие — статус СОЗДАНА.

    Debug the coroutine
  3. Возобновите сеанс отладки, нажав Возобновить программу в окне инструментов Отладка:

    Debug the coroutine

    Теперь на вкладке Корутины отображается следующее:

    • Первая корутина имеет статус ПРИОСТАНОВЛЕНА — она ожидает значений, чтобы перемножить их.

    • Вторая корутина вычисляет значение a — она имеет статус ВЫПОЛНЯЕТСЯ.

    • Третья корутина имеет статус СОЗДАНА и ещё не вычисляет значение b.

  4. Возобновите сеанс отладки, нажав Возобновить программу в окне инструментов Отладка:

    Build a console application

    Теперь на вкладке Корутины отображается следующее:

    • Первая корутина имеет статус ПРИОСТАНОВЛЕНА — она ожидает значений, чтобы перемножить их.

    • Вторая корутина вычислила значение и исчезла.

    • Третья корутина вычисляет значение b — она имеет статус ВЫПОЛНЯЕТСЯ.

С помощью отладчика IntelliJ IDEA можно подробно изучить каждую корутину и отладить код.

Оптимизированные переменные

При использовании функций suspend в отладчике рядом с именем переменной может отображаться текст «оптимизировано»:

Variable "a" was optimized out

Этот текст означает, что время жизни переменной было сокращено и она больше не существует. Отлаживать код с оптимизированными переменными сложно, поскольку их значения не отображаются. Это поведение можно отключить с помощью параметра компилятора -Xdebug.

Никогда не используйте этот флаг в рабочей среде: -Xdebug может привести к утечкам памяти.

10 марта 2025 г.
Отладка корутинОтладка Kotlin Flow с помощью IntelliJ IDEA — руководство

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/debug-coroutines-with-idea.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API