46

由于我更新到 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

“自我”没问题:

(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 的变量 window 可以正确检索值。我尝试了一个干净的构建并删除 ~/Library/Developer/Xcode/DerivedData/。谷歌搜索没有发现任何其他相同问题的实例。

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

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

我已将此作为 Bug ID# 11029004 报告给 Apple。

4

5 回答 5

39

我找到了一种解决方法:

使用“Product”菜单下的“Edit scheme”,在左侧栏中选择“Run”,“Info”选项卡,并将 Debugger 更改为 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 - 因此,如果您遇到此问题,我强烈建议您升级。

于 2012-03-01T12:14:20.820 回答
3

尝试使用以下表达式,

p self.view.bounds.size.width

或使用,

po self.view

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

于 2014-09-11T12:14:25.773 回答
2

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

Product> Edit Scheme> Run(Schemes)>Build Configuration 它有三个选项(有些可能只看到两个1、2) 1. Debug 2. Release 3. AdHoc

只需交叉检查它是否设置为Debug如果没有,然后使其调试。

这是我正在做的错误

于 2012-11-05T05:52:05.420 回答
1

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

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

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

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

于 2013-10-10T21:42:27.300 回答
0

转到Product-> Scheme->New Scheme...并为您的目标创建一个新方案。Product在->下清理您的产品Clean,您的应用程序应该可以正常运行。

这样做解决了我的问题。

于 2015-07-22T12:11:59.427 回答