JHHK

欢迎来到我的个人网站
行者常至 为者常成

LLDB

目录

格式相关

1、格式
x: 16进制

d: 10进制

f: 浮点

2、字节大小
b: Byte 1字节

h: half word 2字节

w: word 4字节

g: giant word 8字节

3、举例
memory read/4xg 内存地址
或者
x/4xg 内存地址
读取内存地址中的内容 分4组打印 格式是16进制 每组8个字节

memory read/s 内存地址
以字符串形式读取内存

寄存器相关

1、读取寄存器的值
register read

2、读取某一个寄存器
register read x0

2、修改寄存器的值
register write x0 0x10

3、打印
po $x0
打印方法的调用者

x/s $x1
打印方法名

po $x2
打印参数

po $x3
打印参数

po $x4
打印参数

内存相关

1、读取内存的值
memory read 0x1000027fa
x 0x1000027fa

2、特定格式读取内存值
memory read/4gx 0x1000027fa
4组 8字节 16进制

memory read/2wd 0x1000027fa
2组 4字节 10进制

3、修改内存的值
memory write 0x1000027fa

express p po 命令

1、说明
oc里所有的对象都是用指针表示的,打印出来的是对象的指针,而不是对象本身,可以采用 -o 来打印对象本身  为了更加方便的时候,LLDB为 “expression -o —”  定了一个别名 :po

2、p:打印内存中的值

可以打印基本类型

a = 10 

(lldb) p a
(int) $9 = 10

也可以打印对象

UIView * testView = [[UIView alloc] init];

(lldb) p testView
(UIView *) $10 = 0x0000000134eac910

3、po:打印内存中的值(如果是基本类型输出内存中存储的值 如果是对象 输出对象的description描述 )

打印基本类型

a = 10;

(lldb) po a
10

打印对象

UIView * testView = [[UIView alloc] init];

(lldb) po testView
<UIView: 0x134eac910; frame = (0 0; 100 100); layer = <CALayer: 0x134eaca80>>

4、expression

(lldb) expression testView.frame = CGRectMake(0, 0, 100, 100);
(CGRect) $5 = (origin = (x = 0, y = 0), size = (width = 100, height = 100))

5、递归打印子控件

po [self.view recursiveDescription]

6、通过函数地址打印函数信息

p (IMP)0x000231

单步调试指令

1、源码级别的单步调试
n 一步一步调试 遇见函数不会进入
s 一步一步调试 遇见函数会进入

2、汇编级别的单步调试
ni 一步一步调试 遇见函数不会进入
si 一步一步调试 遇见函数会进入

3、直接执行完当前函数的所有代码,返回到上一个函数(遇到断点会卡主)
finish

4、退出lldb调试
quit

5、bt
打印函数调用栈


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.