我目前正在用Xcode 4.3.2编写iOS应用程序。在我的代码的大部分地方,使用LLDB进行调试工作得很好。但是,在某些时候,我正在逐步浏览我的代码时收到一条奇怪的消息。当我将鼠标悬停在伊娃,它说XLD 4.3与LLDB中奇怪的错误消息
错误[IRForTarget]:找不到Objective-C的间接伊娃符号OBJC_IVAR _ $ _ MyFancyClass.iVar
而不是显示我的价值。但是,在Variables View
中,我可以看到它很好。直到我选择Print Description of ...
也就是说,因为这样,Xcode崩溃了... 当我使用GDB时,悬停工作,但变量的类型和值是错误的。
我认为我的代码出了问题,导致调试器失败。但是,代码运行良好。我很乐意提供一些样本代码,但是班级相当长,我无法确定我拧紧的确切位置。那么有没有人遇到类似的行为?
更新:实际上,这似乎发生在我的代码中的任何地方,而不仅仅是在某些特定的文件。如果有帮助,当LLDB显示上述消息时,GDB总是显示拥有该iVar的Class对象,而不是iVar本身。 看起来好像内存管理有问题。例如,如果我这样说
[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];
选择被调用,即使我有
[notificationCenter postNotificationName:bar object:objB];
您的代码可能很长,但似乎没有足够的人遇到此问题。你可以只显示出现这种行为的代码的汇总版本吗? – 2012-04-10 14:26:55
那么,因为它发生在我的代码绝对无处不在,我真的不知道我可以发布什么...... – Phlibbo 2012-04-10 15:09:12
我只是在这里猜测所以我不发布答案,但如果您尝试使用调试器会发生什么控制台并使用“po”打印对象?另外,你可能有任何特殊的gdb配置吗?这是你试图调试的包含库吗?您是否构建启用调试信息?仔细检查你的构建设置(生成调试符号,优化级别,调试信息格式)。 – 2012-04-10 15:31:10