如何恢复协程的真实通话记录?

时间:2019-01-24 14:52:55

标签: android kotlin kotlinx.coroutines

对于使用异步API的任何人来说,这都是一个痛苦的熟悉的问题:当您的调用遇到故障时,异步库的私有线程会检测到它,创建一个异常对象,并将其传递给您的回调。值得一毛钱的唯一信息就是该消息及其类型。堆栈跟踪毫无价值。

与Google Play报告应用程序崩溃的方式杂交:消息被剥离,而您得到的只是堆栈跟踪。现在,您已一无所有。您只知道您的应用程序存在您在自己的测试中未检测到的错误。

科特琳的协程至少给我们带来了一些希望,希望它可以做得更好。协程堆栈跟踪在概念上在那里,只是很难提取。但是,目前,我们得到的堆栈跟踪与我上面描述的相同,没有用。

我熟悉kotlinx-coroutines-debug模块,并且在实现方面有一些规定可以重新创建协程堆栈跟踪,但是如何在用户的产品上安装的生产应用程序中利用这些功能智能手机?

3 个答案:

答案 0 :(得分:0)

首先,所有功能均为broken。如果该错误已修复,我将尝试System.setProperty(DEBUG_PROPERTY_NAME,DEBUG_PROPERTY_VALUE_ON)

答案 1 :(得分:0)

provides this possibility起用于IntelliJ IDEA version 1.4的Kotlin插件(对于kotlinx-coroutines-core的1.3.8或更高版本)。

答案 2 :(得分:0)

刚刚发现了一个与此相关的github问题:

堆栈跟踪恢复(https://github.com/Kotlin/kotlinx.coroutines/pull/792) 和相关的文档( https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/debugging.md )

没有调用者站点的stacktrace,协程调试确实很痛苦。希望“调试模式”能有所帮助。会试试看。