介绍
主要介绍如何在Android Studion中通过调试模式进行调试协程的线程。
让我们学会如何进行协程的调试。
1.创建协程数据
这一步就没有啥复杂的。我们要调试就需要先准备好数据。
准备调试的协程代码,从Kotlin 协程 组合挂起函数和async关键字,实现协程的并发操作 (zinyan.com)中随便拷贝一个示例代码:
package com.zinyan.general
import kotlinx.coroutines.*
import kotlin.system.measureTimeMillis
suspend fun doSomethingUsefulOne(): Int {
delay(1000L) // 假设我们在这里做了一些有用的事
return 13
}
suspend fun doSomethingUsefulTwo(): Int {
delay(1000L) // 假设我们在这里也做了一些有用的事
return 29
}
/**
* 开始逻辑
*/
suspend fun main() {
val time = measureTimeMillis {
val one = doSomethingUsefulOne()
val two = doSomethingUsefulTwo()
println("得到两个值的结果是 ${one + two}")
}
println("两个函数调用后的消耗时间为: $time 毫秒 ")
}
然后我们在代码中添加断点(和普通调试模式是一样的)
在上图所示的地方,鼠标单击就可以添加上断点了。
然后点击下图所示的的Debug 按钮。
运行后,程序就会在该断点地方中断,进入调试模式。
我们可以看到,协程的调试窗口。
2. Debug 面板介绍
面板上部的几个按钮和我们在调试java代码时是一样的。执行程序的下一步等操作。
相较于其他主要是多了三个面板:
Frames/ Threads: 选项卡包含调用堆栈和线程信息。
Variables:选项卡包含当前上下文中的变量。并会输出相应变量的参数值
Overhead/Coroutines: 选项卡包含有关正在运行或挂起的协程的信息。在Overhead 会显示当前协程的开销耗时,而Coroutines会列出正在运行或者挂起的协程对象。但是在Android Studio中显示的比较简单。
To enableinformation breakpoint suspend policy should be set to 'All' threads
我们右击之后打开才能看到协程的运行状态,只有简单的状态信息。
而我们调试协程主要看的就是Threads 的线程以及Varibles中输出的结果。
例如
上面这个示例中,协程对象还没有结果,可以看到状态。
当我们运行到输出之后,可以看到 信息的结果。
然后我们再比对调试过程中的参数,与业务流程的参数。
判断是否错误。
协程在状态暂停时,是没有结果的,处于等待状态。
然后进入计算状态。
最后计算结束。协程对象就可能被销毁了。注意销毁后Debug也追踪不到了。
[使用 IntelliJ IDEA 调试协程 – 教程 |科特林 (kotlinlang.org)]: 主要介绍IntelliJ IDEA 中调用Debug进行协程调试
评论区