Отладка корутин с помощью IntelliJ IDEA – учебник
Этот учебник демонстрирует, как создавать Kotlin-корутины и отлаживать их с помощью IntelliJ IDEA.
Для этого учебника предполагается, что вы уже знакомы с концепцией корутин.
Создание корутин
Откройте Kotlin-проект в IntelliJ IDEA. Если у вас нет проекта, создайте его.
-
Чтобы использовать библиотеку
kotlinx.coroutinesв проекте Gradle, добавьте следующую зависимость вbuild.gradle(.kts):dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") }dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' }Для других систем сборки см. инструкции в
kotlinx.coroutinesREADME. -
Откройте файл
Main.ktвsrc/main/kotlin.Папка
srcсодержит Kotlin-исходные файлы и ресурсы. ФайлMain.ktсодержит пример кода, который выведетHello World!. -
Измените код в функции
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()}") } -
Соберите код, нажав Собрать проект.

Отладка корутин
-
Установите точки останова в строках с вызовом функции
println():
-
Запустите код в режиме отладки, нажав Отладка рядом с конфигурацией запуска в верхней части экрана.

Открывается окно инструментов Отладка:
Вкладка Фреймы содержит стек вызовов.
Вкладка Переменные содержит переменные в текущем контексте.
Вкладка Корутины содержит информацию о работающих или приостановленных корутинах. Видно, что есть три корутины. Первая имеет статус ЗАПУЩЕНА, а другие две — СОЗДАНЫ.

-
Продолжите сеанс отладки, нажав Продолжить выполнение программы в окне инструментов Отладка:

Теперь вкладка Корутины показывает следующее:
Первая корутина имеет статус ПРИОСТАНОВЛЕНА — она ожидает значения для их умножения.
Вторая корутина вычисляет значение
a— у неё статус ЗАПУЩЕНА.Третья корутина имеет статус СОЗДАНА и не вычисляет значение
b.
-
Продолжите сеанс отладки, нажав Продолжить выполнение программы в окне инструментов Отладка:

Теперь вкладка Корутины показывает следующее:
Первая корутина имеет статус ПРИОСТАНОВЛЕНА — она ожидает значения для их умножения.
Вторая корутина вычислила своё значение и исчезла.
Третья корутина вычисляет значение
b— у неё статус ЗАПУЩЕНА.
С помощью отладчика IntelliJ IDEA вы можете более глубоко изучить каждую корутину для отладки своего кода.
Переменные, исключённые из оптимизации
Если вы используете suspend функции, в отладчике вы можете увидеть текст «был исключён из оптимизации» рядом с именем переменной:

Этот текст означает, что срок жизни переменной был сокращён, и переменная больше не существует. Отладка кода с оптимизированными переменными затруднена, поскольку вы не видите их значений. Вы можете отключить это поведение с помощью опции компилятора -Xdebug.
© 2010–2023 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