找出nsrangeexception的来源

时间:2012-03-15 08:40:27

标签: iphone debugging nsrangeexception

我有一个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

2 个答案:

答案 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)