【问题标题】:Finding exception in Objective c code在 Objective c 代码中查找异常
【发布时间】:2010-10-28 10:28:21
【问题描述】:

我正在使用 X-code 3.1 iphone SDK 3.0 beta 5 在 iphone (OS 2.0) 上调试我的应用程序。我的应用程序崩溃给消息 * 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSCFArray insertObject:atIndex:]: index (8) beyond bounds (8)” 2009-05-23 17:13:32.304 myApp [405:5a07] 堆栈:( 808163835, 806099672, 807978623, 807978527, 812332907, 812067179, 812067103, 126035, 812081649, 812081343, 826526801 )

当我发出命令时在 gdb 中 (gdb) 信息行 126035 行号 126035 超出“/Users/videomac/manish/EXPLab/2009-05-18-12-27 myApp/main.m”的范围。

(gdb) 信息行 *126035 “/Users/videomac/manish/EXPLab/2009-05-18-12-27 myApp/Classes/PlaybackThread/Playback.m”的第 527 行从地址 0x1ec52 开始,到 0x1ec6a 结束.

这是否意味着崩溃是由于我的方法中的代码 [Playback startPlaybackThread:] 那么 no +514 和 +538 是什么意思,他们表示没有行吗?

有没有其他方法可以找到崩溃的原因?

【问题讨论】:

    标签: objective-c iphone xcode


    【解决方案1】:

    查找异常发生位置的最简单方法是在 gdb 中的 -[NSException raise] 和 objc_exception_throw 上设置断点。然后你会在它发生时立即中断,你可以在那个时候检查堆栈。

    【讨论】:

    • 如何在 gdb 中的 -[NSException raise] 和 objc_exception_throw 上设置断点
    【解决方案2】:

    关于您提到的第一个错误,来自-insertObject:atIndex: 文档:

    重要:引发NSRangeException 如果 index 大于 数组中的元素。

    我会查找此方法的调用,试图找出导致错误的方法。

    数字 +514 和 +538 给出了与之前指令代码的偏移量。

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多