Xcode调试器显示变量的错误值

时间:2018-11-02 13:19:35

标签: swift xcode macos

我以前问过类似的问题here。这个版本有更简单的示例

更新后的摘要:Xcode在调试器变量部分为每个String显示“ FAIL”。 Swift print()语句显示正确的变量值。所有其他数据类型显示正确。我该如何返回正常工作的可执行文件?

问题:Xcode显示的变量值不正确。最初,这发生在一个项目中。现在,每个项目,包括新项目,都具有不正确的变量值。这是一个截图,演示了一个新项目中的问题(请原谅我将ViewDidLoad()用作main()。)

enter image description here

这就是我所做的:删除Xcode.app(版本10.0)。从App Store下载Xcode 10.1。创建一个新项目。输入此代码,然后运行。

在Xcode 9.4.1和Xcode 10.0中的现有项目中也会发生相同的问题-与Xcode 10.1的新安装相同的行为。

由于Xcode的所有版本都显示相同的问题,因此我假设此问题不在Xcode可执行文件中,而是在某些缓存或其他临时文件中。我已经清理了我的项目,重新启动了Xcode,重新启动了,等等。没有帮助。

所以我的问题是:如何获得Xcode的全新安装?我可以删除哪些目录才能进入工作状态?我是新手。我只有在iOS调试器或OS X上运行的测试项目,因此我很高兴重新编译所有项目。 Xcode使用的临时文件和目录是否完整列表?

我是否必须删除已写入磁盘的所有Xcode?如果没有其他解决方案,我愿意接受。

感谢有关如何进行或如何收集更多信息的任何建议...

1 个答案:

答案 0 :(得分:1)

经过大量的猜测,我能够解决这个问题。

我同意@Martin R的说法,这听起来不像是缓存问题,因为在下载新版本的Xcode之后问题仍然存在。我猜测只有首选项和UserData才能使新的可执行文件失效...

我查看了UserData目录,并找到了调试器的子目录:

~/Library/Developer/Xcode/UserData/Debugger/

在此目录中有一个名为“ CustomDataFormatters”的文件。我不知道文件是如何创建的,但这是它的内容:

<?xml version="1.0" encoding="UTF-8"?>
<CustomDataFormatters
   version = "1.0">
   <SummaryFormatters>
      <SummaryFormatter
         formatString = "FAIL"
         type = "Swift.String">
      </SummaryFormatter>
   </SummaryFormatters>
</CustomDataFormatters>

此文件似乎将每个字符串设置为“ FAIL”,这是我看到的确切行为。进一步的测试表明,整数,浮点数和其他数据类型正确显示-只是字符串类型始终不正确。

删除此文件解决了我的问题。

如果任何人都可以解释该文件的创建方式,我将不胜感激,但现在,我可以再次进行调试!

在应用程序调试期间,我右键单击了字符串变量以“复制”数据或“将值查看为...”。我在degug期间是否按了一些按键顺序来创建此文件? 在尝试CMD + B或CMD + R时,我是否按下了一些奇怪的键盘快捷键?

此外,我将此问题的标题更改为“ Xcode调试器对所有字符串显示“失败””,以帮助将来进行搜索。