【问题标题】:How to improve the display of variables which are objects in the xcode 4.5 debugger (noob)如何改进在 xcode 4.5 调试器(菜鸟)中作为对象的变量的显示
【发布时间】:2012-12-05 06:22:54
【问题描述】:

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

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

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

类 Vec3 { 民众: 浮动 x,y,z; };

在调试窗口中我看到了

 pos (Vec3)

而我更愿意看到的是

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

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

【问题讨论】:

    标签: ios debugging ios-simulator xcode4.5 formatter


    【解决方案1】:

    我能够使用 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”开头的类型自动生成摘要字符串。

    【讨论】:

    • 另一个有用的花絮。您可以在监视窗口中双击该变量,会出现一个名为“为类型设置摘要格式”的弹出窗口,您可以在其中临时自定义类型的摘要字符串。但是语法似乎与“类型摘要添加...”略有不同
    【解决方案2】:

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

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

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

    你可以说

    type summary add --summary-string
    

    后面是您希望如何显示此类变量的字符串描述。

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

    【讨论】:

    • 是的,我可以修改 Vec3。 “描述”消息适用于 Objective-C,但不适用于 C++。而且它只适用于控制台窗口。我希望能够自定义监视窗口。在 MS Studio 中,您可以使用“autoexp.dat”文件很好地做到这一点。
    • 嘿!我刚刚找到了一个真正的great web page,它告诉您如何通过修改CustomDataViews.plist 为结构(如CGRect)制作自定义格式化程序......不幸的是Apple 已经删除了它......至少,我在任何地方都找不到它。
    • “我希望能够自定义监视窗口”,是的,这就是 Python 脚本的用途。您编写它,通过您的 ~/.lldbinit 文件添加它,一切就绪。
    • 我认为你对 GDB 和 LLDB 感到困惑,伙计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多