LLDB调试方法

一、断点命令

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [转]浅谈LLDB调试器文章来源于:http://www.cocoachina.com/ios/20150126/...
    loveobjc阅读 7,493评论 2 6
  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 8,638评论 0 10
  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    CoderSC阅读 5,269评论 0 2
  • 我终于见到秀兰是第二天了,因为下午我不小心又睡着了。娘说刚出生的孩子都有点嗜睡,何况爹娘用羽毛和稻草垫的窝又暖又软...
    yanzikuaile燕子阅读 2,622评论 0 0
  • 宇文玥给改名叫星儿的楚乔讲纵、横和间的故事,并告诉她,眼睛看到的,不一定是真相,别人想让你看到多少,而你的能力又能...
    windy天意晚晴阅读 9,755评论 16 34

友情链接更多精彩内容