Xcode调试总结

来源:互联网 发布:淘宝卖活体 编辑:程序博客网 时间:2024/06/05 02:25

1.Nslog  

   效率低下,只适合log error

2.LLDB常用命令(LLDB命令大全)

  po:打印对象数据。 如:po [[self view] recursiveDescription]打印self.view包涵的子视图

  p:打印一些基础数据类型数据

  call:执行一段代码(面对又返回的调用,也可以使用po或者p命令)  如call [self.view setBackgroundColor:[UIColor redColor]],继续运行程序,会看到背景色变化

  expr:动态执行指定表达式,常用于在调试过程中修改运行中变量的值。

  bt:打印当前线程堆栈信息,如果要打印所以线程堆栈信息,使用:bt all即可。

  image:命令可用于寻址,有多个组合命令。比较实用的用法是用于寻找栈地址对应的代码位置:image lookup --address 0x0000000104c25550 ,找到崩溃地址 0x0000000104c25550对应在代码中的位置

3.BreakPoint   

 1)、异常断点 

  异常断点可以快速定位不满足特定条件的异常,比如常见的数组越界,这时候很难通过异常信息定位到错误所在位置。

  2)、符号断点

  符号断点的创建方式和异常断点一样一样的,在符号断点中可以指定要中断执行的方法。

  3)、条件断点

  打上断点之后,对断点进行编辑,设置相应过滤条件,使用断点的Action可以Log message


4、开启僵尸对象 

       开启Zombie模式之后会导致内存上升,因为所以已经被释放(引用计数为0)的对象被僵尸对象取代,并未真的释放掉。这个时候再给僵尸对象发送消息,就会抛出异常,并打印出异常信息,你可以轻松的找到错误代码位置,结束Zombies时会释放。它的主要功能是检测野指针调用。

5、Address Sanitizer(地址消毒剂)

       在Xcode7之后新增了AddressSanitizer工具,为我们调试EXC_BAD_ACCESS错误提供了便利。当程序创建变量分配一段内存时,将此内存后面的一段内存也冻结住,标识为中毒内存。程序访问到中毒内存时(访问越界),立即中断程序,抛出异常并打印异常信息。你可以根据中断位置及输出的Log信息来解决错误。当然,如果变量已经释放了,它所占用的内存也会被标识为中毒内存,这个时候访问这片内存空间同样会抛出异常。


6、界面调试

  1)、Show View Frames

   调试中,可以清楚的看到界面上元素的frame,主要用于调试界面位置布局调试

  2)、Capture View Hierarchy

   通过Capture View Hierarchy可以在Xcode中清清楚楚的看到当前调试的页面的view层次,作为视图层次布局调试很好的工具


0 0
原创粉丝点击