在Xcode中调试未捕获的异常

时间:2013-02-21 22:11:19

标签: ios xcode

我正在努力改善使用Xcode。我打开了AllExceptions断点。当我的应用程序崩溃时,我看到了:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(0xbb8052 0x209cd0a 0xba4db8 0x2255f2 0xc2439 0x12a5e0f 0x12a6589 0x146bfb1 0x147617c 0x12938e1 0x1290602 0x129b211 0x129b23f 0xc16a6 0x138a4c 0x138852 0x14d0e39 0x14d0143 0x14d13cf 0x14d3a31 0x14d398c 0x14cc3e7 0x1234812 0x1234ba2 0x121b384 0x120eaa9 0x28d3fa9 0xb8c1c5 0xaf1022 0xaef90a 0xaeedb4 0xaeeccb 0x28d2879 0x28d293e 0x120ca9b 0x265c 0x25c5)
terminate called throwing an exception(lldb) 

在LHS上,当我看到不同的线程时,我看不到任何真正有意义的东西。我看到一些CFRunLoop的东西,但我没有看到任何“正常”的方法名称,如UITableView委托/数据源方法或我自己的方法。当我的应用程序崩溃时,我想知道是否有更多信息可用的堆栈跟踪而不是十六进制的东西。我知道我可以在每个地方设置断点我正在访问数组我认为我有问题,因为我基本上只是想尝试使用我们特定数据源的手风琴式的tableview,但我想知道是否有更快的速度通过查看Xcode中有用的东西。谢谢!

2 个答案:

答案 0 :(得分:41)

在Xcode中,

  1. 转到左侧窗格上的Breakpoint导航器。
  2. 点击底部的“+”。
  3. 选择“添加例外断点...”
  4. 选择默认选项,然后点击“完成”。
  5. 重新运行应用程序,查看是否在导致此异常的行停止执行。

答案 1 :(得分:1)

在开发过程中处理XCode中异常的最简单方法是添加异常断点。

您可以按照以下步骤进行操作。

  1. 从左侧菜单中选择“异常”导航器

enter image description here

  1. 从左下方按钮添加异常断点。

enter image description here

  1. 为所有异常添加断点

enter image description here

  1. 运行该应用。

在大多数情况下,XCode会在发生异常时停止执行,并指向导致异常的行。