【问题标题】:What is an exception breakpoint in Xcode什么是 Xcode 中的异常断点
【发布时间】:2012-04-27 02:33:14
【问题描述】:

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

【问题讨论】:

    标签: objective-c xcode xcode4


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      有一个Wikipedia article on breakpoints.

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

      【讨论】:

        【解决方案3】:

        因为开发人员通常不知道错误隐藏在程序中的什么位置,所以有时您希望 Xcode 能够告诉您哪一行代码导致了导致崩溃的未捕获异常。这时异常断点就派上用场了。

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2012-09-10
          • 2012-03-26
          • 2012-12-25
          • 2011-10-28
          • 2011-09-11
          • 2014-01-07
          • 2015-06-14
          • 2015-05-03
          • 1970-01-01
          相关资源
          最近更新 更多