在Xcode中调试时智能Obj-C变量内容?

Ben*_*tto 8 debugging xcode objective-c

在默认(即我的)配置中,Xcode在其变量的调试器窗口中有点无用,特别是那些常见的Objective-C集合.

调试器似乎通常希望在展开某个对象时显示底层的Obj-C结构,所以我正在查看isas和类层次结构.

但是我在这里几乎总是想要的是对象本身具有语义意义的东西.例如NSDictionary,我理想地想要查看键/值列表.如果这些键和值是,例如NSStrings,我只想看到字符串值,而不是复杂的嵌套对象.这同样适用于NSSetS,NSArrays和内部的字节NSData.并且NSString,虽然通常在摘要列中获取它们的字符串表示,但是当它们很长时(例如,在列中看起来太长而不能滚动的路径名)时,我们无法查看 - 当我双击时它,我得到显示模板字符串,所以我不能选择/复制它.

我最近花了一些时间在Eclipse上调试Java,并且由于它的所有缺点,Eclipse知道所有Java集合,并且在字符串或集合的内容中有一个简单的单行转储,或者在调试器中找到它时的任何内容.

有没有办法在Xcode中获得这个?我错过了一些明显的东西,还是应该潜入显示模板系统?我知道那里有一些支持,因为NSArrays似乎得到一种特殊的列表格式,NSDictionaries获得"2键/值对"摘要等.

编辑:可以放入GDB以获取更多关于对象的数据.令我感到沮丧的是,GDB po在an上的行为NSDictionary给出了我期望从GUI调试器中获得的那种非常有用的输出.可以在没有上下文切换到控制台的情况下复制吗?

我非常喜欢Xcode环境,但是我一直使用的对象几乎完全不透明,这确实阻碍了调试时间.谢谢.

pka*_*amb 1

在Xcode 6中这个功能好像已经实现了?当 2010 年问这个问题时,我无法谈论 Xcode 的功能。

\n\n

NSStringNSNumberNSArrayNSDictionary代码中的值,并带有断点:

\n\n

代码中的变量

\n\n

当断点中断时,您可以在 Xcode“变量视图”中看到值。对于集合,您可能需要展开详细信息箭头:

\n\n

调试器中的值

\n\n

如果右键单击变量并选择"Print Description of variable_name",则该对象的-debugDescription/-description值将打印到控制台。这对于更复杂的集合通常很有用,也许对于长NSString值等有用。

\n\n

Xcode 7 中 \xe2\x80\x9c 的屏幕截图打印说明\xe2\x80\x9d 上下文菜单项

\n\n

打印到控制台。

\n

  • 是的,感谢您更新的答案。在过去的几年里,Xcode 慢慢地对默认显示进行了这些改进——在 2010 年,默认显示的无用程度令人震惊。 (2认同)