【问题标题】:Finding out source of nsrangeexception找出nsrangeexception的来源
【发布时间】:2012-03-31 18:13:04
【问题描述】:

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

【问题讨论】:

    标签: iphone debugging nsrangeexception


    【解决方案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)
    

    【讨论】:

    • 您好,感谢您的回答,不幸的是,它没有显示任何内容。我已经用崩溃日志的剩余部分编辑了问题
    【解决方案2】:

    添加异常断点。这将在引发异常的行上停止。

    在断点导航器中,单击左下角的加号,选择异常断点和所有异常。你真的应该在所有项目上都有这个,它是无价的。不过,我们在这里的问题要少得多!

    【讨论】:

    • omfg 这就是我错过的东西......你无法想象......如果可以的话,我会给你 +20 声望
    • 您好 jrturton。谢谢你的回答。
    • 这太棒了,即使在 AppCode 中它也没有默认启用!
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2020-02-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多