【发布时间】:2012-04-27 02:33:14
【问题描述】:
已经有关于如何在 Xcode 中使用异常断点的帖子。 但我的问题是那到底是什么? 当我为所有异常启用异常断点时,似乎我得到了一个非常完整的堆栈跟踪。为什么呢?此外,我不再收到错误消息。 我真的很好奇异常断点是如何工作的。 谢谢
【问题讨论】:
标签: objective-c xcode xcode4
已经有关于如何在 Xcode 中使用异常断点的帖子。 但我的问题是那到底是什么? 当我为所有异常启用异常断点时,似乎我得到了一个非常完整的堆栈跟踪。为什么呢?此外,我不再收到错误消息。 我真的很好奇异常断点是如何工作的。 谢谢
【问题讨论】:
标签: objective-c xcode xcode4
它只是一个围绕在objc_exception_throw 上设置符号断点的 GUI 包装器。
objc_exception_throw 只是一个用于引发所有异常的 C 函数。所以这就像打破任何功能一样。
您不会再收到日志消息,因为调试器会在抛出异常时停止。如果您从那里继续,该异常最终将由默认记录它的应用程序处理。但是,如果您不继续,您将不会获得任何日志。
【讨论】:
【讨论】:
因为开发人员通常不知道错误隐藏在程序中的什么位置,所以有时您希望 Xcode 能够告诉您哪一行代码导致了导致崩溃的未捕获异常。这时异常断点就派上用场了。
要添加一个,打开断点导航器并单击窗口左下角的 +。从上下文菜单中,选择异常断点。创建一个新的异常断点并出现一个弹出窗口。设置它,使其在 throw 时捕获所有异常。
现在,当您的应用引发异常时,Xcode 会将您带到直接导致引发异常的行。
但是,正如您所指出的,它不会将有关异常的详细信息记录到控制台。这是因为应用程序还没有崩溃。要查看崩溃和任何相关的控制台消息,请在调试栏中继续执行程序,直到看到崩溃为止。
来源:iOS 编程:The Big Nerd Ranch Guide,第 6 版
【讨论】: