【发布时间】:2011-03-16 00:20:59
【问题描述】:
在其默认(即,我的)配置中,Xcode 在其调试器窗口中对变量(尤其是常见的 Objective-C 集合种类的变量)的调试器窗口有些无用。
当我展开一些对象时,调试器似乎通常想要显示底层的 Obj-C 结构,所以我正在查看isas 和类层次结构。
但我几乎总是想要的是对对象本身具有语义意义的东西。例如。对于NSDictionary,理想情况下我希望查看键/值列表。如果这些键和值是,例如NSStrings,我只想查看字符串值,而不是复杂的嵌套对象。 NSSets、NSArrays 和 NSData 中的字节也是如此。而NSStrings,虽然通常在摘要列中获取他们的字符串表示,但当它们很长时是不可能看到的(例如,太长而无法放入列中的路径名似乎无法滚动)——当我双击它,我得到的是显示模板字符串,所以我也不能选择/复制它。
我最近花时间在 Eclipse 调试 Java,尽管它的所有错误,Eclipse 都知道所有 Java 集合,并且在你找到它时从字符串或集合的内容或任何其他内容中进行简单的单行转储在调试器中。
有没有办法在 Xcode 中得到这个?我是否遗漏了一些明显的东西,或者我应该潜入显示模板系统?我知道那里有一些支持,因为 NSArrays 似乎获得了一种特殊的列表格式,NSDictionaries 获得了“2 个键/值对”摘要等。
编辑:可以进入 GDB 以获取有关对象的更多数据。 GDB 的po 作用于NSDictionary 提供了我期望从GUI 调试器获得的那种非常有用的输出,这让我很沮丧。可以在没有上下文切换到控制台的情况下复制它吗?
我非常喜欢 Xcode 环境,但我一直使用的对象几乎完全不透明,这确实妨碍了调试时间。谢谢。
【问题讨论】:
-
如果我理解正确,我认为这将是一个很棒的功能(如果它存在我也想知道) - 但这不应该妨碍调试,因为 gdb 控制台及其所有 CLI荣耀可以倾倒任何你需要的东西。 :)
标签: objective-c xcode debugging