美文网首页iOS精品
iOS性能优化:Instruments工具

iOS性能优化:Instruments工具

作者: townfish | 来源:发表于2016-09-13 18:15 被阅读48次

    一、使用Zombies动态分析内存中的僵尸对象

    EXC_BAD_ACCESS错误不像访问空指针一样容易定位,往往报错时很难查找到错误点,所以XCode在Instruments中提供了单独的Zombies工具来分析这类错误。

    使用Zombies分析的原理

    和使用 Instruments的其他工具一样,点击XCode的Product菜单Profile启动Instruments:

    可以看到Zombies工具下边的介绍,用于查找那些被过度释放的僵尸对象。

    Zombies工具的查找原理其实和设置NSZombieEnabled环境变量的调试方式是一样的,启动Zombies后在内部设置了NSZombieEnabled为True。

    启用了NSZombieEnabled的话,它会用一个僵尸来替换默认的dealloc实现,也就是在引用计数降到0时,该僵尸实现会将该对象转换成僵尸对象。僵尸对象的作用是在你向它发送消息时,就不会向之前那样Crash或者产生 一个难以理解的行为,而是放出一个错误消息,它会显示一段日志并自动跳入调试器, 因此我们就可以找到具体或者大概是哪个对象被错误的释放了。

    使用Zombies分析的步骤

    1、启动Instruments,选择Zombies;

    2、对之前产生EXC_BAD_ACCESS的测试用例重新运行,直到程序崩溃,如果发生EXC_BAD_ACCESS错误,会出现以下界面:

    3、通过滑动箭头来查看错误细节,例如可以看到该对象的内存操作过程,如malloc、autorelease、retain、release等操作;

    4、查看底部的详细历史,选择相应的行可以定位到相应的代码,找出产生错误的代码:

    基本上通过查看Zombies工具给出的信息找出错误代码行是比较简单的,Zombies也只有在产生EXC_BAD_ACCESS错误时才有用。

    http://www.cnblogs.com/ym123/p/4319185.html

    相关文章

      网友评论

        本文标题:iOS性能优化:Instruments工具

        本文链接:https://www.haomeiwen.com/subject/dogmettx.html