当我的应用程序在连接到 Xcode 时崩溃时,我会获得调试和解决问题所需的所有信息。但不是当应用程序在未连接到 Xcode 时崩溃时,我不知道是 nil unwrap、断言失败还是异常。
在后两种情况下,断言或异常消息也丢失了。
如何让 Xcode 将此信息包含在崩溃日志中?
我将“复制期间去除调试符号”和“去除链接产品”设置为 NO,并且使用 dSYM 将调试版本的调试信息格式设置为 DWARF。是的,我正在手机上安装调试版本。我得到一个符号化的堆栈跟踪,但没有上述信息。
案例 1:解包 nil:崩溃日志中缺少“致命错误:在解包可选值时意外发现 nil”这一行。
案例2:断言失败:如果我有:
assert(level > 2, "Level should've been at least 2")
“级别应该至少为 2”不会出现在崩溃日志中。有时,它甚至没有说它是由于断言失败(而不是其他原因)而崩溃的。
案例 3:异常:缺少如下异常消息:
由于未捕获的异常“NSGenericException”而终止应用程序,原因:“*** -[AVCaptureDevice setTorchMode:] 如果没有先使用 -lockForConfiguration 成功获得设备的独占所有权,则可能无法调用:”
有时,它甚至没有说它由于异常而崩溃(而不是其他原因)。
如何在未连接到 Xcode 时发生崩溃,以便在连接到 Xcode 时获得崩溃时获得的所有信息?