ios调试(lldb)

来源:互联网 发布:快啊晒密软件 编辑:程序博客网 时间:2024/06/10 18:24

lldb命令的使用

p和po

==p:输出数量级的数值,带有类型,有如下几种写法:==

(lldb) p _idx
(CGFloat) $4 = 1.23

(lldb) p/s _idx
(CGFloat) $5 =

(lldb) p/x _idx
(CGFloat) $6 = 0x3ff3ae147ae147ae

(lldb) p/t _idx
(CGFloat) $7 = 0b0011111111110011101011100001010001111010111000010100011110101110

(lldb) p/a _idx
(CGFloat) $8 = 0x3ff3ae147ae147ae

==po:输出一个对象的description==

(lldb) po _idx
1.23

(lldb) po self.view
\

frame variable帧命令

打印当前frame下所有变量的值,也可以简写为:==fr v==

(lldb) frame variable
(ViewController *) self = 0x00007fb8dcf028a0
(SEL) _cmd = “viewDidLoad”
(UIView *) v = 0x00007fb8dcd0db20

expression命令

它是lldb中最重要的一个命令,用于执行一个表达式,并把表达式的结果输出

执行方法

(lldb) expression – [self test];
2017-11-02 14:01:38.344346+0800 tet[6800:1177830] 哈哈

修改代码

(lldb) expression – self.view.backgroundColor = [UIColor greenColor];
(UICachedDeviceRGBColor *) $15 = 0x000060800007d640
(lldb) expression – (void)[CATransaction flush];

当在lldb里面直接输入expression回车,即可输入代码块,当按两下回车时即可执行

(lldb) expression
Enter expressions, then terminate with an empty line to evaluate:
1 _idx = 2+3;
2 NSLog(@”%f”, _idx);
3
2017-11-02 14:12:41.919514+0800 tet[6800:1177830] 5.000000

breakpoint断点命令

设置断点

breakpoint set

指定文件、方法名设置断点
(lldb) breakpoint set -f ViewController.m -n viewDidLoad

指定文件、行数设置断点
(lldb) breakpoint set -f ViewController.m -l 38

查看删除断点

breakpoint list 查看断点
breakpoint delete 2 删除断点
breakpoint delete 删除所有断点
breakpoint disable 4 让断点失效
breakpoint enable 4 让断点生效

target命令

LLDB给target modules取了个别名image,所以这个命令我们又可以写成image lookup。

通过内存地址定位错误的文件夹及其位置

image lookup -a 0x000000010a1c3e36

根据方法名查找该方法所在文件的位置

image lookup -n didClick:

查看某个模型的所有信息:属性、变量

image lookup -t model