Xcodedebugging器不打印对象,并显示零,当它们不是

当试图用po <objectName>打印一个对象时,Xcode显示错误,但仅用于一个项目。

截图

错误:无法实现struct:variables的大小<varName>与ValueObject的大小不一致Errored在Execute中,无法PrepareToExecuteJITExpression

Xcodedebugging器也显示所有对象nilself排除),当他们不( NSLog显示正确的输出,如图中所示)。 我不知道这个项目有什么问题。 其他项目都可以正常工作。

任何想法可能是什么? (清理项目没有效果。)

你确定你不在“发布模式”?

如果要查看variables值,则必须在“debugging模式”下(单击开始/停止button附近左上angular的项目名称,然后单击“编辑scheme…”,然后单击“运行”设置,然后单击“信息“选项卡,然后”构buildconfiguration“,这里设置”debugging“,如果是”发布“,那么你就看到了所有的nils)。

我已经将Debugconfiguration的“优化级别”设置为“None”,解决了问题。

确保您的scheme设置中closures了地址清理程序。 地址清理程序与debugging程序无法正常工作。

  1. 转到编辑scheme(产品>>scheme>>编辑scheme),select运行,然后转到诊断选项卡。
  2. 确保“启用地址清理程序”处于closures状态。

在这里输入图像说明

看来每个人都有自己的解决scheme。

对我来说,我同时使用Objective-CSwift

首先,进入TARGETS -> Build Settings并searchcode generation

你会发现Apple LLVM 6.0Swift Compiler

将其Optimization Level全部更改为None ,然后debugging,您可能会发现值不nil

令人惊讶的是,一旦你可以看到价值,永久解决这个问题,那么你可以改变Optimization Level

还有其他的方法可以发生。 对我来说,这是因为“其他C标志”值被设置为“-O2”,即使是debugging版本。 closuresdebugging版本解决了这个问题。

我刚刚遇到了这个问题,发现这是因为Build Settings中的Deployment Postprocessing = YES

改变这个NO解决它,如下面的截图所示:

在这里输入图像说明

OS X 10.9.5上的Xcode版本:6.0.1(6A317)

筛选的调试输出

对我来说,Xcode筛选出debugging器的输出。 确保您的输出设置是debugging器输出或所有输出

我只是遇到了一个类似的问题:有一点突然Xcodedebugging器打印出一些对象types,特别是NSStrings(空),虽然他们初始化一个值。 打印出来

 NSLog(@"String value: %@", myString); 

显示了对象的正确值。

混乱! 解决这个问题相当简单:我closuresXcode并重新启动计算机。 我重新启动Xcode后,一切正常再次:)。

确保生成设置中的debugging模式的Link-Time Optimization = No

这里的解决scheme也将修复您看到error: <EXPR>:1:1: error: use of unresolved identifier每次尝试povariables时error: <EXPR>:1:1: error: use of unresolved identifier

对于我来说,解决scheme是去Build Settings和searchOptimization Level ,并确保每个Debug设置设置为None

在编译设置中转到“其他C标志”,并将debugging值从-o2设置为-O0

  1. 删除派生数据
  2. 相当Xcode /重新启动
  3. 清洁项目

这就是我所需要的。

我碰到这个,以及当我发现我在释放模式,我切换到debugging…没有修复。 事实certificate,我必须先做一个干净的(cmd + shift + k)。

所以我觉得会发生的是,在release模式下,并不是所有的东西都在开发中重新编译,所以lldb不能正确读取符号。 清洁和重新编译后发展它为我工作。

实际情况是,系统应该是开箱即用的,并不是因为链接到多个不同的设置,而是一些东西可能适用于你。

为什么系统不允许在debugging模式下总是进行debugging,只有苹果能够回答(如果他们关心的话,我最近很怀疑他们这样做)。

毕竟,debugging/非debugging之间的差异将是额外的表,其中元数据仅填充内存/磁盘空间。

如果您直接针对模拟器或设备进行编译,则不会在意这些额外的兆​​字节。

所以我们需要运行额外的循环来做一个非常基本和简单的事情,那就是上个世纪以来我所知道的所有ide都做得很好。

另外,对于我来说,将“链接时间优化”从“Monolithic”调整为“No”(xcode 8)的工作正在发生变化。