-
expr 指令
可以在调试时动态执行指定表达式,并将结果打印出来
image.png
-
po 指令, 打印值
image.png
-
p 指令, 打印详细信息
image.png
image.png
在 LLDB 中有两个常见的打印指令 p 与 po。
1、p 通常用于打印基本数据类型的值。这个指令会默认生出一个临时变量,如$1,学习过 Shell 的小伙伴看到这个应该很激动。
2、po 打印变量的内容,如果是对象,其打印的内容由 -debugDescription 决定。
-
bt 指令, 返回所有的调用栈, 形如:
image.png
操作内存指令
对内存的操作,无非就是读写操作。
- 修改内存的值:
memory write 内存地址 数值
如:memory write 0x913a4eeaa28cbd45 @"name"
- 读取内存的操作
memory read/数量 _ 格式 _ 字节数 内存地址
或者
x/数量 _ 格式 _ 字节数 内存地址
image.png
image.png
格式
x :代表16进制
f :代表浮点数
d :代表10进制
字节大小
b :byte 代表1个字节
h :half word 代表2个字节
w :word 代表4个字节
g :giant word 代表8个字节比如:
memory read/4wx 0x913a4eeaa28cbd45
memory read/4wd 0x913a4eeaa28cbd45
expr | expr 表达式 | 可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。 | |
po | po 表达式 | 与expr类似,打印对象,会调用对象description方法。是print-object的简写 | |
p | p表达式 | 也是打印命令,相比po打印的更加详细,是 print 的简写 | |
bt | bt [all] | 打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈 | |
br | br l | 是breakpoint list的简写 | |
process continue l | process continue | 简写:c | |
thread step-in l | thread step-in l | 简写:s | |
thread step-inst l | thread step-inst l | 简写:si | |
thread step-over l | thread step-over l | 简写:n | |
thread step-over-inst l | thread step-over-inst l | 简写:ni | |
thread step-out l | thread step-out l | 简写:f | |
thread list | thread list | 简写:th l |
b:查看当前所有断点 c:继续 r:重新运行 n:下一步 p:打印 s:单步 po:打印对象