由于我更新到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。
答案 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
下清洁您的产品,您的应用应该正常运行。
这样做解决了我的问题。