内存断点(watchpoint) : 在内存数据发生改变的时候触发

@property (assign, nonatomic) int age;

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    self.age += 5;
}
watchpoint set variable _age

demo

注意:如果有age有实现自己的setter方法,则会断点在setter方法里 点击屏幕,控制台输出

Watchpoint 1 hit:
old value: 0
new value: 5
watchpoint list
watchpoint disable 断点编号

watchpoint enable 断点编号

watchpoint delete 断点编号
watchpoint command add 断点编号

watchpoint command list 断点编号

watchpoint command list delete 断点编号

类似

breakpoint command add 断点编号
breakpoint command list  断点编号
breakpoint command delete  断点编号

====================================== 添加断点

breakpoint set -n "[ViewController touchesBegan:withEvent:]"

函数

void test() {
    int a = 10;
    int b = 20;
    NSLog(@"%d",a + b);
}
breakpoint set -name "test"

可以不使用双引号

breakpoint set -name test
- (void)btnClickAction{
    NSLog(@"%s",__FUNCTION__);
}

给自定义的方法添加断点

breakpoint set -name btnClickAction

或者

breakpoint set -n "btnClickAction"

这样其实会给所有btnClickAction这个方法添加断点,如果只给当前文件的这个方法添加断点

breakpoint set -n "[ViewController btnClickAction]"

所以,一般添加断点,我们要指定调用对象

==========================================

一.如何给断点添加一系列的执行命令,等触发了断点,就会按顺序执行

先查看当前的断点列表

breakpoint list
breakpoint command add 断点编号

示例:

breakpoint command add 3.1

接着输入需要执行的一系列命令,如下

Enter your debugger command(s).  Type 'DONE' to end.
> p self._age
> expression self.view.backgroundColor = [UIColor redColor]
> DONE

查看当前command 设置的命令详情

breakpoint command list  断点编号

删除某个断点设置的命令

breakpoint command delete  断点编号

常用指令

列出所有断点,每个断点有自己的编号,这个编号是不会随着断点数量的变化而变化

breakpoint list

禁用断点

breakpoint disable 断点编号

启用断点

breakpoint enable 断点编号

删除断点

breakpoint delete 断点编号