在Xcode/iPhone中堆栈跟踪或更多关于未处理异常的信息

Phi*_*ert 51 iphone xcode

请原谅我的无知,但在iPhone模拟器中运行iPhone应用程序时,有些事情一直困扰着Xcode调试器.

有时,当我在Interface Builder中搞砸了一些东西时,我在运行时得到一个未处理的异常,然后我被抛回Xcode.我唯一看到的是单行"未捕获的异常"或类似的东西.从我所看到的,没有其他信息,更不用说堆栈跟踪或任何其他有用的信息.

在过去十年左右的时间里,我一直在使用Visual Studio进行开发,而且我习惯于获得一个很好的堆栈跟踪并在发生类似情况时完成异常信息.

我确信我只是遗漏了一些非常明显的东西......希望......

Bra*_*son 73

如果添加两个断点,则应该能够调试这些异常.为此,请转到"运行"| 显示| 断点并创建两个全局断点(我在全局中断点,因为它们在我的所有应用程序中都非常有用).第一个应命名为"objc_exception_throw",其位置应为"libobjc.A.dylib".第二个应该是" - [NSException raise]",它的位置应该是"CoreFoundation".

现在,如果您在启用断点的情况下开始调试应用程序,它应该在抛出这些异常时中断.然后,您应该能够在调试器中看到导致异常的事件链.

  • @Patrick - Xcode 4使这更简单.转到左侧窗格中的断点导航器,然后单击屏幕底部的加号按钮.选择Add Exception Breakpoint ...并在弹出的气泡中选择Exception字段中的Objective-C.这应该在抛出的所有异常上设置断点. (52认同)
  • 使用Xcode 4,如果要使断点具有全局范围,并且不限于您在其中创建的项目,则按住Control键单击断点,然后使用Move将其移动到User范围. (5认同)