XCode 4单步执行';行不通

XCode 4单步执行';行不通,xcode,Xcode,我正在使用XCode 4,并且发现了一个3.x中不存在的调试问题 我在调用对象方法的行上放置断点 Product *p = [[Product alloc] init]; [p print]; <-- Put a breakpoint here Product*p=[[Product alloc]init]; [p打印] 进入ObjC方法调用并不总是可能的。按照向我解释的方式,内部运行时数据结构必须处于一致状态,才能可靠地进入ObjC方法。当程序在断点处停止时,如果这些内部结构恰好

我正在使用XCode 4,并且发现了一个3.x中不存在的调试问题

我在调用对象方法的行上放置断点

Product *p = [[Product alloc] init]; 
[p  print];  <-- Put a breakpoint here
Product*p=[[Product alloc]init];

[p打印] 进入ObjC方法调用并不总是可能的。按照向我解释的方式,内部运行时数据结构必须处于一致状态,才能可靠地进入ObjC方法。当程序在断点处停止时,如果这些内部结构恰好处于不一致的状态,那么进入调试器将失败,它将跳过调用。在Xcode 3中也是如此,实际上与Xcode几乎没有关系,但这是一个ObjC运行时和调试器问题。我估计(在Xcode全职工作3年以上)进入ObjC方法调用失败的几率约为5%。我发现这种情况最常发生在对我最不方便的时候。:)


也就是说,如果您永远无法单步执行任何ObjC方法调用,那么可能还有另一个问题,因为我已经使用Xcode 4多次单步执行ObjC方法调用,与我使用Xcode 3时相比,我几乎看不到这个问题。

我对OSX了解不够,无法理解为什么这是fubar,但我只是尝试将默认键绑定更改为f13-f17,用于所有常见的暂停/继续、步进/步出等绑定。对我来说很有用。XCode4团队的QA可能相当差劲?

不确定这是否有帮助——进入系统首选项,并在键盘常规设置下确保选中“将所有F1 F2等用作标准功能键”选项

在我检查后,F7开始为我工作


希望这对我有帮助。

fn+f7对我总是有用的。虽然在Obj-C中加入有时会有点奇怪。如果您知道代码的标题,最好设置更多断点。

切换到gdb调试器对我来说很有用。转到“编辑方案”,运行阶段的“信息”选项卡,从LLDB更改为GDB


它仍然不完美。特别是,如果什么也没有发生,您似乎必须经常使用“单步执行指令”(使用适当的键,或在按下单步按钮时按住ctrl键),并且要查看寄存器等,您必须在Xcode窗口中使用gdb命令行。

在尝试单步执行实例方法之前,检查实例是否为零。尽管看起来很尴尬,但我们都偶尔这样做

删除特定文件,然后再次添加该文件。这解决了我的问题。

我也有同样的问题,期待着答案欢迎使用Xcode 4。在使用了2天后,我又换了回去(Xcode 4)。pdf文件中也没有写任何东西,附件是“Xcode 4中的新功能”,而“step-in,step-out”是跟踪bug和程序控制的最佳方式。苹果怎么能在xcode4中忽略它,而在xcode3.x中却存在它:(。希望看到它的解决方案。我也有这个问题。不总是这样,但太频繁了,以至于不去寻找解决方案。我在Xcode5中也有同样的问题。它在其他项目中也能工作,但是“进入”在我当前的项目中不起作用。我怀疑有一些编译器设置会阻止步进。我想说,使用XCode 4,步进在95%以上的时间内都不起作用。我完全不同意这种说法,即这与XCode无关,因为不同版本之间的差异如此之大。我在XCode 3中从未有过这种情况,现在它太糟糕了,我正在搜索Stackoverflow来修复它。如果你看到了不同的行为,我鼓励你向Apple提交一个bug。这正是我遇到的问题!虽然这不是问题的解决方案。谢谢你的解决方案!哈哈。完全是在重新启动后做的。这是真的。如果你发现y我们的Xcode直接经过您想要插入的代码行,检查方法的所有者是否为nil。显然,不再可能从LLDB切换到GDB: