我正在使用XCode 4并看到3.x中不存在的调试问题.
我在一个我称之为对象方法的行上放置一个断点.
Product *p = [[Product alloc] init];
[p print]; <-- Put a breakpoint here
Run Code Online (Sandbox Code Playgroud)
控制在该行停止后,我尝试进入方法(F7).但没有任何反应.系统只是跳过该行并转到下一行(与Step Over相同).
步入适用于纯C语言项目的工作.问题在于Objective-C方法.我该如何解决这个问题?谢谢.
单步执行 ObjC 方法调用并不总是可能的。按照向我解释的方式,内部运行时数据结构必须处于一致状态才能可靠地进入 ObjC 方法。如果当程序在断点处停止时这些内部恰好处于不一致的状态,则单步调试器将失败,并且它将跳过调用。这在 Xcode 3 中也是如此,并且与 Xcode 几乎没有关系或完全没有关系,而是 ObjC 运行时和调试器问题。据我估计(在 Xcode 全职工作了 3 年多),单步执行 ObjC 方法调用的失败率约为 5%。我发现这种情况最常发生在我最不方便的时候。:)
也就是说,如果您永远无法进入任何 ObjC 方法调用,那么可能还有另一个问题,因为我已经能够使用 Xcode 4 多次进入 ObjC 方法调用,并且不再看到这个问题或者比我使用 Xcode 3 的频率要低。