lldb无法打印variables值与“错误:引用'ID'是不明确的”

由于我更新到xcode 4.3并让我们的debugging器切换到lldb,所以打印成员variables的任何请求都会失败,并显示以下错误消息:

(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 

'自我'可以:

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

而其他forms的打印成员variables也失败了:

 (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的variables窗口可以正确地检索值。 我已经尝试了一个干净的构build和删除〜/ Library / Developer / Xcode / DerivedData /。 谷歌search没有透露任何其他相同的问题。

我发现苹果的开发论坛上的一个线程,但没有解决scheme:

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

我已经向Apple报告了这个错误ID为11029004。

我find了一个解决方法:

使用“产品”菜单下的“编辑scheme”,在左侧栏中的“信息”选项卡中select“运行”,并将debugging器更改为gdb(这不适用于不再具有gdb的xcode 5)。

显然,苹果公司认为他们已经修复了xcode 4.3.1中的这个bug,但是它仍然会发生。 我提交了一些额外的debugging信息,他们要求,所以我希望它将被修复的Xcode的下一个版本。 4.3.2仍然失败。 有关Apple的更新,请参阅https://devforums.apple.com/message/623694

UPDATE

我已经尝试了各种各样的情况下,我遇到了麻烦,他们都似乎在Xcode 4.4.1 lldb正常工作 – 因此,我强烈build议升级,如果你有这个问题。

尝试下面的expression,

 p self.view.bounds.size.width 

或使用,

 po self.view 

p – Print仅用于打印正常/简单值,而po – Print Object与NSLog相同,可以打印对象的值

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

Product > Edit Scheme > Run (scheme)> Build Configuration它有三个选项(有些可能只看到两个1,2)1.debugging2.发布3. AdHoc

只要交叉检查是否设置为Debug如果没有,然后使其debugging。

这是我所做的错误

(Xcode5)这不是直接回答原来的问题,但我认为这可能是相关的,我不想认为别人浪费了几个小时,因为我跟踪了它。 我遇到的问题是没有variables值显示在debugging窗口中。

我检查了实际上被赋予编译器的调用,发现它正在用-Os进行优化,尽pipe工作区中的每个项目和目标都被显式设置为-O0,其他答案中提到的设置全部被设置为debugging。 经过大量search后,我发现每个项目的“信息”部分都有一个选项,称为“使用xxx进行命令行构build”,其中xxx是“debugging/释放”或任何可用的configuration。 根据工具提示描述,这个选项只应该影响使用xcodebuild工具通过命令行完成的构build(这有点奇怪,因为该工具完全能够select哪个scheme用作命令行选项)。 无论如何,将这个选项改为Debug最后让IDE告诉编译器我想-O0和-g。 我不记得在Xcode4中发生过这种情况,它们的工作空间相同。

我还应该补充说,在更改此设置之前,您可能需要进行清理。 我改变它没有清洗,突然有一些我的头文件没有被发现(似乎预编译头文件没有正确生成)。 在黑暗中刺了一个小时之后,我发现如果我首先将上述选项设置为Release并做了清理,那么我可以将它设置为Debug并成功构build。

有谁知道Xcode开发团队是否真的自己使用它? 我明白他们没有。

转到Product – > Scheme – > New Scheme...并为您的目标创build一个新计划。 在Product – > Clean下清洁您的产品,您的应用程序应该正常运行。

这样做解决了我的问题。