对于使用异步API的任何人来说,这都是一个痛苦的熟悉问题:当您的调用遇到故障时,异步库的私有线程会检测到它,创建一个异常对象,并将其传递给您的回调。值得一毛钱的唯一信息就是该消息及其类型。堆栈跟踪毫无价值。
与Google Play报告应用程序崩溃的方式混杂在一起:消息被剥离,而您得到的只是堆栈跟踪。现在,您已一无所有。您只知道您的应用程序存在您在自己的测试中未检测到的错误。
Kotlin的协程至少给我们一些希望,可以将其做得更好。协程堆栈跟踪在概念上在那里,只是很难提取。但是,当前我们获得的堆栈跟踪与我上面描述的相同,没有用。
我熟悉kotlinx-coroutines-debug模块,并且在实现方面有一些规定可以重新创建协程堆栈跟踪,但是如何在用户智能手机上安装的生产应用程序中利用这些功能?