未知崩溃,堆栈跟踪信息不够详细(iOS)

3
我们制作了一个崩溃记录系统,它可以记录所有的崩溃并让服务器存储这些信息。我们收到了大量的崩溃报告,但是我们不知道是什么导致了这些崩溃。游戏已经运行了几个月了,在游戏运行期间(调试、开发阶段等)我们从未看到过这些崩溃。
奇怪的是,我们收到了大量这样的错误报告。我尝试在代码中查看它们,但似乎它们都没有问题。如果有问题,应该会立即崩溃。
我们唯一得到的是一份不太具有信息性的堆栈跟踪。由于它不包含我们代码中的任何内容,因此我们无法从堆栈跟踪中获取任何线索。
我想知道为什么会发生这种崩溃,并且为什么只会给我提供这个堆栈跟踪。我在下面发布了崩溃日志。谢谢。
+++++++++++++++++++++++++++++++++++++++++++
#1 - Mutating method sent to immutable object (Dictionary)

-[__NSCFDictionary removeObjectForKey:]: mutating method sent to immutable object
(

    \4   libc++abi.dylib                     0x30e093c5 _ZL19safe_handler_callerPFvvE + 76\"
    \"5   libc++abi.dylib                     0x30e09451 _ZdlPv + 0\"
    \"6   libc++abi.dylib                     0x30e0a825 __cxa_current_exception_type + 0\"
    \"7   libobjc.A.dylib                     0x3687d2a9 objc_exception_rethrow + 12\"
    \"8   CoreFoundation                      0x353ac50d CFRunLoopRunSpecific + 404\"
};

+++++++++++++++++++++++++++++++++++++++++++
#2 - Inserting nil object in array


*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
(

    \4   libc++abi.dylib                     0x380eb3c5 _ZL19safe_handler_callerPFvvE + 76\"
    \"5   libc++abi.dylib                     0x353e5451 _ZdlPv + 0\"
    \"6   libc++abi.dylib                     0x353e6825 __cxa_current_exception_type + 0\"
    \"7   libobjc.A.dylib                     0x35d1b2a9 objc_exception_rethrow + 12\"
    \"8   CoreFoundation                      0x3776b50d CFRunLoopRunSpecific + 404\"
};


+++++++++++++++++++++++++++++++++++++++++++
#3 - Array out of bounds

*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]
(

    \4   libc++abi.dylib                     0x353e53c5 _ZL19safe_handler_callerPFvvE + 76\"
    \"5   libc++abi.dylib                     0x353e5451 _ZdlPv + 0\"
    \"6   libc++abi.dylib                     0x353e6825 __cxa_current_exception_type + 0\"
    \"7   libobjc.A.dylib                     0x35d1b2a9 objc_exception_rethrow + 12\"
    \"8   CoreFoundation                      0x3776b50d CFRunLoopRunSpecific + 404\"
};
1个回答

2
看起来像是一个未处理的Objective-C异常,由run loop重新抛出,并最终调用terminate。这将丢失堆栈回溯信息。
你是如何记录应用程序崩溃的?我假设你没有使用NSSetUncaughtExceptionHandler注册自己的异常处理程序?这会允许你检查堆栈以找到问题的真正原因。有一些脚本可以解析堆栈转储 - 请查阅苹果文档获取详细信息。
这是一个非常相似的问题:

我不是很确定,因为我没有编写 CrashLogger ,而编写的人已经离开了。您能否检查此代码并查看是否这是出现记录不正确的问题的原因? https://docs.google.com/document/d/1DK3nyN-bz67EDAo09PWTRTlpDxVDaawhuGj67v8F1ZU/edit - Sylpheed

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