Xcode(7.2)|Xcode(7.2) 使用技巧(2)
1.开启 Enable NSZombie Objects(开启僵尸对象) 模式
Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧。这个技巧非常非常容易追踪到重复释放内存 或者 使用已经释放的内存地址 的问题。该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址。
怎么开启僵尸对象呢?首先打开“Edit Scheme”,然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项。
文章图片
文章图片
现在我们可以关掉ARC来测试重复释放的问题、异常和更容易产生的Crashs,但是即使开启ARC,重复释放和与内存相关的Crashs也经常发生。现在假设我们犯了一些错误导致了重复释放的发生来观察将要发生什么。
现在运行这段代码
UIView* view = [[[UIView alloc] init] autorelease];// 释放一次
// it has been autoreleased.
[view release];
// 释放一次
Enable NSZombie Objects会让输出这样的崩溃信息
文章图片
2.Condational Breakpoints(条件断点)
这只是普通的断点,当变量满足一定条件时程序停止
这个调试技巧在当你想要捕获一个循环中的变量的特定值或者一些不常发生的情况时是非常有用的,而不用你每次迭代都停止来查看。
鼠标点击,添加一个普通的断点,然后右键点击断点选择“Edit Breakpoint”,这时就打开了一个断点编辑器,你可以在这里设置断点条件(以及一些其他的断点设置),然后选择“Done”,这个调试技巧非常简单吧。
文章图片
3.unrecognized selector send to instancd 快速定位
添加一个 add Symbolic Breakpoint
文章图片
在Symbolic中填写如下方法签名
文章图片
-[NSObject(NSObject) doesNotRecognizeSelector:]
【Xcode(7.2)|Xcode(7.2) 使用技巧(2)】设置完成后再遇到类似的错误就会定位到具体的代码。
推荐阅读
- xcode证书问题总结
- JavaScript|JavaScript Promise 的使用技巧
- 2017.7.22|2017.7.22 小黄狗
- KJEssay客户反馈【2017.2.25】
- 集成|集成 Spring Doc 接口文档和 knife4j-SpringBoot 2.7.2 实战基础
- Xcode编译错误纪录
- 每日一篇-7.29-进程通信
- 投稿|本季度公司营收 1212 亿美元,同比增速 7.2%,亚马逊的“逆天反转”来了
- Xcode8.3.2中使用插件
- 7.24晚