有关于如何在Xcode中使用异常断点的帖子。 但我的问题究竟是什么呢? 当我为所有异常启用异常断点时,似乎我得到了一个完整的堆栈跟踪。为什么会这样?此外,我不再收到错误消息。 我对异常断点的工作方式非常好奇。 感谢
答案 0 :(得分:2)
它只是在objc_exception_throw
上设置符号断点的GUI包装器。
objc_exception_throw
只是一个C函数,用于引发所有异常。所以这就像打破任何功能一样。
您不再获取日志消息,因为调试器在抛出异常时停止。如果从那里继续,则异常最终将由默认情况下记录它的应用程序处理。但是,如果你不继续,你就不会得到任何记录。
答案 1 :(得分:0)
答案 2 :(得分:0)
由于开发人员通常不知道程序中的错误所在,因此有时您希望Xcode告诉您哪一行代码会导致未捕获的异常,从而导致崩溃。这是异常断点很有用的时候。
要添加一个,请打开断点导航器,然后单击窗口左下角的+。从上下文菜单中,选择“异常断点”。创建一个新的异常断点,并显示一个弹出窗口。对其进行设置,以使其能够捕获所有抛出的异常。
现在,当您的应用程序引发异常时,Xcode会将您带到直接导致引发异常的行。
但是,正如您所指出的,它不会将有关异常的详细信息记录到控制台。这是因为应用程序尚未崩溃。要查看崩溃和任何相关的控制台消息,请在调试栏中继续执行程序,直到看到崩溃。
来源:iOS编程:大书呆子牧场指南,第6版