LLDB – 在任意对象的实例变量上设置观察点

Posted

技术标签:

【中文标题】LLDB – 在任意对象的实例变量上设置观察点【英文标题】:LLDB – Set watchpoint on instance variable of arbitrary object 【发布时间】:2015-07-25 19:46:32 【问题描述】:

出于某种奇怪的原因,回到视图控制器会更改我视图的子视图 _settingsButtonuserInteractionEnabled,它属于 UIButton 类型。我想知道为什么会这样。在视图控制器的代码中设置断点后,我尝试这样做:

但我不知道如何访问我的视图控制器的 _settingsButton 属性的实例变量。我该怎么做?

【问题讨论】:

【参考方案1】:

根据我的经验,最简单的方法是在左侧的断点面板中(在您的情况下)[UIButton setUserInteractionEnabled:] 上设置一个符号断点。单击 +,然后单击符号断点,然后单击上面引用的字符串。我过去做过这个,它确实有效,所以如果你对上述内容有任何不满,你可以稍微修改一下语法。

【讨论】:

对,这里的重点是属性实际上是数据,因此不是您可以观看的。有时有一个支持 ivar - 如果你碰巧知道它的名字是什么,你可以观看它。但甚至可能没有,只有一个返回值的 getter 和一个设置它的 setter……还要注意,可以重命名 setter 和 getter,因此它们不一定具有规范名称。如果您在 setter 上放置的断点没有被命中,请记住这一点。

以上是关于LLDB – 在任意对象的实例变量上设置观察点的主要内容,如果未能解决你的问题,请参考以下文章

类和对象

内存地址上的观察点

python 基础

java中什么是实例变量

vue中注册组件

Qt文档阅读笔记-QScopedPointer解析及实例