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

Dou*_*ith 16 xcode objective-c ios lldb

假设我有一个变量,self.position每当它改变它的值时,我如何让Xcode中断(许多方法可以改变它).

Sta*_*ash 28

对于条件破坏:

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

在此输入图像描述

为了在每个场合打破价值的变化:

  1. 实现简单的setter(为了清洁代码而使用getter).
  2. 将断点添加到setter.

如果你想看看谁调用了setter - 只需查看堆栈跟踪中的下一行(在我的示例中为viewDidLoad):

在此输入图像描述

更新:

添加观察点

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


moo*_*239 6

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


gee*_*hic 5

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

或者你可以看一下Key-Value Observing.