Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c lldb无法打印带有“错误:对“id”的引用不明确”的变量值_Objective C_Ios_Xcode4.3_Lldb - Fatal编程技术网

Objective c lldb无法打印带有“错误:对“id”的引用不明确”的变量值

Objective c lldb无法打印带有“错误:对“id”的引用不明确”的变量值,objective-c,ios,xcode4.3,lldb,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

由于我更新到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/。谷歌还没有发现任何其他类似问题

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


我已经向苹果报告了这个Bug ID 11029004。

我找到了一个解决方法:

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

显然,苹果认为他们已经在xcode 4.3.1中修复了这个bug,但它仍然存在。我提交了一些他们要求的额外调试信息,所以我希望它能在下一版本的xcode中得到修复。它在4.3.2中仍然失败。有关Apple的更新,请参阅

更新

我尝试过各种我遇到问题的情况,它们似乎都可以在Xcode 4.4.1中与lldb一起正常工作-因此,如果您遇到此问题,我强烈建议升级。

使用“产品”菜单下的编辑方案,选择左栏中的“运行”和“信息”选项卡,然后将调试器更改为gdb

产品>编辑方案>运行方案>生成配置 它有三个选项有些人可能只看到两个1,2 1.调试 2.释放 3.临时

只需交叉检查它是否设置为Debug,如果未设置,则将其设置为Debug


这就是我所犯的错误,这并不是对原始问题的直接回答,但我认为这可能是相关的,我不想让其他人像我那样浪费时间去追踪它。我遇到的问题是调试窗口中没有显示变量值

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

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


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

试试下面的表达方式

p self.view.bounds.size.width
或使用,

po self.view
p-打印仅用于打印普通/简单值 虽然 po-打印对象的工作原理与NSLog相同,用于打印对象的值

转到产品->方案->新方案。。。并为您的目标创建一个新方案。 在product->Clean下清洁您的产品,您的应用程序应能正常运行


这样做解决了我的问题

lldb仍在进行中。@Zaph我想知道,如果是这样的话,为什么苹果会将其作为XCode 4.3中的默认调试器。出于某种原因,在调试器中显示IVAR的功能在苹果的优先级较低。很多时候,由@property语句自动创建或在@implementation中声明的IVAR是不可显示的。情况正在好转,尽管进展缓慢。请在bugreport.apple.com上提交一个bug。我也有同样的问题,但只是在我的主项目中,而不是在新生成的项目中。还没弄清楚会是什么。。。图书馆?LLDB是XCDEX 4.3中的默认调试器,但对于一些根本不工作的东西,C++…还有别的地方不对劲。我试过p、po和打印,但都没用。在这种状态下,lldb对我来说是无用的。希望这是其他一些很容易解决的奇怪之处。同时将提交错误报告。同时,这是令人鼓舞的:非常好-谢谢!小修正:编辑方案在产品菜单下。其余的都一样,这救了我一天!更新:Xcode 5已经完全删除了gdb,而您在所有的glor中都被lldb卡住了 Y