【问题标题】:View variable data while debugging in Objective-C在 Objective-C 中调试时查看变量数据
【发布时间】:2010-11-25 09:39:42
【问题描述】:

我来自 .Net 世界,所以我习惯于在调试时将鼠标悬停在变量上并查看其值。
在 Objective-C 中,我对如何做到这一点感到非常困惑。
如果我将鼠标悬停在它上面,我会看到一个包含大量信息的小弹出窗口……这对我一点帮助都没有。
例如,我有一个名为“myServer”的对象,它是我通过 CoreData 创建的“服务器”的一个实例。它的属性之一是“root”,它是一个简单的 NSString。 我一生都无法弄清楚如何查看[myServer root] 的价值。
有人可以给我一些建议吗?

【问题讨论】:

  • 将鼠标悬停在 XCode 中的值上,并在这些弹出窗口中导航显示三角形,效果非常好,以至于我在 OS X 中开发面向 linux 的程序来享受这种行为。
  • 当我将鼠标悬停在它上面时,我会弹出一个说它是“Server”类型的弹出窗口,当你展开那个三角形时它说它是“ManagedObject”类型,从那里它只是一堆无用的信息这绝不会显示我定义的属性。
  • 另外,当我将鼠标悬停在一个名为“用户名”的 NSString 上时,我看到了以下内容。 jamespwright.com/images/public/screengrabs/… 那里没有对我要查找的内容有意义的数据。

标签: objective-c debugging


【解决方案1】:

在 gdb 控制台中,键入

po [myServer root]

【讨论】:

  • 谢谢你,它回答了这个问题并帮助我意识到我需要帮助调试 CoreData 对象。谢谢!
  • 愚蠢的问题我敢肯定,但是如何让这个 GDB 控制台显示在 Xcode 中?我在第 5 版中。
【解决方案2】:

我喜欢从命令行使用 GDB。打开终端并输入

gdb
attach <your process name>

(确保您的程序是使用调试符号构建的)。然后,当您的变量名在范围内时(例如,当您在相关的地方中断时)输入

po variableName

查看其内容。

【讨论】:

    【解决方案3】:

    另一种处理这个问题的好方法是直接从断点记录。

    为此,请在设置了要查看的值后创建一个断点,然后对其进行编辑。添加“log”的断点操作,并将要记录的表达式放在一对@符号中。选中右侧的框,确保断点实际上不会导致停止。该值将在运行和调试时输出到调试器控制台。

    这样做您 (a) 不会弄乱您的源代码,(b) 可以根据您的迫切需要随意禁用/启用断点,并且 (c) 不需要停止执行。

    可以从Joar Wingfors' 'Debugging with Xcode' talk. 中挑选出这个和其他非常方便的 xcode 技巧

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2019-05-09
      相关资源
      最近更新 更多