※ソース記事はこちら
このチュートリアルでは、Kotlinコルーチンを作りIntelliJ IDEAを使ってデバッグする方法をデモする。
チュートリアルは、事前にコルーチンの概要の知識があることを想定している。
デバッグはkotlinx-coroutines-core
バージョン1.3.8以上で動作する。
コルーチンの作成
- IntelliJ IDEAでKotlinプロジェクトを開く。無い場合は一つ作成する。
-
src/main/kotlin
内のmain.kt
を開く。
src
ディレクトリには、Kotlinソースとリソースが含まれる。main.kt
ファイルにはHello World!
を出力するサンプルコードが含まれている。 -
main
関数内のコードを変更する。- コルーチンをラップするためにrunBlockingブロックを使う。
- deferred値の
a
とb
を計算するコルーチンを作るため、async関数を使う。 - 計算結果を待つために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()
関数呼びだしを持つ行にブレークポイントを設定する。
- 画面の上にある実行構成のとなりの
デバッグ
をクリックすることで、デバッグモードでコードを実行する。
デバッグ
ツールウィンドウが表示される。 -
デバッグ
ツールウィンドウの再開
をクリックすることで、デバッグセッションを再開する。
現在コルーチン
タブには次のものが見えている。- 最初のコルーチンは
SUSPENDED
状態であり、掛け算をするために値を待っている。 - 二つめのコルーチンは
a
の値を計算している。RUNNING
状態を持つ。 - 三つめのコルーチンは
CREATED
状態を持ち、b
の値を計算していない。
- 最初のコルーチンは
-
デバッグ
ツールウィンドウの再開
をクリックすることで、デバッグセッションを再開する。
現在コルーチン
タブには次のものが見えている。- 最初のコルーチンは
SUSPENDED
状態であり、掛け算をするために値を待っている。 - 二つめのコルーチンは値を計算し消えている。
- 三つめのコルーチンは
b
の値を計算しており、RUNNING
状態を持つ。
- 最初のコルーチンは
IntelliJ IDEAのデバッガーを使うことで、自分のコードをデバッグするためにそれぞれのコルーチンを詳しく調べることができる。