一、Instrument工具介绍与使用
Instrument是性能分析、动态跟踪和分析OS X和iOS代码的测试工具。它是一个灵活的和强大的工具,可以让您追踪程序运行的过程,收集数据,并检查所收集的数据。
界面:
![](https://img.haomeiwen.com/i965383/a1f1b143a0d9c817.png)
功能:
1.追踪代码中的(甚至是那些难以复制的)问题;
2.分析程序的性能;
3.实现程序的自动化测试;
4.部分实现程序的压力测试;
5.执行系统级别的通用问题追踪调试;
6.使你对程序的内部运行过程更加了解。
常用的Instrument模板:
Leaks(泄漏):一般的措施内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录;
Allocations(内存分配):跟踪过程的匿名虚拟内存和堆的对象提供类名和可选保留/释放历史;
Time Profiler(时间探查):执行对系统的CPU上运行的进程低负载时间为基础采样。
Activity Monitor(活动监视器):显示器处理的CPU、内存和网络使用情况统计;
Automation(自动化):这个模板执行它模拟用户界面交互为IOS机应用从instrument启动的脚本;
工具界面:
![](https://img.haomeiwen.com/i965383/2edd928785704525.png)
1、这里控制记录过程,点击红色的"记录"按钮可以停止或开始当前正在分析的app(在记录和停止按钮之间切换),暂停键,如你所想,暂停当前正在运行的app。
2、这里是执行计时器(run timer),计时器记录着正在分析的app执行了多长时间、执行了多少次。如果你使用记录控制按钮来停止你的app,然后重启,这将创建一个新的运行记录,同时会显示"Run 2 of 2"。
3、这里被称作路径(track),就你选择的Time Profiler工具而言,因为只有一个工具,所以这里只有一条路径,关于这里显示的图标的详情,一会你就会在接下来的教程中了解更多。
4、这里是详情面板,展示的是你正在使用的工具的主要信息。就现在而言,这里展示的是最"笨重(hottest)"的方法--换句话说,占用CPU时间最长的方法。点击上方的bar会看到Call Tree(左手边的那个)并选中Sample List,然后你会看到数据的不同视图,视图展示了每一个示例。点击其中几个,你会在Extended Detail inspector中看到被捕获的堆栈跟踪。
5、这里是检查器(inspector)面板,一共有三个检查器:record setting(记录设置),display setting(展示设置),还有extends detail(扩展详情)。一会你将了解更多关于这里面的一些选项。
![](https://img.haomeiwen.com/i965383/913cde0d8d46c5bd.png)
Call Tree各个选项和功能:
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.花费的时间,这非常真有用,因为它可以让你每次下到调用堆栈时挑最大的时间数字,归零在你最耗时的方法。
<font color=#FF6347>现介绍下 Leak 工具的使用</font>
Leak 的使用
1.选择Leaks选项
![](https://img.haomeiwen.com/i965383/708ee3fbe239a5df.png)
2.选中设备--app,之后点击红点运行.
![](https://img.haomeiwen.com/i965383/0e3ba4c99c0d7e92.png)
3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的暂停按钮,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
![](https://img.haomeiwen.com/i965383/2757f63dc7d927f4.png)
4.下面就是定位修改了,此时选中有红色叉的Leaks,下面有个"田"字方格,点开,选中Call Tree。
![](https://img.haomeiwen.com/i965383/68512140a5809e28.png)
显示如下图界面
![](https://img.haomeiwen.com/i965383/b10ca294269850db.png)
5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
![](https://img.haomeiwen.com/i965383/95ef9d30e4b5e5c9.png)
6.定位
在详情面板选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,然后点击右上角 Xcode 图标进行修改。如图所示
![](https://img.haomeiwen.com/i965383/b71222d169b660d7.png)
![](https://img.haomeiwen.com/i965383/e39d759e5dd13cba.png)
二、Xcode上源码版本控制的使用
从 Xcode5 开始引入了使用 git 的一些新特性。它将 git 的各项功能整合到一个菜单中,并提供子菜单来进行软件合并的控制。菜单如下图所示。
![](https://img.haomeiwen.com/i965383/b1ea0d5d84e71488.png)
其中功能包括创建分支、切换分支、合并分支、提交(Commit)、撤销修改(Discard Changes)、Pull、查看历史。
由于不知道什么原因,无法验证远程仓库的账号和密码。故无法使用Push操作…
1.分支的操作
1.1新建分支
选择 New Branch ,填写所要新建的分支名称,输入完成系统将会自动切换到所新建的分支。
1.2 切换分支
选择 Switch to Branch ,在新窗口可以看到本地和远程所有的分支,选择所要切换的分支(默认不显示当前分支),点击 Switch 即可。
![](https://img.haomeiwen.com/i965383/aaa07d60f44bdfa2.png)
1.3 合并分支
选择 Merge from Branch,选择将要合并的分支,点击 Merge 即可。
2.提交(Commit)
选择 Commit ,可看到如下图所示的窗口界面。左边为项目中状态发生改变的文件,M
表示修改,A
表示新添加。中间部分为选定文件的当前版本和前一个版本的对比。下面为此处 commit 的描述信息。
![](https://img.haomeiwen.com/i965383/98eb25d7056fa602.png)
3.撤销修改(Discard Changes)
3.1 Discard All Changes
当选择 Discard All Changes 时,可以将撤销当前工程的所有修改。恢复到当前版本最初状态。
3.2 Discard Change in "文件名"
当选中某个文件,可以撤销该文件的所有修改,恢复到当前版本最初状态。
4.Pull 和查看历史
当选择 Pull,可以从远程仓库获取最新内容。
选择 History,可以查看当前工程的版本信息.点击右边的 show xx modified files,可查看修改了哪些文件。
![](https://img.haomeiwen.com/i965383/be2d17ad2fdb4ecd.png)
5.Show the Version Editor
选择Xcode工具栏上方的版本控制编辑,可以看到当前版本和之前版本的对比。
![](https://img.haomeiwen.com/i965383/b71ade77112545a4.png)
若想查看之前某个版本的文件状态,可以切换下方的文件版本进行查看。
![](https://img.haomeiwen.com/i965383/7e0ff906b4e14108.png)
右边滚动条的横线为文件所修改的地方。
![](https://img.haomeiwen.com/i965383/03bd31f448c55572.png)
若想恢复文件到某个版本,先切换到想回复的版本,点击中间的数字,选择 Discard Change 即可。
![](https://img.haomeiwen.com/i965383/3eff56dcee6b6ffc.png)
三、参考
Instruments User Guide
小白学习instrument
如何使用Instruments诊断App(Swift版):起步
网友评论