我刚刚在 AppStore 上发布了一个带有Crittercism崩溃报告的应用程序,并且我收到了很多与 SIGSEGV 错误有关的崩溃报告。Crittercism 给了我一个 StackTrace 和一些关于使用统计的方便细节,等等。然而,我仍然对这些符号化的堆栈跟踪感到困惑。关于这种事情,我一般有几个问题-
Stack Trace 中的许多类和方法甚至都没有在我的应用程序中使用(据我所知),这让我相信这些崩溃是由于 Apple 的私有 API 造成的。看看这个问题底部附近的堆栈跟踪。 如果崩溃报告中的所有方法和类都没有直接在我的代码中实现,我如何知道是什么导致了我的应用程序崩溃?
+
崩溃线程中每行末尾带有数字的符号代表什么?StackOverflow 上大多数关于 SIGSEGV 崩溃的 Q/A 都说它们是由内存泄漏或问题引起的,但是 如果我在我的 iOS 项目中使用 ARC,我怎么会因为内存问题而崩溃?ARC不应该为我管理所有这些事情吗?
如果我无法复制错误/崩溃,我该怎么办?
有什么方法可以真正阅读StackTrace 吗?一般而言,有什么有助于理解正在发生的事情吗?
这是来自 Crittercism 的主线程崩溃报告中的 StackTrace,该问题与该问题有关:
Thread: Unknown Name (Crashed)
0 UIKit 0x37307a22 -[UIView(CALayerDelegate) actionForLayer:forKey:] + 138
1 QuartzCore 0x38fdfff7 -[CALayer actionForKey:] + 75
2 QuartzCore 0x38fdffa7 _ZL12actionForKeyP7CALayerPN2CA11TransactionEP8NSString + 59
3 QuartzCore 0x38fdfe93 _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 131
4 QuartzCore 0x38fdab87 _ZN2CA5Layer6setterEj12_CAValueTypePKv + 183
5 QuartzCore 0x39007057 -[CALayer setBackgroundColor:] + 35
6 UIKit 0x3731ef51 -[UIView(Internal) _setBackgroundCGColor:withSystemColorName:] + 1021
7 APP NAME 0x000a301d 0x00086000 + 118813
8 libdispatch.dylib 0x3962511f _dispatch_call_block_and_release + 11
9 libdispatch.dylib 0x39628ecf _dispatch_queue_drain$VARIANT$mp + 143
10 libdispatch.dylib 0x39628dc1 _dispatch_queue_invoke$VARIANT$mp + 41
11 libdispatch.dylib 0x3962991d _dispatch_root_queue_drain + 185
12 libdispatch.dylib 0x39629ac1 _dispatch_worker_thread2 + 85
13 libsystem_c.dylib 0x3824da11 _pthread_wqthread + 361