6

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

我查看了LLDB 教程,并查看了 Quinn Taylor帖子中的“自定义摘要字符串” ,但我不明白。他一定用过旧版本的 xcode。

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

类 Vec3 { public: 浮点 x,y,z; };

在调试窗口中我看到

 pos (Vec3)

我宁愿看到的是

 pos = (Vec3) (x=45.2, y=10.7, z=2.0)

无需扩展变量。有谁知道我该怎么做?

4

2 回答 2

7

我能够使用 xcode 4.5.2 来解决这个问题。总而言之,这些是步骤。

  1. 使用文本编辑器打开或创建 ~/.lldbinit,并添加这一行

    type summary add Vec3 --summary-string "x=${var.x}, y=${var.y}, z=${var.z}"
    
  2. 重启xcode。现在,当您遇到断点时,Vec3 将显示为,

    pos (Vec3) x=1, y=3.125, z=9.5
    

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

例如

type summary add Vec3 --inline-children --omit-names

将自动生成摘要字符串和

type summary add --inline-children -x "Vec[:alnum:]*"

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

于 2012-12-31T18:52:13.750 回答
2

如果 Vec3 是你的类(或者你可以继承的东西),覆盖它的description. 这使您可以格式化po pos在控制台中说的内容。

要获得更高级的信息,请参阅此页面:

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

你可以说

type summary add --summary-string

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

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

于 2012-12-18T04:51:54.237 回答