Xcode 在尝试使用 打印对象时显示错误po <objectName>,但仅针对一个项目。
错误:无法实现结构:变量 <varName> 的大小与 ValueObject 的大小不一致 在执行中出错,无法 PrepareToExecuteJITExpression
Xcode 调试器还将所有对象显示为nil(self排除),当它们不是时(NSLog显示正确的输出,如图所示)。我不知道这个项目有什么问题。每个其他项目都可以正常工作。
知道它可能是什么吗?(清理项目没有效果。)
Xcode 在尝试使用 打印对象时显示错误po <objectName>,但仅针对一个项目。
错误:无法实现结构:变量 <varName> 的大小与 ValueObject 的大小不一致 在执行中出错,无法 PrepareToExecuteJITExpression
Xcode 调试器还将所有对象显示为nil(self排除),当它们不是时(NSLog显示正确的输出,如图所示)。我不知道这个项目有什么问题。每个其他项目都可以正常工作。
知道它可能是什么吗?(清理项目没有效果。)
你确定你没有处于“发布模式”吗?
如果要查看变量值,则必须处于“调试模式”(单击左上角靠近开始/停止按钮的项目名称,然后单击“编辑方案...”,然后单击“运行”设置,然后单击“ Info”选项卡,然后是“Build Configuration”。这里设置“Debug”。如果它在“Release”上,那就是你看到所有 nils 的问题)。
似乎每个人都有自己的解决方案。
对我来说,我同时使用Objective-C和Swift。
首先,去TARGETS -> Build Settings搜索code generation
你会发现Apple LLVM 6.0 并且 Swift Compiler
将它们Optimization Level全部更改为None,然后调试,您可能会发现值不是nil
令人惊讶的是,一旦你看到了价值,你就永久地解决了这个问题,然后你可以改变Optimization Level它以前的样子。
还有其他可能发生这种情况的方式。对我来说,这是因为“其他 C 标志”值设置为“-O2”,即使是在调试版本中也是如此。为调试版本关闭此功能可解决此问题。
刚遇到这个问题,发现是因为Deployment Postprocessing = YES在Build Settings中。
将其更改为NO修复它,如下面的屏幕截图所示:

Xcode 版本:OSX 10.9.5 上的 6.0.1 (6A317)
我刚刚遇到了一个类似的问题:Xcode 调试器突然打印出一些对象类型,尤其是 NSStrings 为 (null),尽管它们是用一个值初始化的。通过打印出来
NSLog(@"String value: %@", myString);
显示了对象的正确值。
令人困惑!解决这个问题相当容易:我只是关闭了 Xcode 并重新启动了我的计算机。在我重新启动 Xcode 后,一切都再次正常工作:)。
确保Link-Time Optimization = No构建设置中的调试模式。
这就是我所需要的。
此处的解决方案还将修复您error: <EXPR>:1:1: error: use of unresolved identifier每次尝试po使用变量时看到的错误。
对我来说,解决方案是去Build Settings搜索Optimization Level并确保每个Debug设置都设置为None.
转到构建设置中的“其他 C 标志”并将调试值从 -o2 设置为 -O0
我也遇到过这个问题,当我发现我处于发布模式时,我切换到调试......没有修复。原来我必须先做一个干净的 (cmd+shift+k)。
所以我认为发生的事情是,在构建发布模式后,并非所有内容都在开发中重新编译,因此 lldb 无法正确读取符号。在开发中清理和重新编译后,它对我有用。
当以非常特定的方式添加一些依赖项时,我遇到了这个问题 - 它可以工作,但是当你尝试从这个框架中打印一些东西时,你会得到error
解决方案是以一般方式添加此依赖项
现实情况是,系统应该开箱即用,而不是由于链接到多个不同的设置,以至于事情可能对您有用,或者不适用。
为什么系统不允许在调试模式下始终进行调试是一个只有 Apple 才能回答的谜(如果他们关心的话,最近我怀疑他们这样做)。
毕竟,调试/非调试之间的区别将是带有元数据的额外表,这些表只填充内存/磁盘空间。
如果您直接针对模拟器或设备进行编译,您将不会关心那些额外的兆字节。
所以我们需要运行额外的循环来做一个非常基本和简单的事情,我自上个世纪以来所知道的所有 ide 都做得很好。
并且补充一点,对我来说,“调试”链接时间优化从“单片”更改为“否”(xcode 8)。