在 ios/xcode 中执行 c 断言后如何单步执行或继续?

问题描述 投票:0回答:5

我已经搜索过,但找不到如何(或是否)在 xcode 4/ios 5.0 中的 c assert() 之后跳过或继续。我使用的是c++而不是objective-c。我需要定义自己的断言才能实现此目的吗?

谢谢~

c++ c ios xcode4
5个回答
2
投票

断言通常不应该被忽略。它们的作用是让程序员与其他程序员沟通“这永远不应该发生”。如果您想知道如果继续执行断言会发生什么,请将其注释掉并查看程序在通常会失败的点之后的行为方式。


0
投票

assert()
s 的目的是在断言条件为 false 时停止执行(和/或将您放入调试器)。因此,不希望在断言之后“继续”,因为它表明违反了某些前提条件/不变量,而这将不可避免地导致稍后出现坏事(tm)。


0
投票

“assert(expr)”只是“if (expr == 0) abort();”的缩写形式(NDEBUG 未定义)。也许这是比使用断言更好的方法(没有 abort())。


0
投票

我知道这是一个老话题,但这是另一个解决方案:

运行

lldb
命令
thread return
。它会让你退出 abort(),然后你可以继续运行你的应用程序。


0
投票

Google 提供了 ResumableAssert

这只是一个带有一些组件的小标头,

它似乎无法编译,除非你:

  • #include <unistd.h>
    添加到 ResumableAssert.h(对于
    getpid
  • 将 ResumableAssert.m 重命名为 ResumableAssert.mm
© www.soinside.com 2019 - 2024. All rights reserved.