在 Xcode 中观察变量
Posted
技术标签:
【中文标题】在 Xcode 中观察变量【英文标题】:Watching variables in Xcode 【发布时间】:2009-06-24 19:52:20 【问题描述】:我正在尝试使用 Xcode 观察变量。我按照here 中的说明在断点处暂停,选择运行> 变量视图> ...。但除了“启用数据格式化程序”之外,其余选项都显示为灰色。有什么想法吗?
我使用的是 Xcode 3.1.3 版。
【问题讨论】:
一旦你遇到断点,你应该可以将鼠标悬停在断点上,它会显示变量信息。 您确定您正在运行调试版本并关闭优化? 我尝试了调试版本而不是发布版本,但问题仍然存在。 @zPesk — 请注意,“观察点”与“断点”不同。前者用于监控特定的数据地址,后者用于在给定的代码行处停止。 【参考方案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 电子邮件。与gdb
s 相比,lldb
命令可以找到here
【讨论】:
wa s e -- <addr>
为我工作,例如:wa s e -- 0xbfffeb70
【参考方案5】:
我试图在 XCode 5 中解决这个问题。我终于在输出控制台的右下角找到了一个“变量视图”按钮。左边是灰色的小矩形,如果没有启用,右边是白色。我不确定这是否在 XCode 3 中,但我希望大多数人已经升级了。
【讨论】:
以上是关于在 Xcode 中观察变量的主要内容,如果未能解决你的问题,请参考以下文章