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 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩 ...
随机推荐
- 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 先贴错误: 吐槽一下: 进入正题: 新建一个同名数据库 停止MSSQL服务 替换数据库文 ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- Hawk 7. 常见问题
本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...
- ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知
一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...
- Ubuntu下开启php调试模式,显示报错信息
在Ubuntu下php的缺省设置是不显示错误信息的,如果程序出错会显示“无法处理此请求的错误提示”,这在开发环境下非常不方便. 其实我们只要编辑下apache的配置文件就好 1.我的apache 配置 ...
- OpenSUSE下编译安装OpenFoam
在不是Ubuntu系统下安装OpenFoam,需要采用编译安装的方式.以下以OpenSuSE为例进行编译安装. 1 软件包准备 需要下载两个程序包: OpenFOAM-4.x-version-4.1. ...
- http协议(十一)http与https
一.http的缺点 之前有介绍过http协议相关的一些知识,http是相当优秀和方便的,但它也有缺点,主要不足表现在如下几个方面: △ 通信使用明文(不加密),内容可能会被窃听 △ 不验证通信方的身份 ...
- MonoDevelop 4.0.9 on CentOS 6.3 安装笔记
前言 Mono的前东家Novell公司旗下的SUSE Linux系列对Mono及MonoDevelop提供内置支持,所以在SUSE/OpenSUSE这些Linux系统中安装MonoDevelop是非常 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 基于Netty打造RPC服务器设计经验谈
自从在园子里,发表了两篇如何基于Netty构建RPC服务器的文章:谈谈如何使用Netty开发实现高性能的RPC服务器.Netty实现高性能RPC服务器优化篇之消息序列化 之后,收到了很多同行.园友们热 ...