iOS-xcode内存泄露 检查静态/动态

静态:

在project-setting中找到 “Run Static Analyzer” 键,然后把值修改为“YES”.这样在编码的时候,xcode就可以自动为我们检查内存泄露了.

iOS-xcode内存泄露 检查静态/动态_第1张图片


动态:

Xcode 4.2找了半天,才找到Instruments在哪里:Product-》profile 



EXC_BAD_ACCESS 错误,我通常建议 :

  1.在可执行选项中设置NSZombieEnabled参数,这有时会帮缩小问题的范围;

  2.运行apple的内存检测工具, Leaks ,以便寻找内存问题;

  3设定一个断点,单步运行代码,直到你找到引起崩溃的位置;

  4.注释代码,直到不崩溃为止,然后再从后往前查找错误;

  现在让我们从第一条开始实验

    NSZombieEnabled选项对于崩溃毫无办法,所以你完全可以放弃抵抗。


 当你使用一个已经被销毁的对象,NSZombieEnabled会标志一个警告,所以NSZombieEnabled只是一个flag。这是一个良好的开端,因为大多数崩溃的原因都是使用了已经销毁的对象。

  按照以下设置:

iOS-xcode内存泄露 检查静态/动态_第2张图片

iOS-xcode内存泄露 检查静态/动态_第3张图片

点击OK, 重新运行app,随便操作下使程序崩溃。 查看下consolelog你就会看到类似如下信息:

2011-02-03 12:07:44.778 XXXX ***
-[XXXXX:]: message sent to deallocated instance ...







2.内存泄漏

最简单的办法就是:(快捷键:command+shift+b)
iOS-xcode内存泄露 检查静态/动态_第4张图片



你会看到如下图:

怎样在xcode4.x里面使用Memory <wbr><wbr>Leaks和Instruments



怎么修改,自己慢慢按提示一步一步改





不幸的是,你不能依靠以上方法找出一切问题。我们还得使用一个强大的自动化工具来帮助你检查程序是否有内存泄漏– the Leaks Instrument



接下来就是代开Leaks Instrument工具,如下图:



iOS-xcode内存泄露 检查静态/动态_第5张图片





选中Leaks,点击Profile,出现以下试图,如图:

iOS-xcode内存泄露 检查静态/动态_第6张图片



点击stop(红色的那个),设置调试参数:(选择Leaks,选择Call Tree, 选中如下图的的3个复选框),然后点击(Record)按钮 重启



iOS-xcode内存泄露 检查静态/动态_第7张图片





iOS-xcode内存泄露 检查静态/动态_第8张图片



,淡红色那条就代表内存泄漏了,下面两个不同的函数就表示存在内存泄漏的函数, 双击一个函数的名字,它会带你直接到存在内存泄露的这行代码。这可以给你一个很好的错误位置提示,如果你查看代码并加以思考,你应该能够找出问题所在并解决它。


iOS-xcode内存泄露 检查静态/动态_第9张图片





  所以,为什么不看看代码,并且看看你是否能找出问题所在并修正吗?一旦你作出修改,并且能够无错误提示的跑Leaks。如果通过,表示你完成了


你可能感兴趣的:(iOS-xcode内存泄露 检查静态/动态)