如果类中的实例变量的值发生变化,如何触发断点?

时间:2013-08-09 15:23:09

标签: ios objective-c xcode lldb

假设我有一个变量self.position,如何在Xcode更改其值时使其断开(许多方法可能会改变它)。

4 个答案:

答案 0 :(得分:28)

对于条件破解:

  1. Cmd +选项单击断点
  2. 像这样添加休息条件:
  3. enter image description here

    每次都打破价值的变化:

    1. 实现琐碎的setter(为了清洁代码而使用getter)。
    2. 将断点添加到setter。
    3. 如果你想看看谁调用了setter - 只需查看堆栈跟踪中的下一行(在我的示例中为viewDidLoad):

      enter image description here

      <强>更新

      添加观察点

      1. 中断任意位置,以便(lldb)提示符出现在控制台中
      2. 键入watchpoint set variable _position(将_position替换为您要观看的iVar)
      3. 记下为新创建的观察点分配的观察点编号。
      4. 修改条件中断的观察点:watchpoint modify -c "_position < 0.5" 1其中引号中的表达式是条件,最后的数字是您在#3中记下的观察点编号。
      5. 继续跑步。只要值与条件匹配,您就会中断,并且您将能够检查堆栈帧以了解调用的来源。

答案 1 :(得分:6)

设置符号断点。转到断点导航器,单击+,单击“添加符号断点”。在第一个字段中,键入 - [YourSubclassNameHere setPosition:]“,添加您想要的任何其他设置,然后在对话框外单击。

答案 2 :(得分:5)

这样做的简单方法是右键单击监视窗口中的变量并选择监视变量选项。然后Xcode会在值发生变化时提醒您。

或者您可以查看Key-Value Observing

答案 3 :(得分:2)

您可以在设置变量时覆盖position的setter以获得断点。