XCode调试器中数组的奇怪描述

时间:2009-07-08 06:11:49

标签: objective-c xcode debugging

在XCode调试器中调试我的程序时,如果我将鼠标悬停在数组变量上,则XCode调试器用于向我显示数组中有多少个对象,我甚至可以自己检查对象。

在某个地方,这个功能被破坏了,现在它只是说我的所有数组中都有“-1812597152个对象”,我无法访问各个对象。

有谁知道出了什么问题?或者更好的是,如何解决这个问题?


修改

所有阵列都会发生这种情况,因此我认为这不是一个保留问题。

我检查了自定义数据视图,没有运气。不幸的是移动了plist

〜/ Library / Application Support / Apple / Developer Tools / CustomDataViews /

无效,

中没有文件

〜/ Library / Application Support / Developer / Shared / Xcode / CustomDataViews /

这里是数组中的条目 /Developer/Library/Xcode/CustomDataViews/Foundation.plist

<key>NSArray *</key>
<dict>
    <key>SummaryString</key>
    <string>{(int)[$VAR count]} objects</string>
</dict>

这对我来说非常好。

3 个答案:

答案 0 :(得分:2)

听起来你想要查看的数组超出了范围。如果在函数的最后一行设置断点,有时会发生这种情况,因为编译器可能已经优化了该行并清理了本地对象。如果是这种情况,NSStrings等其他对象也将不可用。

您可能已经定义了自定义数据格式化程序,但我更有可能说范围问题。尝试在代码中先设置一个断点,然后逐步查看数组描述是否在某个时候出现乱码。

希望有所帮助!

答案 1 :(得分:1)

编辑:正如@Ben所提到的,首先检查数组变量是否超出范围。我还要补充一点,可能该对象已被回收(通过-dealloc或GC),因此请检查以确保在需要时保留该对象。

如果所有数组一直出现此问题,您可能无意中更改了Xcode调试器中的data formatter摘要字符串。更改数据格式化程序时,它会覆盖默认值。例如,NSArray格式化程序位于以下文件中:

/Developer/Library/Xcode/CustomDataViews/Foundation.plist

您可以create your own data formatters存储在此目录中的plist文件或包中:

~/Library/Application Support/Developer/Shared/Xcode/CustomDataViews/

动态指定的自定义数据格式化程序(直接在Xcode调试程序的摘要字段中键入的格式化程序)存储在此目录中:

~/Library/Application Support/Apple/Developer Tools/CustomDataViews/

如果该目录中存在 CustomDataViews.plist 文件,我建议将其移开以查看您的问题是否消失。如果确实如此,并且您不需要它定义的任何自定义格式化程序(您可以使用属性列表编辑器或任何文本编辑器进行检查),则可以安全地删除它。

答案 2 :(得分:1)

尽管所有使用数据格式的编辑工作尚未完成,但请务必通过取消选中Run-&gt; Variables View-&gt; Enable Data Formatters选项来尝试禁用数据格式化程序。

这会完全禁用自定义数据格式化程序,因此如果它对显示没有影响,则应将其排除在外。

(道歉,还不能添加评论)