我可以在iOS中的代码中创建一个断点,比如VC++上的`__asm {int 3}`,并在命中之后继续执行吗?

15 xcode arm ios

我试图将相当于asm{int 3}(或类似)的东西放入我的iPhone程序中.我的目标是让Xcode完全停在有问题的线上,而不必调整调用堆栈(所以_Debugger听起来不像它会做的那样,而不是我无论如何都能找到它的框架......)然后离开我能够恢复执行(这就是我不满意的原因assert).

(我已经习惯了其他系统上的这些行为,我想在iOS上重现它们.)

到目前为止,我最好的尝试是:

asm volatile("bkpt 1");
Run Code Online (Sandbox Code Playgroud)

这会阻止相关行上的Xcode,但是当我尝试继续使用Cmd + Alt + P时,Xcode似乎BKPT再次运行.如果我使用Shift + Cmd + O,我只是得到这个:

Watchdog has expired.  Remote device was disconnected?  Debugging session terminated.
Run Code Online (Sandbox Code Playgroud)

(不用说,远程设备IS仍然连接.)

我没有大量的iOS,Mac,ARM,gdb或gcc的经验asm.所以我已经难过了.有没有办法让iOS和Xcode做我想做的事情?

(我不知道它是否有所作为,但根据指令大小判断我的程序是ARM代码.)

Ric*_*ves 18

尝试:

__builtin_trap();
Run Code Online (Sandbox Code Playgroud)

适用于Mac和iOS,您可以将绿色小光标拖到下一行继续运行.


Log*_*ldo 5

raise(SIGTRAP) 是一种相对便携的方式来获得"in code"断点.