1、 单步跟踪(Step)
所谓单步跟踪是指一行一行地执行程序,每执行一行语句后就停下来等待指示,这样你就能够仔细了解程序的执行顺序,以及当时的各种状况。
2、 断点(Breakpoint)
只要在需要暂停的地方设置一个断点,然后让程序运行,当执行到这个断点位置时不需要用户干预就会暂停并返回集成调试程序.断点必须位于可执行代码行上,凡设置在注释,空白行,变量说明上的都是无效的。另外,断点既可以在设计状态下设置也可以在运行调试状态下设置。根据断点调试找到错误处。在程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。在需要调试的代码断设置断点,然后按预设的快捷键步进。调试状态运行程序,程序执行到有断点的地方会停下来。
3、内存泄漏
一般我们常说的内存泄漏是指堆内存的泄漏。
3、1 在iPhone程式开发中,使用NSLog直接在控制台印出retainCount也是一个检视內存泄漏的方法
3、2 instruments leaks工具检测内存泄漏
iOS 5.0之后apple引入了Xcode编译器特性ARC来帮助开发者管理内存,但为了追求app的高性能与减少安装包大小,工作中很多时候需要我们手动管理内存。再牛的开发者也不能保证自己写的code 100%没有内存泄露
下面就讲解xcode中的内存调试神器---Instruments Leak ,不管是ios开发菜鸟,还是有经验的开发者,使用Instruments Leak调试内存泄露是必备技能之一。
1、 分析内存泄露(shift+command+b)
app不crash了,那看看有没有内存泄露。用XCode的Analyze就能分析到哪里有内存泄露
2、使用Instruments的leaks工具
1)分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的。那就需要用到Instruments了。
2)build成功后跳出Instruments工具,选择Leaks选项,这时候寿司程序也运行起来了,选中list中的项,拖动等操作后,工具显示效果如下
红色的柱子表示内存泄露了。怎么通过这个工具看到在哪泄露了呢?
3)先在工具栏按下红色的圆形按钮,把工具监视内存的活动停下来。选择Leak,然后点中间十字交叉那,选择Call Tree.
4)这时候左下角的Call Tree的可选项可以选了。选中InvertCall Tree 和Hide System Libraries,显示如下:
这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。
5)你只要在这些方法上双击,就会跳转到具体的代码,哈哈,是不是很方便。
二、常见错误
1.Objective-CEXC_BAD_ACCESS
EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源在于对一个已经释放的对象进行release操作。
造成这个错误,存在两种原因:
1. 项目未添加一个 CoreData framework;
2. 由于某个或某几个.m文件没有被标记(打钩)的原因造成的(解决方法是将与服务器端冲突的几个先在项目中删除,然后再将删除的文件重新拖拽到xcode中,注意在添加文件是要记得打钩。 )
三、上线异常追踪—Bugly
这些在开发阶段都能很简便的实现, 但是当app发布出去后用户发生crash呢? 一般用户只能反馈在做什么的时候发生crash,然后我们在去做尝试是否能遇到, 不过这样效率不高而且一般很难复现到用户的crash.
Bugly解决这个问题:
Bugly SDK在当程序崩溃时, 会自动将错误信息发送到服务器方便开发人员查看分析;
那么如何使用Bugly?( https://bugly.qq.com/docs/introduction/bugly-introduction/?v=20170322165254#_3)
应用集成SDK后,即可在Web站点查看应用上报的崩溃数据和联网数据。查看今日实时统计、崩溃趋势、崩溃排行和TOP20崩溃问题等信息
腾讯Bugly,为移动开发者提供专业的异常上报和运营统计,帮助开发者快速发现并解决异常,同时掌握产品运营动态,及时跟进用户反馈。
http://blog.csdn.net/worldviewcontroller/article/details/48000903
http://bbs.9ria.com/thread-183991-1-1.html
http://www.cocoachina.com/ios/20150701/12301.html