我目前正在使用 Xcode 4.3.2 编写一个 iOS 应用程序。在我的大部分代码中,使用 LLDB 进行调试都可以正常工作。但是在某些时候,我在单步执行代码时收到一条奇怪的消息。当我将鼠标悬停在 iVar 上时,它会说
错误 [IRForTarget]:找不到 Objective-C 间接 ivar 符号 OBJC_IVAR_$_MyFancyClass.iVar
而不是向我展示价值。但是,在 中Variables View
,我可以看到它就好了。直到我选择Print Description of ...
那个,因为那时,Xcode 崩溃......当我使用 GDB 时,悬停工作但变量的类型和值是错误的。
我发现我的代码有问题,进而导致调试器失败。但是,代码运行良好。我很想提供一些示例代码,但课程相当长,我无法确定我搞砸的确切位置。那么有没有人遇到过类似的行为?
更新:实际上,这似乎发生在我的代码中的任何地方,而不仅仅是在某些特定文件中。如果有帮助,当 LLDB 显示上述消息时,GDB 总是显示拥有 iVar 的类的对象,而不是 iVar 本身。看起来好像内存管理有问题。例如,如果我说类似
[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];
即使我有选择器也会被调用
[notificationCenter postNotificationName:bar object:objB];