首页 > 代码库 > 怎样在xcode4.x里面使用Memory Leaks和Instruments

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

EXC_BAD_ACCESS错误,我通常建议:

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

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

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

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

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

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

 

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

  按照以下设置:

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

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

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

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



2.内存泄漏
最简单的办法就是:(快捷键:command+shift+b)
怎样在xcode4.x里面使用Memory <wbr>Leaks和Instruments

你会看到如下图:
怎样在xcode4.x里面使用Memory <wbr>Leaks和Instruments

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


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

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

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


选中Leaks,点击Profile,出现以下试图,如图:
怎样在xcode4.x里面使用Memory <wbr>Leaks和Instruments

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

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


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

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

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


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