【发布时间】:2010-09-07 10:17:13
【问题描述】:
在 Xcode 中导致硬中断的指令是什么?例如,在 Visual Studio 下,我可以执行“_asm int 3”或“DebugBreak()”。在某些 GCC 实现下,它是 asm("break 0") 或 asm("trap")。
我在 Xcode 下尝试了各种组合,但没有任何运气。 (内联汇编器工作正常,所以这不是语法问题)。
作为参考,这是一个断言宏。我不想将 assert.h 中的定义用于可移植性,并且因为它们似乎在 XCode 提供的版本中执行 abort()。
John - 超级棒,干杯。作为参考,int 3 语法是 Intel Mac 和 iPhone 所需的语法。
Chris - 感谢您的评论,但有很多原因可以避免将标准 assert() 函数用于移植到不同平台的代码库。如果您在滚动自己的断言时遇到了麻烦,通常是因为您希望保留其他功能(日志记录、堆栈展开、用户交互)。
您尝试通过“__assert”或类似的实现来替换处理程序的建议是不可移植的。标准的“断言”通常是一个宏,虽然它可能映射到 Mac 上的 __assert,但它不会在其他平台上。
【问题讨论】:
标签: xcode macos debugbreak