LLDB指令格式:
<command> [<subcommand> [<subcommand>...]] <action> [-options [option- value]] [argument [argument...]]
<command>
: 命令
[<subcommand> [<subcommand>...]]
:子命令
<action>
:命令操作
[-options [option- value]]
: 命令选项
[argument [argument...]]
:命令参数
LLDB指令格式中[](中括号)
内的指令可以没有
比如给test
函数设置断点
//breakpoint : 命令
//set : 子命令(或者说是动作action)
// -n : name,函数名
// test : 参数
breakpoint set -n test
image.png
help指令
查看指令用法:
help breakpoint
help breakpoint set
expression指令
执行一个表达式
expression
:命令选项
--
:命令选项结束符,表示所有的命令选项已经设置完毕,如果没有命令选项,--
可以省略
:
需要执行的表达式
expression self.view.backgroundColor = [UIColor redColor]
过掉23行的断点就可以看到lldb
指令已经生效
p
po
print
call
这几个指令某种情况下是同义指令,没有区别.image.png
注意区分如下指令:
p arr
p -O -- arr
expression arr
expression -O -- arr
与po arr
同义 image.png
image.png
如上所示expression -O -- arr
指令想当于NSLog(@"%@")
方式打印对象.即执行该对象的description
方法.
主要的两个指令:
p:后面可以接表达式,方法调用等
po:后面可以打印对象
thread backtrace指令
打印线程的堆栈信息和指令bt
的效果相同
thread return [<expr>]
:让函数直接返回某个值,不会执行断点后面的代码
frame variable[variable-name]
:打印当前栈帧的变量
thread continue
|continue
| c
:程序继续运行
thread step-over
|next
| n
单步运行,把子函数当做整体异步执行
thread step-in
step
s
:单步运行,遇到子函数会进入子函数
thread step-out
finish
:直接执行完当前函数的所有代码,返回到上一个函数
si
ni
和s
n
类似:
s
n
是源码级别
si
ni
是汇编指令级别
网友评论