iOS 调试及内存分析基本技巧

  1. 在运行过程中,如果出现EXC_BAD_ACCESS 异常,往往提示的信息很少或者没有提示,启用NSZombieEnabled后在控制台能打印出更多的提示信息,便于debug,请注意,僵尸模式下的调试工作只能在模拟器中实现,我们无法在物理设备上完成这一诊断流程。


    iOS 调试及内存分析基本技巧_第1张图片
    启用僵尸对象.jpg
  2. 异常断点,一般程序crash时Xcode一般会定位到main函数中,得不到详细的crash信息,打上异常断点后就极大可能定位到程序的crash处,利于debug。


    iOS 调试及内存分析基本技巧_第2张图片
    {异常断点.jpg
  3. 一般来说,在创建工程的时候,应该在Build Settings启用Analyze During 'Build',这样每次编译时都会自动静态分析。这样的话,写完一小段代码之后,就马上知道是否存在内存泄露或其他bug问题,并且可以修bugs。当然你也可以直接长安运行程序按钮,在弹出框中选择analyze,也可以进行静态分析。


    iOS 调试及内存分析基本技巧_第3张图片
    启动静态分析1.jpg

    静态分析2.jpg
  4. 如果你想在运行的时候查看APP是否存在内存泄露,你可以使用Xcode上instruments工具上的Leaks模块进行内存分析。但是有些内存泄露是很难检查出来,有时只有通过手动覆盖dealloc方法,看它最终有没有调用。
    长按运行按钮,在弹出框中选择profile会自动弹出Instruments程序,选择leaks模块进入leaks图所示界面,此时左上角第二个红框的内容会自动填充,其他的按框操作,然后点击左上角第一个框的红色圆点按钮开始检测APP内存,这时会在模拟器(或真机上,如果你的target是真机的话)上启动程序,然后操作你的程序,观察leaks一行有没有出现红色的类似于田字的叉,如果有说明内存泄露了,点击红叉,在下面callTree中查看具体内存泄露的地方,双击便可定位到泄露内存的代码的地方,如果你觉得在控制台不好改程序,可以点击右上角的xcode标识,就会在xcode中定位到对应的代码。


    iOS 调试及内存分析基本技巧_第4张图片
    Instruments.jpg

    iOS 调试及内存分析基本技巧_第5张图片
    leaks.jpg

你可能感兴趣的:(iOS 调试及内存分析基本技巧)