是否可以在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")
还是不行。现在我不知道如何使用调试器时,与协程工作。你们可以帮助我吗?
先谢了
阿尔班
2条答案
按热度按时间yhived7q1#
我通常会添加一行
System.err.println(a)
,这样,如果我停在那里,a
就需要在那里,这样我就可以验证它的值。不是很有伸缩性,但是对于调试来说很适合我。
wlp8pajw2#
我倾向于不在
suspend
点添加调试点,因为coroutine
在那里修改代码。相反,在coroutineScope
内或suspend fun
的主体内的某个lambda处添加调试器。此外,您可以在Android中添加
Log.d("CoroutineDebug", "your message")
或在Java项目中添加println
,以获得有关代码执行的一些信息。顺便说一句,问题https://youtrack.jetbrains.com/issue/KT-22296和https://youtrack.jetbrains.com/issue/KT-25076已经关闭了,所以在调试的时候你可以很容易地计算变量