XcodeDebug---Instrument
来源:互联网 发布:软件考研科目 编辑:程序博客网 时间:2024/05/07 19:39
参考
使用Xcode和Instruments调试解决iOS内存泄露
iOS系列教程之用instruments来检验你的app
这里我们来探索怎么用instruments工具来提高你app性能和稳定性.
Instrument简介
这将确保所有的面板都打开。现在,研究下面的截图和它下面的每个部分的解释:
1. 录控按钮。中间的红色按钮将停止与启动它被点击时,应用程序目前正在分析。注意这实际上是停止和启动应用程序,而不是暂停它。 2. 运行定时器和运行导航,定时器显示APP已经运行了多长时间,箭头之间是可以移动的。如果停止,然后使用录制按钮重新启动应用程序,这将开始一个新的运行。显示屏便会显示“run2 of 2”,你可以回到第一次运行的数据,首先你停止当前运行,然后按下左箭头回去。 3. 运行轨道. 4. 扩展面板,在时间探查仪器的情况下,它是用来跟踪显示堆栈 5. 详细地面板。它显示了你正在使用的仪器的主要信息,这是使用频率最高的部门,可以从它这里看到cpu运行的时间 6. 选项面板 稍后介绍
重头戏来了.
以下介绍下配置选项:
Separate by Thread: 每个线程应该分开考虑。只有这样你才能揪出那些大量占用CPU的"重"线程 Invert Call Tree: 从上倒下跟踪堆栈,这意味着你看到的表中的方法,将已从第0帧开始取样,这通常你是想要的,只有这样你才能看到CPU中话费时间最深的方法.也就是说FuncA{FunB{FunC}} 勾选此项后堆栈以C->B-A 把调用层级最深的C显示在最外面 Hide Missing Symbols: 如果dSYM无法找到你的app或者系统框架的话,那么表中看不到方法名只能看到十六进制的数值,如果勾线此项可以隐藏这些符号,便于简化数据Hide System Libraries: 勾选此项你会显示你app的代码,这是非常有用的. 因为通常你只关心cpu花在自己代码上的时间不是系统上的Show Obj-C Only: 只显示oc代码 ,如果你的程序是像OpenGl这样的程序,不要勾选侧向因为他有可能是C++的 Flatten Recursion: 递归函数, 每个堆栈跟踪一个条目Top Functions: 一个函数花费的时间直接在该函数中的总和,以及在函数调用该函数所花费的时间的总时间。因此,如果函数A调用B,那么A的时间报告在A花费的时间加上B.花费的时间,这非常真有用,因为它可以让你每次下到调用堆栈时挑最大的时间数字,归零在你最耗时的方法。
Time Profile
我在按钮方法里面写了个循环来测试一下
- (void)runLoop{ for (long i = 0; i < 10000; i++) { NSLog(@"long int %ld", i); }}
Leaks
先下载一个实现准备好的内存泄露的Demo吧:leak app
分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的。那就需要用到Instruments了。
按上面操作,build成功后跳出Instruments工具,选择Leaks选项,这时候寿司程序也运行起来了,选中list中的项,拖动等操作后,工具显示效果如下:
大家可能都能猜到,红色的柱子表示内存泄露了。怎么通过这个工具看到在哪泄露了呢?
先在工具栏按下红色的圆形按钮,把工具监视内存的活动停下来。选择Leak,然后点中间十字交叉那,选择Call Tree.
这时候左下角的Call Tree的可选项可以选了。选中Invert Call Tree 和Hide System Libraries,显示如下:
这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。
你只要在这些方法上双击,就会跳转到具体的代码,哈哈,是不是很方便。
这里应该是提示100%内存会泄露。
Cocoa Layout
(其实这里宽度不需要)
加载的时候修改了按钮的宽度限制self.width.constant =200;
抓到冲突的地方
0 0
- XcodeDebug---Instrument
- Instrument
- XcodeDebug---闪退调试
- XcodeDebug---打断点
- Primary Instrument
- Instrument-Demo
- Java Instrument
- instrument 名词解释
- xcode-instrument
- XcodeDebug---远程bug报告和分析
- 仪表板 Instrument Cluster
- java instrument 初探
- instrument下的工具
- Package java.lang.instrument
- java instrument 初探
- iOS图形界面优化-Instrument
- am instrument -w
- iOS instrument工具详解
- JSON.stringfy
- 形态学及其他集合运算(Morphological and Other Set Operations)
- 毕业设计-微信公众平台开发与设计(一:准备材料)
- android学习记录(十)SQLiteOpenHelper简单解析。
- 【Distribution】Java RMI - 1 - 原理简介
- XcodeDebug---Instrument
- LTE UE调度
- AGW(lvs)长连接后端应用重启遇到连接中断问题
- 黑马程序员第六季——网络(Socket编程)
- HDU2568 前进【水题】
- (七)立体标定与立体校正 【计算机视觉学习笔记--双目视觉几何框架系列】
- Java中的强引用,软引用,弱引用和虚引用
- JAVA学习笔记29——模拟实现ArrayList
- 【tcp网络编程】TCP上传文件到服务器