3

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

4

3 回答 3

2

它只是一个围绕在objc_exception_throw.

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

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

于 2012-04-15T14:02:58.940 回答
0

一篇关于断点的维基百科文章。

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

于 2012-04-15T14:03:15.887 回答
0

因为开发人员通常不知道程序中的 bug 隐藏在哪里,所以有时您希望 Xcode 告诉您哪一行代码导致了未捕获的异常,从而导致崩溃。这是异常断点有用的时候。

要添加一个,打开断点导航器并单击窗口左下角的 +。从上下文菜单中,选择异常断点。创建一个新的异常断点并出现一个弹出窗口。设置它以便它捕获所有抛出异常。

在此处输入图像描述

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

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

资料来源:iOS 编程:The Big Nerd Ranch Guide,第 6 版

于 2019-07-20T23:02:23.030 回答