zoukankan      html  css  js  c++  java
  • 使用Xcode Instruments定位APP稳定性问题

        Xcode Instruments提供了各种各样的工具用来定位APP的各种稳定性问题。这里简单总结几个问题:

    1. 内存泄漏

        Xcode->Open Developer Tools->Instruments->Leak,打开后点击运行。执行测试流程后,如果没有内存泄漏,则Leak工具显示的是√,如果有泄漏,则显示×。

        这时候选中×的区域,则Leaks栏选择Call Tree,选中"Invert Call Tree", "Hide System Libraries",即可显示泄漏的堆栈。如果没有显示符号堆栈,则检查Product->Scheme->Edit Scheme,看目前是否是Debug状态,同时查看项目的Build Settings->Debug Information Format,看是否是DWARF with dSYM File,该文件主要是一些符号信息。如果还是不显示堆栈,可以点击File->Symbols手动选择Symbol的路径。

        定位内存泄漏是一回事,还要分析为什么会出现内存泄漏,是调用者调用的问题,还是类设计者设计存在问题,比如没有遵循谁申请谁释放的原则。

    2. 内存越界

         内存越界往往会造成一些匪夷所思的crash。Xcode可以按如下方法来检测内存越界:

    a, Debug->Breakpoints->Create Symbolic Breakpoints, Symbols输入malloc_error_break;

    b, Product->Scheme->Edit Scheme,选中Memory Management中的Malloc Scribble, Malloc Guard Edges, Guard Malloc, Zombie Objects. With that, run your application again, and Xcode will stop at the line causing the problem.

        Instruments提供了Zombies工具,该工具会记录每个被释放的内存块,当再次访问该内存块时,Xcode会直接提示出现问题的调用堆栈。

    3. 高CPU占用

        有时候APP很卡,原因是CPU过载,有些线程过度使用了CPU。高CPU占用有两个危害,一个是坏的用户体验,另外一个是ios系统会将连续一段时间高频使用CPU的APP直接杀死。使用Instruments中的time profile即可定位。Xcode->Open Developer Tools->Instruments->time profiler,打开后点击运行。执行测试流程后,CPU占用率显示曲线,横轴是时间,纵轴是CPU使用率。这时候鼠标选中使用率高的区域,界面就会显示使用率高的线程调用,及函数调用。

        这个时候就要分析为什么这些函数耗费了过多的CPU,有些函数本身就耗费很多CPU,比如写磁盘,读网络数据等IO操作;有时候是一些程序写法存在问题。比如最近发现的主APP中两个高CPU占用的问题:

    a, 音视频数据队列采用了vector实现,而且每来一个数据,执行的是push_front,而不是push_back,造成CPU利用率隔一段时间就出现一个尖峰,是vector在执行realloc和copy操作,改为std::list后不再出现。

    b, 读取音视频队列的关键线程加进了一些无意义的查询数据语句,每读一个数据包查询一次,白白浪费了很多CPU。

        还有一些APP卡顿是GPU过载,需要使用Core Animation定位。除了以上几个工具,Energy Log用来分析电量,Network用来进行流量分析。

  • 相关阅读:
    转载:CODE CSDN Git 配制方法介绍
    版本管理之Git(二):Win7上Git安装及简单配置过程
    Html_color code表示
    Android 自动化测试—robotium(十一) robotium实现微博绑定
    转载:Android自动化测试- 自动获取短信验证码
    Android 自动化测试—robotium(九) Junit_report测试报告重定向输出到终端SDCard
    每日一问:面试结束时面试官问"你有什么问题需要问我呢",该如何回答?
    常见的几个Python面试题
    使用python解析Json字符串-获取Json字符串关键字
    Android测试之 APK重签名方法
  • 原文地址:https://www.cnblogs.com/jiayayao/p/11488080.html
Copyright © 2011-2022 走看看