【问题标题】:Use "data breakpoint" on Xcode在 Xcode 上使用“数据断点”
【发布时间】:2014-11-19 17:32:26
【问题描述】:

在 Xcode 上,是否可以在属性值上设置断点? (例如 attr==nil 时停止)我知道它被设置为 nil,但我找不到在哪里和由谁。

【问题讨论】:

  • "我知道它被设置为 nil" 你真的吗?你怎么知道?您没有显示任何代码,所以我不相信。向我们展示这个“属性”。展示你是如何知道它变为 nil 的。我敢打赌,它从未设置为 nil - 相反,它以 nil 的形式存在并且从未设置为其他任何值。
  • 我知道它被设置为 nil 因为它被用作变量微积分的参数。当我的属性为 nil 时,此变量为 nil。问题是bug是随机的,有时我的属性设置为nil,有时不是,所以我想我可能有内存问题。

标签: objective-c xcode breakpoints


【解决方案1】:

打开 Xcode。

打开“断点导航器”(cmd+7)

点击左下角的+按钮

选择“添加符号断点..”

在“符号”中添加:[YourObject setYourAttribute:]

在“条件”中添加:yourAttribute == nil

yourAttribute 上的 YourObject 设置为 nil 时将调用此函数。然后,您可以查看跟踪以了解导致该调用的事件序列。我很确定这就是你要问的。

【讨论】:

  • 即使我确定它不是修改属性值的设置器,它是否有效?
  • @Kaki - 你不使用 setter 是否有特定原因?
  • 我已经调查并在所有应该设置我的属性的地方设置断点,但程序永远不会停止。我想也许该属性在某处被覆盖,但我找不到在哪里。
【解决方案2】:

如果您不使用 setter 来访问相关变量,则必须直接使用 LLDB(Xcode 的调试器)来执行您想要的操作。

在你感兴趣的变量在作用域内,并且在你的神秘作家编写之前,设置一个正常的断点。然后,访问调试器窗格,并输入以下命令:

watchpoint set variable -w write <variable-name>

其中&lt;variable-name&gt; 是您要查看的变量的名称——在这种情况下可能是attr。这将设置一个硬件观察点,该观察点将在您的变量更改时触发。

如果您想进一步探索 LLDB,请尝试调试器中的帮助命令。例如,您可以输入:

help watchpoint set variable

查看我推荐的命令的帮助条目。

编辑:显然你也可以set such watchpoints from the Xcode GUI。谁知道?

【讨论】:

    【解决方案3】:

    1) 在方法中设置断点
    2) 右键单击​​断点,选择“编辑断点”

    3) 添加条件attr == nil

    4) 在 Xcode 中单击某处。

    你准备好了,断点会在attr == nil时停止

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多