Символизация - это процесс перевода адресов в символы (функции, методы и т. Д.).Без журнала сбоев, который содержит эти адреса, символика не имеет смысла.Вы не можете переводить адреса, которых у вас нет.Но откуда появился вывод, который вы перечислили?Похоже, это может быть частью большего журнала.Вы отметили проблему Crashlytics - этот отчет пришел от их службы?
В журнале вы включили некоторую полезную информацию.Хорошая новость в том, что она говорит вам, что у вас куча коррупции.malloc
вызвал abort
, поскольку обнаружил несоответствие с его внутренними структурами.Кроме того, крайне маловероятно, что символическая трассировка стека поможет вам, потому что повреждение кучи редко, если вообще когда-либо, вызывается функциями, расположенными дальше по стеку.
Имейте в виду, что сбой, который вы видите здесь, эффект .Чтобы решить эту проблему, вам нужна причина , и трассировка стека не даст вам этого в этой ситуации.
Есть еще плохие новости.Трудно, и часто даже невозможно, рассуждать о кучной коррупции.Воспроизведение ошибки также может быть невозможным, поскольку повреждение памяти обычно не является детерминированным.Как вы заметили, сбой выглядит случайным.Это потому, что это, вероятно, так.
Я бы порекомендовал здесь использовать различные инструменты, предоставляемые Apple, для отладки такого рода проблем.
- Поиск других сбоев, которые выглядят кучейсвязанные с коррупцией
- Попробуйте
Zombies
в инструментах - Попробуйте malloc scribble или guardmalloc, два других хороших средства отладки памяти
Это чрезвычайно обычно для одной ошибки, приводящей к повреждению кучи, вызывающей множество различных сбоев.Это может быть чрезмерным выпуском objc, поэтому я также следил за исключениями selectorNotRecognized.Эти сбои могут дать вам больше подсказки о том, какой объект перевыпускается.
Удачи!