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
下清洁您的产品,您的应用程序应该正常运行。
这样做解决了我的问题。