一、断点命令
1、设置断点,现用断点卡住程序,然后在输入
breakpoint set --file 文件名 --line 行数
br s -f 文件名 -l 行数
b 文件名:行数
上面三种方式均可设置文件行断点
设置所以方法断点:
breakpoint set --selector 方法名
br s -S 方法名
以上两种方式均可
2、查看断点:
breakpoint list
br l
会出来一个断点详细信息,每个断点后面都有关于断点的描述,
使用breakpoint set设置的断点是不显示在导航面板中的
3、删除断点
breakpoint delete 断点编号
br del 断点编号
4、单步进入
thread step-in
step
s
5、单步跳过
thread step-over
next
n
6、继续运行
thread continue
continue
c
每个功能均有多个命令可以实现,依次为简写,同时这些命令也均可以通过工具栏实现
二、观察点命令
观察点命令是在程序中对于某个要观察的变量设置一个观察点,当这个变量变化的时候程序就会挂起,与断点很相似,触发条件不同而已
1、设置观察点
watchpoint set variable 变量名
wa s v b
2、查看观察点
watchpoint list
watch l
3、删除观察点
watchpoint delete 观察点编号(list里面的编号)
三、查看变量和计算表达式命令
1、查看当前栈帧的所有本地变量
frame variable
fr v
查看某个具体变量
frame variable 变量名
fr v 变量名
p 变量名
2、查看全局变量,只能查到在当前栈中使用到全局变量
target variable
ta v
查看某个具体变量
target variable 变量名
ta v 变量名
3、计算基本数据类型表达式
expr (int)i*i
expr i*i
print i*i
p i*i
4、计算对象数据类型表达式
expr -o --((Note *)self.listData[0]).date
po ((Note *)self.listData[0])date
从数组self.listData中取得第一个元素,做一下强制类型转换,然后调用date属性,然后会输出该属性的值
三、断言
NSAssert(NO,@"duan'yan");第一个参数数布尔表达式,第二个是描述信息,参数后面的是格式化desc描述信息的,当布尔表达式为NO时会抛出异常,并且输出抛出异常的位置,例如:*** Assertion failure in -[ViewController clickBtn], /Users/zhaojing/Desktop/测试项目集合/BYTestSDWebImage/BYTestSDWebImage/ViewController.m:43
四、异常栈报告分析
1、当异常发生时,程序会抛出异常,会输出到异常窗口,窗口中的****First throw call stack:后面的内容就是异常栈信息。
2、每条栈信息构成:序列号 + 框架 + 方法所属类名 + 方法名 + 调用方法编译之后的代码偏移量
前面序列号 :是栈输出序列号,序列号越大代表越早被调用
序列号后面是调用方法所属框架
在后面就是调用方法所属的类名
调用的方法名
调用方法编译后的代码偏移量,很多人以为是行号,其实不是,对我们基本没用
栈信息是要从下往上看,程序运行的过程是从下面的方法调用项目的方法
在程序运行过程中,栈信息可能很长,我们不需要每一行都去看,只需关注自己的工程代码,先找到自己工程中的方法,找到那条语句看看是不是有问题,前提是别人提供给我们的框架是正确的。
五、查看设备上的应用程序
选择window----->Devices进入到设备页面,左边面板中选择设备,右边会显示设备的相关信息,
在Installed Apps中显示的是已经安装到设备上的应用,在这可以通过+和-安装和删除设备,在旁边设置按钮Show Container菜单是用于查看应用的沙箱目录(但是我测试没看到,只能下载来看)
Download Container 可以讲设备中的沙箱目录复制到当前的开发电脑上来,右击该文件,选择显示包内容,可以看到沙箱里面的内容
点击View Device Logs按钮,可以贷款设备日志界面,可以查看设备的信息,右栏会出现设备日志信息,左栏包括进程、类型和日志时间,如果是crash,代表应用崩溃,点击某个日志信息,右栏会显示详细的日志描述信息,其中包括跟踪异常栈的信息输出。