今天正好有点空闲,学习了一些控制台的调试方法,如下
LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xcode运行程序,实际走的都是LLDB。
1.LLDB控制台平时会输出一些log信息。如果我们想输入命令调试,必须让程序进入暂停状态。让程序进入暂停状态的方式主要有2种: 断点: 在代码中设置一个断点,当程序运行到断点位置的时候,会进入stop状态 直接暂停,控制台上方有一个暂停按钮,上图红框已标出,点击即可暂停程序 LLDB语法
在使用LLDB之前,我们来先看看LLDB的语法,了解语法可以帮助我们清晰的使用LLDB:
一眼看上去可能比较迷茫,给大家解释一下:
<command>(命令)和<subcommand>(子命令):LLDB调试命令的名称。命令和子命令按层级结构来排列:一个命令对象为跟随其的子命令对象创建一个上下文,子命令又为其子命令创建一个上下文,依此类推。 <action>:执行命令的操作 <options>:命令选项 <arguement>:命令的参数 []:表示命令是可选的,可以有也可以没有 举个例子,假设我们给main方法设置一个断点,我们使用下面的命令:
breakpoint set -n main 这个命令对应到上面的语法就是:
command: breakpoint 表示断点命令 action: set 表示设置断点 option: -n 表示根据方法name设置断点 arguement: mian 表示方法名为mian
上面都可以不用看
这是从其他地方复制的介绍,下面是我自己开发常用的东西 1.po 我们知道,OC里所有的对象都是用指针表示的,所以一般打印的时候,打印出来的是对象的指针,而不是对象本身。如果我们想打印对象。我们需要使用命令选项:-O。为了更方便的使用,LLDB为expression -O --定义了一个别名:po
我一般就用来在断点中输出变量的值和地址,比如
▿ Optional<String>
- some : "这是字符串"</pre>
2.expression
expression的简写就是e。可以用expression来声明新的变量,也可以改变已有变量的值。我们看到e声明的都是符号
我一般用来修改一些变量,达到查看不同结果的效果比如
(lldb) e label.text = "修改后的字符串"
(lldb) e CATransaction.flush()
Simulator Screen Shot - iPhone 11 - 2021-10-20 at 11.19.46.png
2021年10月20日学到的技术,在合适的断点位置,在控制台中输入
(lldb) e view.backgroundColor = .red
(lldb) e CATransaction.flush()
然后点击继续往下走,放开断点,
Simulator Screen Shot - iPhone 11 - 2021-10-20 at 11.15.11.png还可以在断点中,右键点击断点,点击edit breakPoint,然后点击 add actions ,在action下面输入
e label.text = "第二次修改后的字符串"
截屏2021-10-20 11.22.18.png放开断点
Simulator Screen Shot - iPhone 11 - 2021-10-20 at 11.23.09.png暂时就这些
网友评论