debugging 在Android中调试Kotlins协同程序

wf82jlnq  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(195)

是否可以在Android中调试协程?当我尝试调试以下代码片段时:

runBlocking {
        try {
            async(CommonPool) {
                showLoadingIndicator()
                val a = loadData().await()
                hideLoadingIndicator()
            }
        } catch (e: Exception) {
            Log.e("lala", "exception " + e.toString())
        }
}

val a具有以下消息:Cannot find local variable: name = a
在我的应用程序中,我设置协程调试的属性如下:

System.setProperty("kotlinx.coroutines.debug", if (BuildConfig.DEBUG) "on" else "off")

还是不行。现在我不知道如何使用调试器时,与协程工作。你们可以帮助我吗?
先谢了
阿尔班

yhived7q

yhived7q1#

我通常会添加一行System.err.println(a),这样,如果我停在那里,a就需要在那里,这样我就可以验证它的值。
不是很有伸缩性,但是对于调试来说很适合我。

wlp8pajw

wlp8pajw2#

我倾向于不在suspend点添加调试点,因为coroutine在那里修改代码。相反,在coroutineScope内或suspend fun的主体内的某个lambda处添加调试器。
此外,您可以在Android中添加Log.d("CoroutineDebug", "your message")或在Java项目中添加println,以获得有关代码执行的一些信息。
顺便说一句,问题https://youtrack.jetbrains.com/issue/KT-22296https://youtrack.jetbrains.com/issue/KT-25076已经关闭了,所以在调试的时候你可以很容易地计算变量

相关问题