objective-c - 未知的崩溃,信息量不大的堆栈跟踪 (iOS)

标签 objective-c xcode

我们制作了一个崩溃日志系统,记录所有崩溃并让服务器存储它们。我们遇到了一堆崩溃,但我们不知道是什么原因造成的。游戏已经运行了几个月,我们从未在游戏运行时(调试、开发阶段等)看到任何此类崩溃。

奇怪的是,我们遇到了一堆这样的错误。我试着在代码中查看它们,但似乎它们都很好。如果不是,它应该会立即崩溃。

我们唯一得到的是一个堆栈跟踪,它的信息量不是很大。我们无法从堆栈跟踪中获得任何线索,因为它不包含我们代码中的任何内容。

我想知道为什么会发生这种崩溃以及为什么它只给我这个堆栈跟踪。我在下面发布了崩溃日志。谢谢。

+++++++++++++++++++++++++++++++++++++++++++
#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\"
};

最佳答案

它看起来像一个未经处理的 Objective-C 异常,它正在被运行循环重新抛出并最终调用 terminate。这会丢失堆栈回溯信息。

您如何记录应用程序崩溃?我假设您还没有使用 NSSetUncaughtExceptionHandler 注册自己的异常处理程序?这将允许您检查堆栈以找到问题的真正原因。有一些脚本可以对堆栈转储进行符号化 - 查看 Apple 文档了解详细信息。

这是一个非常相似的问题:

关于objective-c - 未知的崩溃,信息量不大的堆栈跟踪 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10896916/

相关文章:

ios - 如何在 swift 中使用 _STRUCT_MCONTEXT

objective-c - 将简单 View 从 xib 转移到 Storyboard

ios - Xcode 6.4 错误?源代码文本消失。 OSX优胜美地

ios - iPad3视频没有声音

iphone - 每次添加新设备进行临时安装时是否都必须重新编译?

ios - 表格 View 单元格可扩展 iOS

objective-c - 在方法参数中指定协议(protocol)名称的 Objective C 语法

objective-c - 如何在 iOS 上构建一个最大兼容性的静态库?

ios - iPhone UITableView : How to remove the spacing between sections in group style table?

ios - 即使我有正确的 .dSYM 文件,Xcode 也无法符号化我的崩溃日志