【问题标题】:i fail to understand these 2 crash reports我无法理解这 2 份崩溃报告
【发布时间】:2013-01-30 19:03:53
【问题描述】:

由于我收到了很多崩溃问题,但该应用程序从未为我崩溃,我现在使用 critterism 来寻找崩溃。

我收到一份报告指出我的错误。这很容易,因为给出了方法名称并且我 可以查看我的代码可能会崩溃的地方。到目前为止,一切顺利。

但我也有以下两个让我感到困惑。

在我看来,应用程序在某些内部苹果库中崩溃了。(很可能是因为我给它喂了一些坏东西......)

在崩溃中我的代码没有调用,那么从哪里开始寻找?

有人了解这些崩溃吗? 知道如何捕捉这些并获得更多崩溃信息吗? 1号:

0 CoreFoundation 0x3585f88f __exceptionPreprocess + 162
1 libobjc.A.dylib 0x37c06259 objc_exception_throw + 32
2 CoreFoundation 0x35862a9b -[NSObject doesNotRecognizeSelector:] + 174
3 CoreFoundation 0x35861915 ___forwarding___ + 300
4 CoreFoundation 0x357bc650 _CF_forwarding_prep_0 + 48
5 UIKit 0x332f3efb -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 546
6 UIKit 0x332f2f39 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 916
7 UIKit 0x332f2763 -[UITableView layoutSubviews] + 206
8 UIKit 0x33296f37 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 182
9 CoreFoundation 0x357be1fb -[NSObject performSelector:withObject:] + 42
10 QuartzCore 0x3268eaa5 -[CALayer layoutSublayers] + 216
11 QuartzCore 0x3268e6bd _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 216
12 QuartzCore 0x32692843 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 226
13 QuartzCore 0x3269257f _ZN2CA11Transaction6commitEv + 314
14 QuartzCore 0x326ba911 _ZN2CA11Transaction5flushEv + 44
15 QuartzCore 0x326ba8e3 +[CATransaction flush] + 34
16 UIKit 0x332a1fb1 _afterCACommitHandler + 52
17 CoreFoundation 0x35833b1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
18 CoreFoundation 0x35831d57 __CFRunLoopDoObservers + 258
19 CoreFoundation 0x358320b1 __CFRunLoopRun + 760
20 CoreFoundation 0x357b54a5 CFRunLoopRunSpecific + 300
21 CoreFoundation 0x357b536d CFRunLoopRunInMode + 104
22 GraphicsServices 0x37451439 GSEventRunModal + 136
23 UIKit 0x332c1cd5 UIApplicationMain + 1080
24 Wohnungssuche 0x000d5218 start + 40

没有。 2:

Thread: Unknown Name (Crashed)
0     libobjc.A.dylib                       0x35beb5d0 objc_msgSend + 16 + 15
1     UIKit                                 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408
2     UIKit                                 0x39f95361 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1317 + 1316
3     UIKit                                 0x39fac7ff -[UITableView layoutSubviews] + 207 + 206
4     UIKit                                 0x39f68897 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 + 258
5     QuartzCore                            0x34ab74eb -[CALayer layoutSublayers] + 215 + 214
6     QuartzCore                            0x34ab708d _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 461 + 460
7     QuartzCore                            0x34ab7fb1 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 17 + 16
8     QuartzCore                            0x34ab799b _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 239 + 238
9     QuartzCore                            0x34ab77ad _ZN2CA11Transaction6commitEv + 317 + 316
10   QuartzCore                             0x34aee7df _ZN2CA7Display11DisplayLink8dispatchEyy + 255 + 254
11   QuartzCore                             0x34aee6d9 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 65 + 64
12   IOMobileFramebuffer                    0x375f0fd7 IOMobileFramebufferVsyncNotifyFunc + 155 + 154
13   IOKit                                  0x3282a5ad IODispatchCalloutFromCFMessage + 193 + 192
14   CoreFoundation                         0x3918288b __CFMachPortPerform + 119 + 118
15   CoreFoundation                         0x3918d3e7 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35 + 34
16   CoreFoundation                         0x3918d38b __CFRunLoopDoSource1 + 139 + 138
17   CoreFoundation                         0x3918c20f __CFRunLoopRun + 1383 + 1382
18   CoreFoundation                         0x390ff23d CFRunLoopRunSpecific + 357 + 356
19   CoreFoundation                         0x390ff0c9 CFRunLoopRunInMode + 105 + 104
20   GraphicsServices                       0x3344933b GSEventRunModal + 75 + 74
21   UIKit                                  0x39fb9291 UIApplicationMain + 1121 + 1120    

感谢您的帮助!

【问题讨论】:

  • 第 1 号我会关注“[NSObject doesNotRecognizeSelector:]”,这似乎表明您设置的委托没有实现它所期望的 UITableView 方法之一
  • 是的,除非 UIKit 正在寻找出租的公寓,否则我认为 Wohnungssuche 不是苹果内部的图书馆......
  • 从外面看,我觉得 1) 是因为您正在从您的一种方法在 tableview 上加载数据(而不是重新加载),并且该方法调用导致它崩溃并且该方法正在显示一个 CALayer 的东西,并在它上面做一些动画,这是打破它。 2)看起来很安静,类似于第一个。但是一些代码可以让我们解决这个问题。你能复制这个崩溃吗?如果是这样,那么通过启用僵尸来检查它?
  • 不,我无法复制崩溃。 :(
  • @HackyStack 是的,我知道这是我的应用程序崩溃了,但是崩溃发生在“_createPreparedCellForGlobalRow:withIndexPath:]”之后的某个地方,并且没有显示来自我的代码“start”之外的调用

标签: ios objective-c xcode crash crittercism


【解决方案1】:

两种情况下的崩溃点是一样的:

 UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408

在第一种情况下,表视图试图在未实现所述方法的实例上调用方法。第二次崩溃是由于尝试向垃圾发送消息造成的。

因此,最可能的结论是,两次崩溃都是单一问题的征兆;您有一个被过早释放或过度释放的对象。

特别是,表视图的数据源在表重新加载之前或期间被释放。

我怀疑 UITableView 正在尝试调用数据源的方法来创建单元格。您可以通过在所述方法上设置断点并查看堆栈跟踪来确认这一点。如果我的赌注是正确的,您将在跟踪中看到 _createPreparedCellForGlobal... 方法。


如果不知道您的应用的详细信息,很难说。最有可能的是,这是在屏幕上加载数据和用户执行某些操作之间的时间相关问题,导致请求在表格视图完成加载之前被取消,从而导致您的数据源从表格下方被释放(可能会发生,因为表视图具有对您的对象的分配引用;非保留引用)。

要尝试和复制,请关注:

• 缓慢的网络连接或可变带宽(如果您的应用是客户端/服务器)

• 做用户可能会导致操作取消的事情

• 在视图之间快速导航,无需等待更新完成绘图

在您的 cmets 中,您提到您正在尝试使用“两种不同的 iPhone”。尝试使用其他设备类型和不同的网络配置。

【讨论】:

  • 我的应用使用了多个 TableView。我在 cellForRowAtIndexPath 中的 2 上设置了断点,两次堆栈都显示方法“_createPreparedCellForGlobal”。所以我想它在每个tableview中都使用了。我什至不知道哪个 tableview 崩溃了 :( 我的项目使用了 ARC,所以不可能是我过早释放对象。我确实运行了静态分析,但它没有在我的代码中出现问题。跨度>
  • 但是可能发生的情况是您导致应用程序的某些部分过早地被拆除。 UITableView 的dataSource 声明为assign;它不被保留。因此,您的数据源很容易在 tableview 完成之前被拆除。
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多