我有一个NSRangeException
错误,不会一直发生(尤其是在我调试时)。它随机出现,我无法弄清楚它来自哪里。我有很多数组操作,因此很难以这种方式消除它。
我的问题是我是否可以从调试器输出中获取线索,例如类和行号,例如12109和707的数字是什么?:
2012-03-15 09:25:15.303 appname[12109:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 0]'
任何指示赞赏。
编辑: 剩下的部分日志:
*** First throw call stack:
(0x33ff38bf 0x342431e5 0x33f4b275 0x1702d 0x37662331 0x3761b2b3 0x33f4d435 0x373b79eb 0x373b79a7 0x373b7985 0x373b76f5 0x3744de55 0x374e3e45 0x373aa99b 0x33fc7b4b 0x33fc5d87 0x33fc60e1 0x33f494dd 0x33f493a5 0x307cdfcd 0x373ca743 0x2325 0x22e4)
terminate called throwing an exception
答案 0 :(得分:53)
添加异常断点。这将停止引发异常的行。
在断点导航器中,单击左下角的加号,选择异常断点和所有异常。你应该真的在所有项目上都有这个,这是非常宝贵的。不过,我们这里的问题要少得多!
答案 1 :(得分:1)
在崩溃日志中进一步查看,很可能在某些时候它将指向实际的方法和行。
例如在设备崩溃日志的下面的块中,最后一行清楚地指向第264行的FacebookController.m类中的request:didLoad:方法。
0x33defacb -[NSObject doesNotRecognizeSelector:] + 175
0x33dee945 ___forwarding___ + 301
0x33d49680 _CF_forwarding_prep_0 + 48
0x00037e47 -[FacebookController request:didLoad:] (FacebookController.m:264)