iOS 调试工具
- 仪表
xcode5 引入了调试仪表,通过仪表可以直观的看出应用的CPU和内存占用量。运行一个程序,点击仪表栏。可以发现当程序处于运行状态时,调试导航面板会以柱状图显示CPU和内存占用量,并随着应用实时更新占用量数据。需要注意的是,调试导航面板中的数据是根据应用的硬件计算出来的,苹果电脑的CPU比iOS设备更快,如果在iOS模拟器上运行应用,调试导航面板中显示的CPU赞用量可能非常低,不低于分析性能问题。
点击CPU可以在编辑区域打开CPU占用量报告。
- 占用百分比(Precentage Utilized)
根据运行应用设备的CPU核心数显示CPU占用比。例如,单核设备中最大CPU占用量是100%,而对双核设备中是200%,所以应用在单核设备中的CPU占用量通常比双核设备更高。如果应用处于空闲状态(进入后台活没有操作),CPU占用量会显示0%。
- 占用环比(Utilization Comparison)
使用环比图比较应用与系统中其他进程(Process)的CPU占用百分比。如果应用的CPU占用百分环比不高,但是运行不通畅,那么可以从该环形图中查看Other Processes的占用百分比。如果设备中后台运行的其他应用太多 ,就可能导致Other Processes的占用百分比很高,应用运行速度变慢。
- 时间-占用比(Utilization over Time)
使用折线图显示应用CPU占用量随运行时间变化的过程,以及占用量在运行时间内的峰值和谷值。
- 线程(Threads)
显示应用中每一个线程的时间-占用比。
接下来我们打开我们应用 JXTouchTracker ,用手指在应用中绘制线条,手指不要离开屏幕,持续绘制大量线条可以发现应用的CPU占用比迅速升高-手指在屏幕上移动时,JXDrawView会不断收到 touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 消息并调用 drawRect:(CGRect)rect 重绘自己。绘制的线条越多, drawRect:(CGRect)rect 的工作量就越大,CPU占用比就越高。
回到吊事导航面板,点击Memory,打开内存占用量报告,如图:
和CPU占用量报告类似,内存占用量报告直接的显示了应用内存占用的情况,但是Memery部分(位于最下方)显示的折线图可能会让我们误解:应用似乎始终占用了100%的内存。实际上,途中将运行时间内的占用峰值作为100%显示,因此途中y周的最大值与左侧High栏中显示的数值相同都是58.2MB。
无论开发何种类型的应用,都应该尽可能降低CPU和内存占用量,提高应用的流畅度和用户体验。
- Instruments
从仪表和占用量报告中可以简要分析出应用的性能,但是,如果应用的CPU和内存占用量过高,需要从代码中查找性能问题,则可以使用 Instruments ,他提供了比仪表和占用量报告更详细的数据分析。
Instruments 是一中与Xcode紧密集成的调试工具,可以实时监控并统计应用运行时的各项数据,生成详细的分析报告。它由若干组件组成,这些组件检查的事项包括:应用创建了那些对象,每一个方法和函数的CPU占用量、文件I/O和网络I/O等。通过使用这些不同的组件,可以找出程序中的性能瓶颈,发现代码中的问题。
- Allocations 组件
Allocations 组件可以列出应用创建过的全部对此昂,以及这些对象所占用的内存大小。
当监视某个应用时, Allocations 组件会对这个应用进行性能分析。虽然可以在模拟器上对某个应用进行性能分析,但是在真是的设备上进行可以得到更精确的数据。
要对当前打开的项目执行性能分析,可以按住位于坐上角的 Run 按钮不放,然后在新出现的弹出窗口中选择 Profile 。
Xcode会启动 Instruments 。 Instruments 会显示一个下拉窗口并列出所有可用的组件。选中 Allocations 。之后 Instruments 会启动应用并打开 Instruments 的主窗口。
Allocations 组件会显示一张表格,流出应用 执行过的所有内存分配。因为数据比较多,所以先过滤,只列出由我们自己编写的代码创建的对象。首先在JXDrawView对象上画若干线条。然后在窗口 Category 查询框中输入 JXLine 。
Allocations 组件会过滤 Object Summary 表格所显示的条目,只列出和 JXLine 右端的内存分配,即我们自己创建的 JXLine 对象。
#Persistent 列会显示某种对象的现存个数。 Persistent Bytes 列会显示这些现存对象占用了多少内存。 # Total 列会显示应用运行至今共创建了多少个某种类型的对象(其中包括已经释放的对象)。
iOS 调试工具的更多相关文章
- iOS——调试工具LLDB学习
一.前言 LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件.在日常的开发和调试过程中给开发人员带 ...
- iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码
iOS精选源码 日期时间选择器,swift Space Battle 宇宙大战 SpriteKit游戏源码 LLDebugTool - 便捷的IOS调试工具(新增截屏功能) 相机扫描or长按识别二维码 ...
- 开源 iOS 项目分类索引大全 - 待整理
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...
- 史上最全的常用iOS的第三方框架
文章来源:http://blog.csdn.net/sky_2016/article/details/45502921 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片 ...
- 常用iOS的第三方框架
图像:1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...
- IOS debug网络PonyDebugger 实践篇
引言: PonyDebugger是一个很给力的iOS调试工具,它的监视器安装在Chrome浏览器下做为插件使用,通过监视器和PonyDebugger的iOS SDK相辅相成,可以很好的监视App的运 ...
- 开源 iOS 项目分类索引大全
GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义 ...
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下 ...
- iOS开发--开源库
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩 ...
随机推荐
- Sublime的使用
1.一个可扩展性强的编辑工具 2.如何安装扩展 通过View->Show Console菜单打开命令行. 按图操作: 在控制台输入,然后回车: import urllib.request,os; ...
- Beanstalkd一个高性能分布式内存队列系统
高性能离不开异步,异步离不开队列,内部是Producer-Consumer模型的原理. 设计中的核心概念: job:一个需要异步处理的任务,是beanstalkd中得基本单元,需要放在一个tube中: ...
- 关于sqlmap的使用
好记性不如烂笔头,记录一下. 带cookie的注入 python sqlmap.py -u "http://www.xxx.com?id=1" --cookie="coo ...
- Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合
Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合 string sqlstr="select * from tblname where name like ...
- Xamarin和微软发起.NET基金会
新闻<微软宣布成立.NET基金会全面支持开源项目 包括C#编译器Roslyn>,看到大家对微软的开放都很兴奋.在此之前在.NET社区也有了大量的开源项目,所列的24个项目也是早就开源,这次 ...
- 在 Ubuntu 14.10 中借用 Windows 的字体
在前一篇随笔中,我详细讨论了字体的分类及用途,也以 Fedora 20 为例,展示了字体配置的思路和方法.我在配置 Fedora 20 系统字体的时候,采用的是一种釜底抽薪的方法,完全抛开了系统原有的 ...
- 【初探Spring】------Spring IOC(三):初始化过程---Resource定位
我们知道Spring的IoC起到了一个容器的作用,其中装得都是各种各样的Bean.同时在我们刚刚开始学习Spring的时候都是通过xml文件来定义Bean,Spring会某种方式加载这些xml文件,然 ...
- java太low,又舍不得jvm平台的丰富资源?试试kotlin吧(一)
尝试kotlin的起因 因为各种原因(版权,人员招聘),公司的技术体系从c#转到了java,我花了大概两周的时间来上手java,发现java的语法还是非常简单的,基本看着代码就知道什么意思.学习jav ...
- C#委托使用详解(Delegates)
摘要 委托是C#编程一个非常重要的概念,也是一个难点.本文将系统详细讲解委托. 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻.说实话,每个人都委托都有不同的见解,因为看问题的 ...
- 从零到有——我的OA如何成长
早前发文说要分享,马上进入了财务系统的开发,拖到现在,见笑了. 我在月初离职了,所以到处跑,找工作,想想南京.苏州.无锡(去玩的).杭州(路过).上海.珠海.深圳.广州.觉得找工作也差不多尾声了,就留 ...