【问题标题】:Watching variables in Xcode在 Xcode 中观察变量
【发布时间】:2009-06-24 19:52:20
【问题描述】:

我正在尝试使用 Xcode 观察变量。我按照here 中的说明在断点处暂停,选择运行> 变量视图> ...。但除了“启用数据格式化程序”之外,其余选项都显示为灰色。有什么想法吗?

我使用的是 Xcode 3.1.3 版。

【问题讨论】:

  • 一旦你遇到断点,你应该可以将鼠标悬停在断点上,它会显示变量信息。
  • 您确定您正在运行调试版本并关闭优化?
  • 我尝试了调试版本而不是发布版本,但问题仍然存在。
  • @zPesk — 请注意,“观察点”与“断点”不同。前者用于监控特定的数据地址,后者用于在给定的代码行处停止。

标签: objective-c xcode


【解决方案1】:

不幸的是,我也没有从“运行”菜单创建观察点来为我工作。需要注意的一件事是,当变量超出范围时,观察点可能会变得无效。

如果您不介意再深入一点,您可以使用一些低级的gdb 命令为内存本身的地址设置观察点。例如,在您链接到的指南中,他们展示了如何观察变量path,它是一个值为0xbfffeb70 的指针。要手动设置该地址的观察点,请在“(gdb)”提示符后单击调试器控制台(打印调试输出的位置)并键入如下内容:

watch *((int*)0xbfffeb70)

神秘的语法是必要的,因为 gdb 期望输入为 C 表达式。如需更多详细信息,请visit this link 并跳转到标题为“使用硬件观察点”的部分。 (我在 Intel 机器上进行测试,不确定 PowerPC 是如何处理它的。)当您以这种方式设置观察点时,Xcode 会在达到观察点时通过下拉表提醒您并告诉您值是如何更改的,并且gdb 将在控制台中打印相同的信息。

【讨论】:

  • 如果你想观察一个 C++ 方法的成员,我发现这个变体非常有用:watch -location mTextFormatted。揭示了一个与静态与动态转换相关的令人讨厌的错误;)
  • lldb 替代方案是watchpoint set expression -- 0xbfffeb70 或简称w s e -- 0xbfffeb70。
【解决方案2】:

我刚刚遇到了这个问题。这是一个解决方案:右键单击变量名称,然后从出现的菜单中选择“在窗口中查看变量”。它应该在底部附近。

【讨论】:

    【解决方案3】:

    添加断点。在调试区域的监视列表中右键单击并选择“添加表达式...”

    如果您获得不同的菜单,则必须单击当前突出显示的变量,以便在您右键单击时不会突出显示任何内容。

    【讨论】:

    • 当表达式改变时它不会停止
    【解决方案4】:

    这里给出的答案只有在您使用gdb 编译器时才有效。对于那些正在寻找使用lldb 编译器设置观察点的选项的人,我有个坏消息:

    尽管 lldb 文档说你可以,但它不能工作 jet(XCode 4.3.2 和 lldb 3.1)。

    查看this 电子邮件。与gdbs 相比,lldb 命令可以找到here

    【讨论】:

    • wa s e -- <addr> 为我工作,例如:wa s e -- 0xbfffeb70
    【解决方案5】:

    我试图在 XCode 5 中解决这个问题。我终于在输出控制台的右下角找到了一个“变量视图”按钮。左边是灰色的小矩形,如果没有启用,右边是白色。我不确定这是否在 XCode 3 中,但我希望大多数人已经升级了。

    【讨论】:

      猜你喜欢
      • 2015-10-03
      • 2011-08-24
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多