LLDB调试

  • 调试命令

http://blog.csdn.net/quanqinyang/article/details/51321338

1、expression -o - - self

20160504173426991.png

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等本地变量都打印了出来

你可能感兴趣的:(LLDB调试)