iOSiOS基础扩展iOS 项目技巧

iOS 开发调试利器 - LLDB命令

2016-12-19  本文已影响3214人  大王叫我来巡山_Cong
请叫我序猿.jpg

lldb的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xcode运行程序,实际走的都是lldb。熟练使用lldb,可以让你debug事半功倍

查看当前断点列表

  ![查看当前断点列表.png](http:https://img.haomeiwen.com/i1622166/558a9f2f240b583c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

红色框框里面表示断点的行数。可以看出来现在也就只有2个断点,一个在73行,一个在80行。
- 添加一个95行的断点
breakpoint set -f ViewController.m -l 95
-f 后面的是文件名 -l 后面是行数
- 再次查看当前断点列表

  ![再次查看断点列表.png](http:https://img.haomeiwen.com/i1622166/5fe514ad42966a48.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 删除 80 行的断点
      breakpoint clear -f ViewController.m -l 80
- 结果列表中就没有 80 行的断点信息了。
![最后的断点列表.png](http:https://img.haomeiwen.com/i1622166/790ba6f138a700a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Watchpoint created: Watchpoint 3: addr = 0x7fff54ed67c4 size = 4 state = enabled type = rw
    declare @ '/Users/XXX/Desktop/Demozz/Demozz/ViewController.m:89'
    watchpoint spec = 'a'
    new value: 0

比上面的输出相比,多了以下几点改变
1、监视点的代号、内存地址、大小、类型都变了。
2、增加了declare(状态声明)
3、增加了监视点的规范
4、增加了输出这个检查的变量的值。
那我们打印一些监视点的列表
watchpoint list
则输出

Number of supported hardware watchpoints: 4
Current watchpoints:
Watchpoint 1: addr = 0x00000000 size = 8 state = enabled type = w
Watchpoint 3: addr = 0x7fff54ed67c4 size = 4 state = enabled type = rw
    declare @ '/Users/miya-shaocong/Desktop/Demozz/Demozz/ViewController.m:89'
    watchpoint spec = 'a'
    new value: 0

如果我们想删除一个监视点,只需要把代号给提交过去就好了。
watchpoint delete 1
想删除全部的话,就这样
watchpoint delete
它会让你确认
About to delete all watchpoints, do you want to do that?: [Y/n]
然后你输入 Y 确定就好了。

(lldb) po b
100
(lldb) po self.view.frame
(origin = (x = 0, y = 0), size = (width = 375, height = 667))

你还可以尝试输出其他(你想要看的东西)。

(lldb) print a
(int) $5 = 0
(lldb) print b
(int) $6 = 100
(lldb) print self.view
(UIView *) $7 = 0x00007fd183d04cf0
(lldb) print self.view.frame
(CGRect) $8 = (origin = (x = 0, y = 0), size = (width = 375, height = 667))

$X 这种是命令结果的引用名,我们可以用于任何其他表达式或者接收参数的命令。
比如:

(lldb) print $5 + 109
(int) $9 = 109
// ---
(lldb) po $8
(origin = (x = 0, y = 0), size = (width = 375, height = 667))

好了,我要分享的关于 LLDB 的命令就到这里了,如果想要学习其他的命令,可以通过 help 来自己学习。如果您觉得这篇文章对你有用,能否给个喜欢?

上一篇 下一篇

猜你喜欢

热点阅读