我试图将相当于asm {int 3}(或类似的)放在我的iPhone程序中.我的目标是让
Xcode完全停止在违规的行上,而不用弄乱调用堆栈(所以_Debugger听起来不会这样做,而不是我可以找到哪个框架…),然后离开我能够恢复执行(这就是为什么我对assert不满意).
(我习惯于其他系统上的这些行为,我想在iOS上重现它们.)
到目前为止,我最好的尝试是:
asm volatile("bkpt 1");
这样就停止了Xcode在线上的问题,但是当我尝试继续使用Cmd Alt P时,Xcode似乎再次运行BKPT.如果我使用Shift Cmd O,我只是得到这个:
Watchdog has expired. Remote device was disconnected? Debugging session terminated.
(不用说,远程设备仍然连接.)
我没有足够的iOS,Mac,ARM,gdb或gcc的asm的经验.所以我已经被困了有没有办法让iOS和Xcode做我想要的?
(我不知道它是否有所作为,但是由我的程序是ARM代码的指令大小来判断.)
[这个问题最初出现在另一个标题下.我已经编辑了,希望能让事情更清楚.]
解决方法
raise(SIGTRAP)是一种相对便携的方式来具有“代码”断点.