lldb无法打印变量值“错误:引用'id'是不明确的”

时间:2012-03-01 11:48:57

标签: objective-c ios xcode4.3 lldb

由于我更新到xcode 4.3并让它将调试器切换到lldb,因此任何打印成员变量的请求都会失败,并显示以下错误消息:

(lldb) print request
error: error: reference to 'id' is ambiguous
note: candidate found by name lookup is 'id'
note: candidate found by name lookup is 'id'
error: 1 errors parsing expression

'self'没关系:

(lldb) print self
(LoginViewController *) $6 = 0x1cd54d50

打印成员变量的其他形式也失败了:

(lldb) print self.request
error: property 'request' not found on object of type 'LoginViewController *'; did you mean to access ivar 'request'?
error: 1 errors parsing expression
(lldb) print self->request
error: error: reference to 'id' is ambiguous
note: candidate found by name lookup is 'id'
note: candidate found by name lookup is 'id'
error: 1 errors parsing expression

否则其他一切似乎都运转正常。 Xcode的变量窗口可以正确检索值。我尝试了一个干净的构建并删除了〜/ Library / Developer / Xcode / DerivedData /。谷歌搜索没有透露任何其他相同问题的实例。

我在Apple的开发论坛上发现了一个帖子但没有解决方案:

https://devforums.apple.com/message/623694

我已向Apple报告此错误ID#11029004。

5 个答案:

答案 0 :(得分:39)

我找到了一个解决方法:

使用“产品”菜单下的“编辑方案”,在左侧栏中选择“运行”,“信息”选项卡,然后将调试器更改为gdb(这不适用于xcode 5,它不再具有gdb )。

显然Apple认为他们已经修复了xcode 4.3.1中的这个错误,但它仍然会发生。我提交了一些他们要求的额外调试信息,所以我希望它能在xcode的下一个版本中修复。它仍然在4.3.2失败。有关Apple的更新,请参阅https://devforums.apple.com/message/623694

<强>更新

我已经尝试过各种我遇到问题的情况,而且他们似乎都在Xcode 4.4.1中使用lldb工作正常 - 因此如果你遇到这个问题,我强烈建议升级。

答案 1 :(得分:3)

尝试使用以下表达式,

p self.view.bounds.size.width

或使用,

po self.view

p - 打印仅用于打印普通/简单值 而, po - Print Object与NSLog的工作原理相同,可以打印对象的值

答案 2 :(得分:2)

使用“产品”菜单下的Edit scheme,在左侧栏中选择“运行”,“信息”标签,然后将调试器更改为gdb。

Product&GT; Edit Scheme&GT; Run(方案)GT; Build Configuration 它有三个选项(有些可能只看到两个1,2)  1.调试  2.发布  3. AdHoc

只要交叉检查它是否设置为Debug,如果没有,则进行调试。

这是我正在做的错误

答案 3 :(得分:1)

(Xcode5)这并不是对原始问题的直接回答,但我认为它可能是相关的,我不想认为其他人浪费时间,因为我跟踪它。我遇到的问题是调试窗口中没有显示变量值。

我检查了实际给予编译器的调用,并发现它正在使用-Os进行优化,尽管工作区中的每个项目和目标都明确设置为-O0,其他答案中提到的设置全部都是被设置为Debug。经过大量搜索后,我发现每个项目的“信息”部分都有一个选项,名为“使用xxx进行命令行构建”,其中xxx是Debug / Release或任何可用的配置。根据工具提示说明,此选项应仅影响使用xcodebuild工具通过命令行完成的构建(这有点奇怪,因为该工具完全能够选择将哪个方案用作命令行选项)。无论如何,将此选项更改为Debug终于让IDE告诉编译器我想要-O0和-g。我不记得Xcode4发生过这种情况,工作空间相同。

我还应该补充一点,您可能希望在更改此设置之前进行清理。我没有清理就更改了它,突然发现我的一些头文件没有找到(似乎没有正确生成预编译的头文件)。经过一个小时左右的黑暗刺杀后,我发现如果我首先将上述选项设置回Release并执行干净,那么我可以将其设置为Debug并成功构建。

有人知道Xcode开发团队是否真的自己使用它?我得到了他们没有的明显印象。

答案 4 :(得分:0)

转到Product - &gt; Scheme - &gt; New Scheme...并为您的目标创建新方案。 在Product - &gt; Clean下清洁您的产品,您的应用应该正常运行。

这样做解决了我的问题。

相关问题