13

在我自己开发的断言宏中,我一直在 iOS 设备上使用 asm("trap")(或在 iOS 模拟器上使用 asm("int3"))来中断调试器。但是,在设备的 64 位版本中,我得到了陷阱指令的“无法识别的指令助记符”。arm64是否有等价物?

(像 __builtin_trap() 或 raise(SIGINT) 这样的替代方案确实有效,但有一些我不喜欢的行为;前者不会让你继续休息,而后者是一个函数,所以你总是比你低一级中断时需要在堆栈中的位置。)

4

2 回答 2

8

我能够使用asm("svc 0");. 我不确定这是正确的方法,但它似乎可以完成这项工作。

于 2013-12-21T00:06:16.843 回答
0

没有尝试过 iOS,但在 Linux 上,该brk指令会SIGTRAP引发,如果一个正在运行,它会捕获到调试器。

asm("brk #0");
于 2021-08-16T03:35:59.157 回答