如何改进xcode 4.5调试器(noob)中对象变量的显示

Joh*_*kel 6 debugging formatter ios ios-simulator xcode4.5

我在Mac上使用Xcode 4.5和iOS模拟器来编写iPhone应用程序.当我在调试器中遇到断点时,我使用"Auto"来查看变量.问题是对象最初都是折叠的,我必须扩展每个对象才能看到它的值.没关系,但这很乏味且难以阅读.有没有办法自定义调试器中数据的显示方式?

我查看了LLDB教程,我在Quinn Taylor 的帖子中查看了"自定义汇总字符串" ,但我不明白.他必须使用旧版本的xcode.

基本上,我有一个对象,如

class Vec3 {public:float x,y,z; };

在调试窗口中,我看到了

 pos (Vec3)
Run Code Online (Sandbox Code Playgroud)

而我宁愿看到的是

 pos = (Vec3) (x=45.2, y=10.7, z=2.0)
Run Code Online (Sandbox Code Playgroud)

无需扩展变量.有谁知道我怎么做到这一点?

Joh*_*kel 7

我能够使用xcode 4.5.2.总而言之,这些是步骤.

  1. 使用文本编辑器打开或创建〜/ .lldbinit,然后添加此行

    type summary add Vec3 --summary-string "x=${var.x}, y=${var.y}, z=${var.z}"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 重启xcode.现在,当您点击断点时,Vec3将显示为,

    pos (Vec3) x=1, y=3.125, z=9.5
    
    Run Code Online (Sandbox Code Playgroud)

您可以在.lldbit中执行很多其他操作,如http://lldb.llvm.org/varformats.html中所述.

例如

type summary add Vec3 --inline-children --omit-names
Run Code Online (Sandbox Code Playgroud)

将自动生成摘要字符串和

type summary add --inline-children -x "Vec[:alnum:]*"
Run Code Online (Sandbox Code Playgroud)

将为以"Vec"开头的所有类型自动生成摘要字符串.


mat*_*att 2

如果 Vec3 是您的类(或者您可以子类化的类),请覆盖其description. po pos这使您可以格式化您在控制台中所说的内容。

要获得更多的乐趣,请参阅此页面:

http://lldb.llvm.org/varformats.html

你可以说

type summary add --summary-string
Run Code Online (Sandbox Code Playgroud)

后跟一个字符串描述,说明您希望如何显示此类变量。

如果您真的想深入了解细节,您可以编写自己的格式化程序;WWDC 2012 的两个视频中关于调试和 LLDB 的讨论很好。但你必须编写一个 Python 脚本才能做到这一点,所以我给出了更多“菜鸟”解决方案。