什么是Xcode 4中的异常断点

时间:2012-04-15 13:58:44

标签: objective-c xcode xcode4

有关于如何在Xcode中使用异常断点的帖子。   但我的问题究竟是什么呢?   当我为所有异常启用异常断点时,似乎我得到了一个完整的堆栈跟踪。为什么会这样?此外,我不再收到错误消息。   我对异常断点的工作方式非常好奇。 感谢

3 个答案:

答案 0 :(得分:2)

它只是在objc_exception_throw上设置符号断点的GUI包装器。

objc_exception_throw只是一个C函数,用于引发所有异常。所以这就像打破任何功能一样。

您不再获取日志消息,因为调试器在抛出异常时停止。如果从那里继续,则异常最终将由默认情况下记录它的应用程序处理。但是,如果你不继续,你就不会得到任何记录。

答案 1 :(得分:0)

有一个Wikipedia article on breakpoints.

Xcode只是提供了一个使用标准调试器gdb的GUI。因此,您可能还想阅读debuggersgdb

答案 2 :(得分:0)

由于开发人员通常不知道程序中的错误所在,因此有时您希望Xcode告诉您哪一行代码会导致未捕获的异常,从而导致崩溃。这是异常断点很有用的时候。

要添加一个,请打开断点导航器,然后单击窗口左下角的+。从上下文菜单中,选择“异常断点”。创建一个新的异常断点,并显示一个弹出窗口。对其进行设置,以使其能够捕获所有抛出的异常。

enter image description here

现在,当您的应用程序引发异常时,Xcode会将您带到直接导致引发异常的行。

但是,正如您所指出的,它不会将有关异常的详细信息记录到控制台。这是因为应用程序尚未崩溃。要查看崩溃和任何相关的控制台消息,请在调试栏中继续执行程序,直到看到崩溃。

  

来源:iOS编程:大书呆子牧场指南,第6版