美文网首页
LLDB调试方法

LLDB调试方法

作者: 海浪萌物 | 来源:发表于2017-05-05 15:13 被阅读182次

    一、断点命令

    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,代表应用崩溃,点击某个日志信息,右栏会显示详细的日志描述信息,其中包括跟踪异常栈的信息输出。

    相关文章

      网友评论

          本文标题:LLDB调试方法

          本文链接:https://www.haomeiwen.com/subject/epcdjttx.html