LLDB(Low Lever Debug)命令结构
<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]
其中:
(命令)和 (子命令):LLDB调试命令的名称。命令和子命令按层级结构来排列:一个命令对象为跟随其的子命令对象创建一个上下文,子命令又为其子命令创建一个上下文,依此类推。 :我们想在前面的命令序列的上下文中执行的一些操作。 :行为修改器(action modifiers)。通常带有一些值。 :根据使用的命令的上下文来表示各种不同的东西。
设置断点
- breakpoint
$ breakpoint set -n [方法字符串]
例如:
$ breakpoint set -n "viewDidLoad"
`其中 -n 是 --name缩写`
- 显示当前断点
$ breakpoint list
- 禁用
$ breakpoint disable [编号]
- 启用
$ breakpoint enable [编号]
- 删除(只能按组删除,不能删除组中的某个)
$ breakpoint delete 【编号】
- 根据selector方法设置断点
$ breakpoint set —-selector [方法]
例如:
$ breakpoint set --selector dealloc
- 根据某个文件中的selector方法设置断点
$ breakpoint set —file [文件] —-selector [方法]
- 遍历项目中所有包含 testFunc 字符串的方法并设置断点
$ breakpoint set -r [方法字符串]
例如:
$ breakpoint set -r "testFunc"
流程控制
- 继续执行
$ c continue
- 单步运行,将子函数当做整体一步执行
$ n next
- 单步运行,遇到子函数会进去
$ s
- 按住
ctrl
汇编级别
$ ni
$ si
expresion
执行代码,例如当你需要改变一些东西,但是因为某种原因不能编译
$ expresion [代码]
例:
$ expression self.view.backgroundColor = [UIColor redColor];
换行ctrl
+enter
调用栈 bt
Show the current thread's call stack.
- 显示调用栈
$ bt
- 上一个方法的调用者
$ up
- 下一个方法的调用者
$ down
- 调到指定调用者
$ frame select [bt 显示的frame 编号]
watchpoint
内存断点,断点对象属性,类似kvo
根据变量名称
$ watchpoint set variable [self->name]
根据内存地址
$ watchpoint set expresion [内存地址]
breakpoint command
- 断点触发 指令(触发时执行指令添加)
$ break command add [编号]
例如:
(lldb) breakpoint command add 5.1
Enter your debugger command(s). Type 'DONE' to end.
>
- 查看
$ break command list [编号]
- 删除
$ break command delete [编号]
target stop-hook
每次stop的时候去执行一些命令,只对breakpoint,watchpoint有效
//每次stop执行frame variable
$ target stop-hook add -o "frame variable"
$ target stop-hook list
$ target stop-hook delete
frame
- Print out a list of all variables in the current frame
$ frame variable
- Need to know where you are?
$ frame info
thread
- 代码回滚,之后代码将不会执行
$ thread return
.lldbinit 文件配置
目录 /Users/caolongjian/.lldbinit
lldb每次启动都会调用,用于导入配置文件
其他常用
- 数组越界崩溃信息查看
$ image lookup -a [地址0x]
- 快速查看类
$ image lookup -t [类 Person]
- List current executable and dependent shared library images.
$ image list
help
获取帮助信息
help <command-name>
、help <command-name> <option>
$ help
$ help breakpoint