在底层摸索过程,我们经常需要使用到一些打印命令,来输出我们对象的指针及内存情况,这时候就需要熟练使用lldb命令。
lldb命令如下:
bt:打印线程的堆栈信息
bt all:打印所有线程的堆栈信息
po:打印对象,与p类似。po只会输出对应的值,而p则会输出值的类型以及命令结果
expr:expression简写,调试时,动态执行赋值表达式,同时打印出结果。
call:动态调用函数
image:image list可以查看某一个地址对应的代码位置。除了 image list 还有 image add、image lookup等命令,当遇到crash 时,查看线程栈,只能看到栈帧的地址,使用 image lookup –address 地址 可以方便的定位到这个地址对应的代码行。
x:查看地址,例如:x objc
x/4gx:打印4个16进制地址。x/4gx objc
这个命令是组合命令,注解一下:
几组数据(4)
数字4代表输出4组数据
字节大小(g)
- b :byte 代表1个字节
- h :half word 代表2个字节
- w :word 代表4个字节
- g :giant word 代表8个字节
输出格式(x)
- x :代表16进制
- f :代表浮点数
- d :代表10进制
- u : 无符号十进制整型
- o:八进制
- t:二进制
- a:16进制 与x的区别是,多打印了地址内容出来(自己测试的,如解释不对,请指正)
- i:指令地址
- c:字符格式
再补充一下:
- p/t二进制打印
- p/0八进制打印
- p/x十六进制打印