Crashlytics:compiler-generated是什么意思?

17

我正在使用Firebase Crashlytics来获取iOS应用程序的崩溃报告,但我遇到了一些我不理解的崩溃,并带有一个<compiler-generated>错误消息。我不知道这种崩溃的原因。

在这里输入图片描述

当我查看堆栈跟踪时,也会有一行或多行带有编译器生成的错误消息。

在这里输入图片描述

我一直在搜索但找不到这种崩溃发生的原因或原因。在这个特定的例子中,以下是发生崩溃的函数(它没有说哪一行)。从我所看到的,我只能猜测它与我在另一个数组上使用数组的索引有关,因此可能超出范围...但我真的不知道。

在这里输入图片描述

这让我很难修复崩溃,因为我只能猜测我的代码可能出了什么问题。而且如果问题实际上是数组越界,它不应该报告崩溃发生的行吗?我真的在努力理解编译器生成的内容,而不是解决这个实际的崩溃 :)


你是怎么解决这个问题的?在我的情况下,crashlytics中没有显示来自我的项目的任何类名。 - Mac_Play
1
请查看此博客 - Noor
1个回答

11

编译器生成是指Swift编译器注入到最终二进制文件中的代码。这可能是展开的内联类型库函数、优化等内容。您截图上的崩溃日志只显示了失败执行堆栈的顶部调用,在大多数情况下,它不是您代码行的原因(虽然有原因),而是某个标准函数调用(来自库或自动生成的)。因此,您需要调查崩溃堆栈的完整回溯,而不仅仅是第一行。


非常感谢您的回答!我一定会更深入地研究堆栈跟踪。这是否与项目中包含许多强制解包和不安全的空值有关? - C. Moulinet
@Asperi 在我的应用程序中,当我手动实现强制崩溃,例如在某些UIButton操作、tableViewDidSelect和自定义协议等方面时,我得到了相同的输出。然后生成IPA并通过TestFlight上传它或通过Xcode组织器窗口安装该IPA。只有这种方式我才能看到像<compiler-generated> - line 2147483647这样的内容。在调试模式下,我看到了一个正确的崩溃报告。 - Ram
@Asperi,您能告诉我关于这个的有效理由吗?当我将应用程序发布到Appstore时,我是否可以期望它会显示真实崩溃报告? - Ram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接