菜鸡的成长过程,如有错误,实属正常。
lldb使用
print打印内容可以缩写成p,也可以给变量赋值,例如p $0=11,因为print也相当于上expression —
expression 改变某个变量的值,可以缩写成e,例如 e $0=20
po打印复杂变量,以object方式打印,相当于 e -o —
p/x以16进制的格式打印,例如p/x 16
p/t以2进制格式打印
p/c以字符格式打印
p/s以字符串格式打印
continue取消程序的暂停,可以缩写成c
next如果当前代码上函数,不会跳进函数,但是会执行这个函数并继续,缩写成n
step如果当前代码不是函数,效果和next一样,如果是函数,则进入函数,缩写成s
frame info查看当前代码的行数和源码文件
thread return立即返回跳出当前栈,后面的部分将不会执行,可以伪造返回值
breakpoint list查看所有断点,也可以缩写成br li
breakpoint disable关闭某个断点,根据查询到的序号,缩写是br dis
breakpoint delete删除某个断点,缩写是br del
breakpoint set设置断点例如breakpoint set -f main.m -l 16,可以缩写成br
b也可以断点,但和br不是同一个命令,只是效果差不多。b main.m:17
b isSuccess也可以根据函数名创建断点,仅限给c函数断点
br s -F isSuccessbr也同样可以,仅限给c函数断点
br -F “-[NSArray objectAtIndex:]”也可以object-c的方式来断点
b -[NSArray objectAtIndex:]b命令的object方式断点
x查看内存,x/4c $str,查看数组中的4个字节,x/1w ‘$str+3’ 去掉3个字节
chisel使用
常用的方法
pviews打印当前视图结构
pvc打印控制器信息
visualize将指定控件在mac以图片方式展示,后面参数用控件的地址,例如visualize 0x10031b2f0
fv查找指定的控件,例如fv UIButton
fvc 查找指定的控制器,例如fv FirstViewController
show/hide显示指定控件和隐藏指定控件,参数也是用地址
mask/unmask给指定控件加一个透明的层来锁定控件位置,和删除透明层
border/unborder给指定控件加一个边框来锁定控件位置,删除边框,注意边框是红色的,如果想更改颜色,可以设置下颜色,例如border —color=black 0x100221ac0
caflush刷新渲染,相当于重新绘制
bmessage对指定实例的方法设置符号断点,参数是字符串,里面是object-c,例如bmessage “-[FirstViewController buttonClick:] ”
wivar 在对象实例变量上设置观察点,相当于监视
pinternals打印view的内部详细信息
pclass打印view的层级信息
pdata对编码过的数据打印,等同于-[NSString initWithData:encoding:]
pkp通过-valueForKeyPath:打印key path对应的值。例如pkp self.view
最后分享贴两个看了讲的很好的,一个是主要将lldb的,另一个是chisel使用的。
https://objccn.io/issue-19-2/
https://blog.csdn.net/sun2728/article/details/72930319
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-8-5 15:21
被misskings编辑
,原因: