一.LLDB(Low Lever Debug)
1.设置断点
$breakpoint set -n XXX(xxx为方法)
set 是子命令
-n 是选项 是--name 的缩写!
给test1设置断点 :breakpoint set -n test1
给三个方法同时设置断点
breakpoint set -n "-[ViewController save:]" -n "-[ViewController pauseGame:]" -n "-[ViewController continueGame:]"
*注意:简写形式 $b -n "-[ViewController touchesBegan:withEvent:]",通过地址下端的:$b -a x0xxxxxxx(函数地址)
或者 b hankTest4 (也是简写形式)
-(void)hankTest4{
NSLog(@"%s",__func__);
}
2. 查看断点列表
$breakpoint list
*注意:$break list(简写形式)
3.删除
$breakpoint delete 组号(删除某一组断点)
$breakpoint delete(删除所有断点)
4.禁用/启用
$breakpoint disable 组号 (禁用)(breakpoint disable 2:禁用第二组断点,breakpoint disable 2.1 :禁用第二组断点中的第一个断点)
*注意:break dis 组号 (简写形式)
$breakpoint enable 组号 (启用)
*注意:break en 组号 (简写形式)
5.查看lldb指令: $help
查看breakpoint指令: $help breakpoint
6.遍历整个项目中满足Game:这个字符的所有方法
$breakpoint set -r Game:
7.直接给某个方法设置断点
$breakpoint set --selector touchesBegan:withEvent:
8.给某个文件中的某个方法设置断点
$breakpoint set --file ViewController.m --selector touchesBegan:withEvent:
###流程控制
*继续执行
$ c (continue)
*单步运行,将子函数当做整体一步执行
$n (next)
*单步运行,遇到子函数会进去
$s
$ bt (查看栈信息)
###stop-hook
让你在每次stop的时候去执行一些命令,只对breadpoint(代码断点),watchpoint(内存断点
)
*注意:可在所有满足条件的断点处使用 ,设置一次给多个方法打印信息
###常用命令
*$image list
*$p
*$b -[xxx xxx](给方法设置断点:b -[ViewController hankTest4])
*$x (memory read)
*$register read 寄存器读
*$po
给某个方法设置,打印相关信息
真机时遇到异常信息
通过函数地址查看函数反汇编代码