我已经搜索过,但找不到如何(或是否)在 xcode 4/ios 5.0 中的 c assert() 之后跳过或继续。我使用的是c++而不是objective-c。我需要定义自己的断言才能实现此目的吗?
谢谢~
断言通常不应该被忽略。它们的作用是让程序员与其他程序员沟通“这永远不应该发生”。如果您想知道如果继续执行断言会发生什么,请将其注释掉并查看程序在通常会失败的点之后的行为方式。
assert()
s 的目的是在断言条件为 false 时停止执行(和/或将您放入调试器)。因此,不希望在断言之后“继续”,因为它表明违反了某些前提条件/不变量,而这将不可避免地导致稍后出现坏事(tm)。
“assert(expr)”只是“if (expr == 0) abort();”的缩写形式(NDEBUG 未定义)。也许这是比使用断言更好的方法(没有 abort())。
我知道这是一个老话题,但这是另一个解决方案:
运行
lldb
命令thread return
。它会让你退出 abort(),然后你可以继续运行你的应用程序。
Google 提供了 ResumableAssert
这只是一个带有一些组件的小标头,
它似乎无法编译,除非你:
#include <unistd.h>
添加到 ResumableAssert.h(对于 getpid
)