【问题标题】:Weird error message in Xcode 4.3 with LLDBXcode 4.3 中带有 LLDB 的奇怪错误消息
【发布时间】:2012-04-16 12:18:07
【问题描述】:

我目前正在使用 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];

【问题讨论】:

  • 您的代码可能很长,但遇到这种情况的人似乎并不多。您能否仅显示发生此行为的某些代码的摘要版本?
  • 好吧,因为它在我的代码中无处不在,我真的不知道我可以发布什么......
  • 我只是在这里猜测,所以我没有发布答案,但是如果您尝试使用调试器控制台并使用“po”打印出对象会发生什么?另外,您是否有任何特殊的 gdb 配置文件?这是您要调试的包含库吗?您是否在启用调试信息的情况下进行构建?仔细检查您的构建设置(生成调试符号、优化级别、调试信息格式)。
  • Matej,你真的明白了 :) 我已经检查了设置,但我又做了一次,注意到调试模式的“部署后处理”设置为“是”。将其更改为 NO 会删除警告,虽然我不太确定 LLDB 现在是否运行顺利(必须更仔细地检查设置),但这肯定回答了我的问题。很遗憾,我只是在这件事上浪费了一个 TSI :) 所以请随意制定一个正确的答案以收集您的奖励 :)

标签: objective-c ios debugging xcode4 lldb


【解决方案1】:

发送 nsnotification 的选择器需要一个(并且只有一个)参数,即 NSNotification。所以当你这样做时:

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];

-(void)foo
{

}

...您需要这样做: [notificationCenter addObserver:self selector:@selector(foo:) name:bar object:objA];

-(void)foo:(NSNotification *)notification
{

}

注意 notificationCenter 的选择器中的冒号,以及 foo 的参数。

【讨论】:

  • 正确。然而,那只是我,在我的伪代码中有一个错字。请记住,真正的问题是奇怪的调试器警告:)
  • (NSNotification)通知应该是(NSNotification*)通知
【解决方案2】:

此错误的原因是不正确的构建设置,正如问题帖子 cmets 中的讨论所示。这可以通过将调试模式的“部署后处理”设置回 NO(默认值)来解决。

【讨论】:

    【解决方案3】:

    确保将MyFancyClass.m 添加到您的目标中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      相关资源
      最近更新 更多