表示没有崩溃日志文件的崩溃

时间:2019-03-10 15:42:21

标签: ios xcode crashlytics

它不是重复的。我的问题是如何象征崩溃错误。

我的实时应用程序崩溃了,我已经在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

1 个答案:

答案 0 :(得分:1)

符号化是将地址转换为符号(函数,方法等)的过程。没有包含这些地址的崩溃日志,符号化就没有意义。您无法翻译您没有的地址。但是,您列出的输出来自哪里?看起来它可能是更大的日志的一部分。您已将问题标记为Crashlytics-此报告是否来自他们的服务?

包含的日志中有一些有用的信息。好消息是,它告诉您堆损坏。 malloc之所以调用abort,是因为检测到其内部结构不一致。此外,符号化堆栈跟踪极不可能对您有帮助,因为即使是有史以来,堆栈损坏很少是由堆栈上的函数引起的。

请记住,您在此处看到的崩溃是效果。要解决此问题,您需要一个原因,并且在这种情况下,堆栈跟踪无法解决问题。

还有更多的坏消息。很难(甚至常常不可能)推断堆损坏。复制错误也可能是不可能的,因为内存损坏通常不是确定性的。如您所述,崩溃是随机的。那是因为可能是这样。

我建议在这里使用Apple提供的各种工具来调试此类问题。

  • 寻找其他与堆损坏相关的崩溃
  • 在Instruments中尝试Zombies
  • 尝试使用malloc scribble或guardmalloc,这是另外两个不错的内存调试工具

一个堆损坏的错误导致许多不同类型的崩溃是极端。这可能是objc的过度发布,因此我也要注意选择器未识别的异常。这些崩溃可能会给您更多有关过度释放哪种对象的线索。

祝你好运!