- x person : 读当前对象(person)的内存情况
- x/4gx person : 四段格式化读当前对象(person)的内存情况
流程控制
- c(continus) : 继续
- n(next) : 下一步(单步)
- s(step) : 进入
- f(finish) : 跳出
断点设置
- breakpoint set -n <函数名称> : 在函数名称的地方下断点
- breakpoint set -n “-[viewController touchBegain]” -n “-[viewController test]” : 这样可以将这几个断点设置为一组断点(如果只写一个,就是单独给这一个函数名下断点,并且他自己一组)
- breakpoint set -r <函数名称> : 只要是包含函数名称的方法都会下断点(整个项目中)
- breakpoint set --selctor <函数名称> : 只是这个函数名称的方法会下断点(整个项目中)
- breakpoint set --file <文件名称> --selctor <函数名称> : 在某个文件下,只是这个函数名称的方法会下断点
- breakpoint delete : 移除所有断点
- breakpoint list : 查看所有断点
- breakpoint disable 2 : 暂停第二组的所有断点
- breakpoint disable 2.1 : 暂停第二组里面的第一个断点
- breakpoint enable 2 : 启用第二组的断点
- b -a 0xffa : 给这个地址下一个断点
代码执行
- p(expression) self : 这是一个执行表达式,执行self,可以执行OC代码
注意但是如果想要对一个变量对象执行代码,需要加上$符号(p UIViewController $v = self.viewController
p $v.backgroundColor = [UIColor redColor]
)这个样子就可以给当前控制器的背景设置颜色
打印
- po <对象名称> : 打印对象(不过是调用了description方法),但是需要注意,如果po的对象是一个double类型,这个时候是po不出来的,因为他的description方法本来就打印不出来,这个时候需要e -f f – 0x…
- p/t 2 : 二进制打印,这里举例就是二进制打印数字2
- p/c 2 : 字符打印,这里举例就是字符打印数字2
函数堆栈
- bt : 查看堆栈信息
- up : 进入下一个frame
- down : 进入上一个frame
- frame select 12 : 进入指定frame
- frame variable : 查看当前断住方法的信息
- thread return : 代码回滚(直接跳出当前方法里面的代码,让他提前return)
内存断点(可以对某个对象的某个属性进行下断点)(当修改了这个属性的值,就会来到断点)(相当于KVO监听属性值的改变)
- watchpoint set variable p1->_name : 对p1对对象的name属性下断点
- watchpoint delete : 移除所有断点
- watchpoint list : 查看所有断点
添加指令
- break command add 3 <回车> 在下面添加指令
break command add 3
Enter your debugger command(s).Type ‘DONE’ to end.
frame variable
DONE
上面的意思就是给第三组断点添加指令,只要是断住了第三组的断点,就会执行frame variable这个指令
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXOnN3R3-1646266832308)(evernotecid://6D5FC5B5-BD49-4B4B-BFFA-512349E82058/appyinxiangcom/26192998/ENResource/p73)]
- target stop-hook add -o “frame variable” : 只要是断点触发,就会执行引号内的指令
- target stop-hook list : 查看所有的stop-hook
- target stop-hook delete 2 / undisplay 2 : 删除第二组的stop-hook