当尝试从Xcode控制台打印内容时,“执行被中断,原因:断点”

时间:2013-08-01 06:56:17

标签: xcode llvm

我暂停了我的应用并尝试将某些内容打印到控制台。 (例如po foo())。完成后,我收到以下消息:

  

错误:执行被中断,原因:断点2.1。
  该过程已在执行前返回到该状态。

但是,该功能中没有断点。为什么它会向我显示此错误而不执行该功能?

这是在Xcode 4.6上。

1 个答案:

答案 0 :(得分:7)

事实证明,有问题的断点(2.1)是All Exceptions断点。我调用的方法引发了一个异常,导致All Exceptions断点被触发。一旦达到断点,po将停止执行(有关详细信息,请参阅this answer)。

如果禁用All Exceptions断点并再次运行它,则更明显存在异常:

error: Execution was interrupted, reason: signal SIGSTOP.
The process has been returned to the state before execution.

如果你总是启用All Exceptions断点,那么消息可能是不明确的:它是否到达断点,因为在执行路径的某处确实存在断点,或者是否引发了异常?

另一种解决方案(不要求禁用所有异常断点)是使用expr而不是po(有关以下标志的说明,请参阅上面的链接)。< / p>

运行expr -u 0 -o -- foo()会产生以下输出:

error: Execution was interrupted, reason: breakpoint 2.1 -2.1.
The process has been left at the point where it was interrupted.  
* thread #1: tid = [...] libobjc.A.dylib`objc_exception_throw, stop reason = breakpoint 2.1 -2.1  
    frame #0: [...] libobjc.A.dylib`objc_exception_throw

objc_exception_throw字符串是exception was raised

的提示