Xcode equivalent of ' __asm int 3 / DebugBreak() / Halt?在Xcode中造成硬中断的指示是什么?例如,在Visual Studio中,我可以执行'_asm int 3'或'DebugBreak()'。在某些GCC实现中,它是asm(" break 0")或asm(" trap")。 我在Xcode下尝试了各种组合,但没有任何运气。 (内联汇编程序工作正常,因此这不是语法问题)。 供参考,这是一个断言宏。我既不想将assert.h中的定义用于可移植性,又因为它们似乎在XCode提供的版本中使用了abort()。 约翰-超级,欢呼。作为参考,int 3语法是Intel Macs和iPhone所需的一种。 克里斯(Chris)-感谢您的评论,但是有很多原因要避免将标准的assert()函数用于移植到不同平台的代码库。如果您遇到了无法确定自己的断言的麻烦,那通常是因为您希望保留其他功能(日志记录,堆栈展开,用户交互)。 您关于尝试通过实现'__assert'或类似方法来替换处理程序的建议将不会移植。标准的'assert'通常是一个宏,尽管在Mac上它可能映射到__assert,但在其他平台上却没有。 http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeProjectManagement/090_Running_Programs/chapter_11_section_3.html
您只需插入对
另外,也不要因为"可移植性原因"而避免使用 通常,这是通过简单地实现此原型之后的函数或宏来完成的:
断言表达式失败时调用。通常,它执行的是默认记录的行为"
由于Debugger()现在已贬值,因此应该可以使用。 https://developer.apple.com/library/mac/technotes/tn2124/_index.html#//apple_ref/doc/uid/DTS10003391-CH1-SECCONTROLLEDCRASH 为了后人:我有一些代码可在调试器中的正确堆栈帧处生成暂停,并(可选)暂停应用程序,以便您可以及时附加调试器。适用于模拟器和设备(如果需要,可能还适用于台式机)。详尽详尽的帖子,位于http://iphone.m20.nl/wp/2010/10/xcode-iphone-debugger-halt-assertions/
可在模拟器和设备中使用。 我在Apple论坛中找到了以下内容:
作为跨平台的直接Halt()替代品,还可以使用以下函数:
如果发生致命断言,我们将其用于iPhone实施的跨平台引擎中。跨Nintendo DS / Wii / XBOX 360 / iOS等的跨平台... |