我们使用 Crashlytics 来报告我们的 Android 应用用户面临的崩溃。我们的很多代码都是 native 代码 (c++),因此很多崩溃都发生在 native 代码中。然而,大多数(如果不是全部)它们最终被分组到 “abort_message.cpp line 77” 下。这是各种不同崩溃的堆栈跟踪的顶部部分 -
我通过在不同的文件中制造不同类型的崩溃来进行测试,比如 throw std::runtime_error("Testing crash")
、throw std::logic_error("Testing crash2")
,但它们最终都具有相同的前几帧(如上图)。
现在,由于崩溃堆栈的顶层框架是abort_message.cpp line 77
,所以它们被分组在同一个头下。
将不同的崩溃分组在同一组中,使得很难确定崩溃修复的优先级和目标。那么无论如何我们可以解决这个问题吗?或者解决这个问题?
注意:我们正在将原生符号上传到 crashlytics,我们的堆栈跟踪非常详细。
另一件困扰我的事情是,不同类型的崩溃都被报告为 SIGABRT。
最佳答案
此处为 Fabric/Firebaser -
这看起来是 Crashlytics 未很好展开的 C++ 异常 - 这是 NDK 与 Crashlytics 集成的一个方面,我们希望在未来进行改进。抛出 C++ 异常时,系统会处理未捕获的 C++ 异常引发的信号,而不是处理异常本身,从而导致堆栈跟踪的前几帧相同,并将不同的问题组合在一起。
它应该还有相关的崩溃信息,所以下面的帧应该是不同的,但怪帧会是那个abort_message帧。
感谢您的报告 - 这绝对是我们正在寻求尽快改进的东西。
关于android - 如何取消组合 Fabric 中的 native 崩溃报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57088379/