19

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

4

4 回答 4

28

对于条件中断:

  1. Cmd+option 点击​​断点
  2. 添加一个中断条件,如下所示:

在此处输入图像描述

对于每次中断,值都已更改:

  1. 实现微不足道的 setter(和 getter 为了干净的代码)。
  2. 向设置器添加断点。

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

在此处输入图像描述

更新:

添加观察点

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

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

于 2015-08-03T16:56:18.280 回答
5

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

或者你可以看看Key-Value Observing

于 2013-08-09T15:27:21.810 回答
2

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

于 2013-08-09T15:27:49.373 回答