调试程序
最近做项目发现身边的小伙伴还不会调试程序,现在拿出来给大家分享一下调试程序的几种办法:
- 直接看图吧:
- 在数组中插入空值,造成崩溃,在茫茫文件中我们如何找到这个程序崩溃在哪里?!
- 全局断点狗给我滚粗!!!
01.png
程序如我们所料崩溃了
- 我们应该多关注 Xcode 下面的代码调试区域,有些小伙伴根本不用这个区域,看到 demo 或者三方库拿来就用
02.png
- 我们看到程序抛出异常,找到调试区的一大堆文字,这个就是"调试堆栈",他给出了程序从开始运行到崩溃的完整的方法调用过程,是从下到上的过程,从程序运行到点击事件再到我自己创建的方法和该方法内部的实现操作,可以看出崩溃的点就在我创建的这个方法的数组赋值上,此时我们在调试区内 command + f 键入 reson 单词点击回车可以找到 reson 显示的是: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[1]'显示内容就是我试图在数组的第一个位置插入空对象!
03.png
值得注意的是当我们在真机调试的过程中,也是同样的错误,手机端就会崩溃,点一下就闪退~但是 Xcode 此时不会提示调试堆栈的内容只会提示错误原因,也就是 reason 位置的那段话: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[1]';
-
程序上架之后如何收集错误信息?!
- 强烈建议用"bugly",他是 qq 出品的. http://bugly.qq.com/
下面我们就用 cocoapods 集成 'Bugly':
1.打开终端输入命令: pod init
2.找到 Podfile 并用 Xcode 打开,键入 pod 'Bugly':

3.终端键入:pod install --no-repo-update等待安装完成即可!(如下显示即可~);
- 官网有详细的介绍,我只说一个坑 --> 找不到 AppleID
06.png
07.png
- 此时框架的导入工作完成
- 最后按照 Demo 要求即可写入 Apple ID
08.png
真机调试与模拟器的区别:
- 当我们真机调试的时候,点击应用会崩溃,程序会保持在 return 位置,此时真机退出来再点击一次程序会闪退,这是 Bugly 就会标记一次程序闪退,我就能在程序上架之后收集到我的 App 崩溃的次数而且也能收集到崩溃的原因,同调试堆栈不同, Bugly 有颜色的标记,可以知道是方法内的具体某个方法细节!