Xcode 静态分析与内存泄漏检查
2018-12-24 本文已影响0人
书写不简单
一、静态分析
Xcode -> Product -> Analyze 即可进行静态分析。
Xcode 静态分析能发现的问题主要有:
(1)逻辑缺陷,例如访问未初始化的变量或空指针的解引用;
(2)内存管理缺陷,如内存泄露;
(3)无用存储缺陷(永不会被访问的变量);
(4)因未遵从项目用到的框架(frameworks)或类库(libraries)所规范的而导致的API使用缺陷;
通过 Xcode Analyze 发现一些 error 之后,可以找开发讨论解决问题;Xcode 中左边的导航面板可以查看具体的 error 信息(蓝色的即为 error,黄色的为 warning)。如下图所示:
![](https://img.haomeiwen.com/i2530231/0d22262a5402d5b9.png)
二、内存检查
1.Xcode -> Product -> Profile 打开模板选择界面;
2.选择 Leaks并点击 Choose
![](https://img.haomeiwen.com/i2530231/cd800c4f45060620.png)
![](https://img.haomeiwen.com/i2530231/44e3024973bdcf2f.png)
![](https://img.haomeiwen.com/i2530231/620c84da2817a044.png)
3.选择好真机或者模拟器,找到需要检测的app后,点击 小红点 即可开始检测, 检测的内存泄漏后,Leaks check 会在内存泄露的地方标红,此时应该 点击暂停,来定位内存泄漏的地方
![](https://img.haomeiwen.com/i2530231/542c907d4834536a.png)
![](https://img.haomeiwen.com/i2530231/93faf90f051bedf1.png)
4.定位内存泄漏:
4.1选中出现内存泄露的时间区间
![](https://img.haomeiwen.com/i2530231/fd0b8cc53e9d0f85.png)
4.2切换成 Call Tree 视图
![](https://img.haomeiwen.com/i2530231/dba9d7aeb080fadb.png)
![](https://img.haomeiwen.com/i2530231/b74c8d0dc39c1065.png)
4.3在Call Tree 菜单中勾选 invert Call Tree 和Hide System Libraries
![](https://img.haomeiwen.com/i2530231/423edc28dcf7bb51.png)
可以看到小人头像部分,就是内存泄漏的地方,点击右侧的Heavlest stack Trace的小人可以快速展开左侧的折叠部分,双击左侧泄漏的方法可以快速定位到项目源代码部分
leak10.png
![](https://img.haomeiwen.com/i2530231/7976456d024cdb49.png)
如果没有出现小人头像部分,而是地址符号,则检查下 Debug Information Format是否设置为 DWARF With dSYM File
leak12.png