侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 274 篇文章
  • 累计创建 55 个标签
  • 累计收到 74 条评论

Kotlin 协程- debug调试方法

Z同学
2021-12-15 / 0 评论 / 0 点赞 / 385 阅读 / 1,324 字
温馨提示:
本文最后更新于 2021-12-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

主要介绍如何在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 毫秒 ")
}

然后我们在代码中添加断点(和普通调试模式是一样的)

image-20211215180550492

在上图所示的地方,鼠标单击就可以添加上断点了。

然后点击下图所示的的Debug 按钮。

image-20211215180659634

运行后,程序就会在该断点地方中断,进入调试模式。

image-20211215180751612

我们可以看到,协程的调试窗口。

2. Debug 面板介绍

面板上部的几个按钮和我们在调试java代码时是一样的。执行程序的下一步等操作。

image-20211215181146338

相较于其他主要是多了三个面板:

image-20211215181227803

Frames/ Threads: 选项卡包含调用堆栈和线程信息。

Variables:选项卡包含当前上下文中的变量。并会输出相应变量的参数值

Overhead/Coroutines: 选项卡包含有关正在运行或挂起的协程的信息。在Overhead 会显示当前协程的开销耗时,而Coroutines会列出正在运行或者挂起的协程对象。但是在Android Studio中显示的比较简单。

To enableinformation breakpoint suspend policy should be set to 'All' threads

我们右击之后打开才能看到协程的运行状态,只有简单的状态信息。

而我们调试协程主要看的就是Threads 的线程以及Varibles中输出的结果。

例如

image-20211215183405837

上面这个示例中,协程对象还没有结果,可以看到状态。

当我们运行到输出之后,可以看到 信息的结果。

image-20211215183543667

然后我们再比对调试过程中的参数,与业务流程的参数。

判断是否错误。

协程在状态暂停时,是没有结果的,处于等待状态。

然后进入计算状态。

最后计算结束。协程对象就可能被销毁了。注意销毁后Debug也追踪不到了。

[使用 IntelliJ IDEA 调试协程 – 教程 |科特林 (kotlinlang.org)]: 主要介绍IntelliJ IDEA 中调用Debug进行协程调试

0

评论区