如何找到根本原因崩溃:生产应用程序中的com.apple.main-thread?

时间:2015-06-15 21:52:57

标签: ios exc-bad-access

我有来自Crashlytics的这样一份报告:

Thread : Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x000000019503fbd0 objc_msgSend + 16
1  CoreFoundation                 0x00000001836e5458 CFRelease + 524
2  CoreFoundation                 0x00000001836f1a18 -[__NSArrayM dealloc] + 152
3  libobjc.A.dylib                0x0000000195045724 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 564
4  CoreFoundation                 0x00000001836e9074 _CFAutoreleasePoolPop + 28
5  Foundation                     0x000000018461a588 -[NSAutoreleasePool release] + 148
6  UIKit                          0x00000001882b4460 -[UIApplication _run] + 588
7  UIKit                          0x00000001882aefac UIApplicationMain + 1488

有什么办法可以解决这个问题吗?它发生在客户设备上,所以我没有机会重现它。

3 个答案:

答案 0 :(得分:1)

对于像这样的崩溃,如果崩溃是可重现的,请在项目的环境变量中启用NSZombies。这将使释放的对象保持活动状态(僵尸),当其中一个消息被发送时,将在崩溃对象上捕获调用者和消息。

完成后将其关闭,因为它可以阻止应用程序的内存,因为没有为僵尸跟踪发布对象。

答案 1 :(得分:1)

某些逻辑代码需要在后台运行。您需要尝试调试代码错误的位置,然后添加此代码

DispatchQueue.main.async(execute: {
     // your code
})

答案 2 :(得分:0)

这里已经回答:objc_msgSend [__NSArrayM dealloc] crash report sometimes from Crashlytics

基本上,将您的Crashlytics框架升级到3.0.9以上。崩溃发生在崩溃报告框架本身。