LLDB操作指令总结

LLDB全称轻量级的高性能调试器(Low Level Debugger),默认内置于Xcode中。能够很好的运用它会使我们的开发效率事半功倍。

语法规则

LLDB命令语法特性,可简写
print命令可简写成,p,pr,pri,prin。其他命令以此类推。

常用命令

print、po命令

他们可以输出,可以调用方法,可以写表达式。

  • print/p:打印变量
  • po: 打印值;如果是对象,打印其description的信息

语法

1
2
3
4
p 变量名
print 变量名
# 或
po 变量名

示例

1
2
3
4
(lldb) p object
(Person *) $1 = 0x00000001010c7810
(lldb) po object
<Person: 0x1010c7810>

expression

执行一个表达式,并将表达式返回的结果输出。
可以执行表达式来动态改变程序运行的轨迹。 假如我们在运行过程中,突然想把 self.view 颜色改成红色,看看效果。我们不必写下代码,重新run,只需暂停程序,用expression改变颜色,再刷新一下界面,就能看到效果。

语法

1
expression 变量名 = 数值

示例

1
expression $1 = 10

x

查看内存中读取一个地址的信息

语法

1
x/数量-格式-字节大小 内存地址

示例

1
2
3
(lldb) x 0x00000001010c7c70
0x1010c7c70: c9 3f 82 ea 01 00 00 01 00 00 00 00 00 00 00 00 .?..............
0x1010c7c80: 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 P...............
  • 格式
    • x:16进制;
    • f:浮点数;
    • d:十进制
  • 字节大小
    • b - byte 1字节
    • h - half word 2字节
    • w - word 4字节
    • giant word 8字节

memory

修改内存中的值
语法

1
memory write 内存地址 数值

示例

1
memory write 0x0000010 10

进阶指令

breakpoint

列出部分或者所有的断点

语法

1
2
3
breakpoint list
或者
br l

参数

1
2
3
4
5
6
# 查看某一组的信息
breakpoint list 断点组id
# 显示断点信息格式化
breakpoint list -v
# 显示断点摘要
breakpoint list -b

给所有函数名为xxx的都设置断点

语法

1
2
3
breakpoint set –name c函数名/oc方法
br s -n 函数名
b 函数名

示例

1
2
3
4
5
6
# C
breakpoint set -n "main"
# OC
breakpoint set -n "-[ViewController viewDidLoad:]"
# OC 同时设置多个方法
breakpoint set -n "-[ViewController playGame:]" -n "-[ViewController pauseGame:]" -n "-[ViewController continueGame:]"

给某个文件的行设置断点

语法

1
2
3
breakpoint set –file 文件名 –line 行号
br s -f 文件名 -l 行号
b 文件名:行号

给某个文件的方法设置断点

语法

1
2
breakpoint set --file 文件名 --selector 方法名
br s -f 文件名 -s 方法名

删除断点某一组

语法

1
2
breakpoint delete 断点组id
br del 断点组id

显示调用栈

语法

1
bt