假设我有一个变量,self.position
我如何让 Xcode 在它改变它的值时中断(许多方法可以改变它)。
问问题
14823 次
4 回答
28
对于条件中断:
- Cmd+option 点击断点
- 添加一个中断条件,如下所示:
对于每次中断,值都已更改:
- 实现微不足道的 setter(和 getter 为了干净的代码)。
- 向设置器添加断点。
如果您想查看谁调用了 setter - 只需查看堆栈跟踪中的下一行(在我的示例中为 viewDidLoad):
更新:
添加观察点
- 在任何地方中断,以便
(lldb)
在控制台中显示提示 - 输入
watchpoint set variable _position
(将 _position 替换为您要观看的 iVar) - 记下为新创建的观察点分配的观察点编号。
- 修改条件中断的观察点:
watchpoint modify -c "_position < 0.5" 1
其中引号中的表达式是条件,末尾的数字是您在#3中记下的观察点编号。 - 继续运行。只要值与条件匹配,您就会中断,并且您将能够检查堆栈帧以了解调用的来源。
于 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 回答