它不是重复的。我的问题是如何象征崩溃错误。
我的实时应用程序崩溃了,我已经在xCode和crashlytics中崩溃了报告,但是我没有崩溃日志,因为它在实时应用程序中发生并且是随机的。
是否可以在没有崩溃日志的情况下从崩溃报告中获取一些含义?
我们如何从此类报告中找出文件和行号?
这是这种崩溃的一个例子
crash_info_entry_0
abort() called
crash_info_entry_1
myapp(569,0x16df57000) malloc: *** error for object 0x10404ddae: pointer being freed was not allocated
答案 0 :(得分:1)
符号化是将地址转换为符号(函数,方法等)的过程。没有包含这些地址的崩溃日志,符号化就没有意义。您无法翻译您没有的地址。但是,您列出的输出来自哪里?看起来它可能是更大的日志的一部分。您已将问题标记为Crashlytics-此报告是否来自他们的服务?
包含的日志中有一些有用的信息。好消息是,它告诉您堆损坏。 malloc
之所以调用abort
,是因为检测到其内部结构不一致。此外,符号化堆栈跟踪极不可能对您有帮助,因为即使是有史以来,堆栈损坏很少是由堆栈上的函数引起的。
请记住,您在此处看到的崩溃是效果。要解决此问题,您需要一个原因,并且在这种情况下,堆栈跟踪无法解决问题。
还有更多的坏消息。很难(甚至常常不可能)推断堆损坏。复制错误也可能是不可能的,因为内存损坏通常不是确定性的。如您所述,崩溃是随机的。那是因为可能是这样。
我建议在这里使用Apple提供的各种工具来调试此类问题。
Zombies
一个堆损坏的错误导致许多不同类型的崩溃是极端。这可能是objc的过度发布,因此我也要注意选择器未识别的异常。这些崩溃可能会给您更多有关过度释放哪种对象的线索。
祝你好运!