如何使Xcode4在NSAssert失败时停止?

如何使Xcode4在NSAssert失败时停止?,xcode4,Xcode4,目前,我的Xcode4没有在NSAssert失败时停止。如何使其再次在NSAssert故障时停止 转到XCode 4断点导航器 单击+按钮并选择“添加符号断点” 将符号设置为“-[NSAssertionHandler handleFailureInMethod:对象:文件:行号:说明:” 单击“完成” 现在,一旦NSAssert触发,您将在调试器中停止。在我的测试中,它会转到最近的源代码,而不仅仅是向您显示设置断点的程序集 更一般地说,您可以这样做: 转到断点导航器 单击+按钮并选择“添加异常断

目前,我的Xcode4没有在
NSAssert
失败时停止。如何使其再次在
NSAssert
故障时停止

  • 转到XCode 4断点导航器
  • 单击+按钮并选择“添加符号断点”
  • 将符号设置为“-[NSAssertionHandler handleFailureInMethod:对象:文件:行号:说明:”
  • 单击“完成”
  • 现在,一旦NSAssert触发,您将在调试器中停止。在我的测试中,它会转到最近的源代码,而不仅仅是向您显示设置断点的程序集

    更一般地说,您可以这样做:

  • 转到断点导航器
  • 单击+按钮并选择“添加异常断点”
  • 将异常设置为“目标C”
  • 将休息时间设置为“投掷时”
  • 单击“完成”
  • 这可能或多或少有用,具体取决于您的代码


    另请参见XCode 4文档结果中的“添加异常断点”

    默认情况下,在发布版本中会自动禁用断言。如果希望断言工作,请执行调试生成,或关闭其他C标志生成设置,在发布生成中关闭断言。

    您应该接受答案:答案显示如何记录放入
    NSAssert
    的消息。这对我很有帮助。现在我在我自己的断言宏中使用后一种方法:
    EONIL_ASSERT(cond,msg…{if(!(cond)){NSLog(msg);}nsassert((cond),@“assertion failed.”;}
    ,因为这是一个在断言处理程序开始时停止执行的断点,您所要做的就是点击“继续”,应用程序将继续运行,并正常记录断言。@我遵循Steve Maguire在《编写可靠代码》一书中所述的断言准则。调试代码始终是对发布代码的补充,而不是替代。通过混合发布版本错误处理和调试版本断言,您违背了该建议。它使代码更难理解,因为您看到的只是EONIL_断言(release error condition,@“一刀切”的错误消息);这是一个非常有用的答案!我想知道为什么Xcode默认情况下不启用此行为。。。