LLDB调试
2020-04-23 本文已影响0人
Mg明明就是你
-
调试命令
http://blog.csdn.net/quanqinyang/article/details/51321338
1、expression -o - - self
1) 执行某个表达式。 我们在代码运行过程中,可以通过执行某个表达式来动态改变程序运行的轨迹。 假如我们在运行过程中,突然想把self.view颜色改成红色,看看效果。我们不必写下代码,重新run,只需暂停程序,用expression改变颜色,再刷新一下界面,就能看到效果
-
// 改变颜色
-
// 刷新界面
-
二、p & print & call
-
表面上看起来他们可能有不一样的地方,实际都是执行某个表达式(变量也当做表达式),将执行的结果输出到控制台上。所以你可以用p调用某个方法,也可以用call打印东西 e.g: 下面代码效果相同:
-
根据唯一匹配原则,如果你没有自己添加特殊的命令别名。e也可以表示expression的意思。原始命令默认没有命令选项,所以e也能带给你同样的效果.
- 如果想了解,在LLDB控制台上输入:help expression即可查到expression所有的信息
-
-
三、thread之thread backtrace & bt
- 有时候我们想要了解线程堆栈信息,可以使用thread backtrace thread backtrace作用是将线程的堆栈打印出来。我们来看看他的语法
实际上这些命令选项我们一般不需要使用。
e.g: 当发生crash的时候,我们可以使用thread backtrace查看堆栈调用
我们可以看到crash发生在-[ViewController viewDidLoad]中的第23行,只需检查这行代码是不是干了什么非法的事儿就可以了。LLDB还为backtrace专门定义了一个别名:bt
-
四、c & n & s & finish
-
一般在调试程序的时候,我们经常用到下面这4个按钮:用触摸板的孩子们可能会觉得点击这4个按钮比较费劲。其实LLDB命令也可以完成上面的操作,而且如果不输入命令,直接按Enter键,LLDB会自动执行上次的命令。按一下Enter就能达到我们想要的效果,有木有顿时感觉逼格满满的!!!
-
-
五、frame variable
-
平时Debug的时候我们经常做的事就是查看变量的值,通过frame variable命令,可以打印出当前frame的所有变量
可以看到,他将self,_cmd,ret,a等本地变量都打印了出来
-