Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 带有LLDB的Xcode 4.3中的奇怪错误消息_Objective C_Ios_Debugging_Xcode4_Lldb - Fatal编程技术网

Objective c 带有LLDB的Xcode 4.3中的奇怪错误消息

Objective c 带有LLDB的Xcode 4.3中的奇怪错误消息,objective-c,ios,debugging,xcode4,lldb,Objective C,Ios,Debugging,Xcode4,Lldb,我目前正在用Xcode 4.3.2编写一个iOS应用程序。在我的大部分代码中,使用LLDB进行调试效果很好。然而,在某个时刻,我在逐步执行代码时收到了一条奇怪的消息。当我在iVar上盘旋时,它说 错误[IRForTarget]:找不到Objective-C间接ivar符号OBJC_ivar_$\u MyFancyClass.ivar 而不是向我展示价值。然而,在变量视图中,我可以很好地看到它。直到我选择打印…的描述,也就是说,因为这样,Xcode崩溃了。。。 当我使用GDB时,悬停可以工作,但是

我目前正在用Xcode 4.3.2编写一个iOS应用程序。在我的大部分代码中,使用LLDB进行调试效果很好。然而,在某个时刻,我在逐步执行代码时收到了一条奇怪的消息。当我在iVar上盘旋时,它说

错误[IRForTarget]:找不到Objective-C间接ivar符号OBJC_ivar_$\u MyFancyClass.ivar

而不是向我展示价值。然而,在
变量视图中,我可以很好地看到它。直到我选择打印…
的描述,也就是说,因为这样,Xcode崩溃了。。。 当我使用GDB时,悬停可以工作,但是变量的类型和值是错误的

我发现我的代码有问题,这反过来会导致调试器失败。但是,代码运行良好。我很想提供一些示例代码,但是这个类相当长,我不能精确地指出我出错的确切位置。那么有没有人遇到过类似的行为

更新:实际上,这似乎在我的代码中无处不在,而不仅仅是在某些特定文件中。如果有帮助,当LLDB显示上述消息时,GDB总是显示拥有iVar的类的对象,而不是iVar本身。 看起来好像内存管理有问题。例如,如果我说

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];
即使在我有

[notificationCenter postNotificationName:bar object:objB];

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

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

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

-(void)foo
{

}
…您需要这样做: [notificationCenter addObserver:self selector:@selector(foo:)name:bar对象:objA]

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

}

请注意notificationCenter选择器中的冒号和foo的参数。

此错误的原因是错误的生成设置,如问题帖子评论中的讨论所示。可以通过将调试模式的“部署后处理”设置回“否”(默认值)来修复此问题

您的代码可能很长,但似乎没有足够的人遇到过这种情况。你能展示一些代码的摘要版本吗?好吧,因为它在我的代码中无处不在,我真的不知道我可以发布什么…我只是在这里猜测,所以我不发布答案,但是如果你尝试使用调试器控制台并使用“po”打印对象,会发生什么?另外,您是否有任何特殊的gdb配置fie?这是您试图调试的包含库吗?是否在启用调试信息的情况下生成?仔细检查您的构建设置(生成调试符号、优化级别、调试信息格式)。Matej,您实际得到了:)我已经检查了设置,但我再次检查了设置,并注意到调试模式的“部署后处理”设置为“是”。将其更改为“否”将删除警告,尽管我不确定LLDB现在是否运行正常(必须更仔细地检查设置),但这肯定回答了我的问题。很遗憾,我只是在这件事上浪费了一个TSI:)所以请随意制定一个适当的答案,以收集您的奖励:)正确。然而,那只是我,在我的伪代码中有一个输入错误。记住,真正的问题是奇怪的调试器警告:)(NSNotification)通知应该是(NSNotification*)通知