加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Xcode等价于’__asm int 3/DebugBreak()/ Halt?

发布时间:2020-12-15 01:56:17 所属栏目:百科 来源:网络整理
导读:在Xcode中造成严重破坏的指示是什么?例如在Visual Studio下,我可以做’_asm int 3’或’DebugBreak()’。在一些GCC实现下,它是asm(“break 0”)或asm(“trap”)。 我已经尝试过Xcode下的各种组合,没有任何运气。 (内联汇编程序工作正常,所以它不是一个
在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

asm {trap}            ; Halts a program running on PPC32 or PPC64.

__asm {int 3}         ; Halts a program running on IA-32.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读