首先我们经常会闪退的异常有哪些呢?crash的产生来源于两种问题:违反iOS策略被干掉,以及自身的代码bug。

1.IOS策略

1.1低内存闪退

前面提到大多数crash日志都包含着执行线程的栈调用信息,但是低内存闪退日志除外,这里就先看看低内存闪退日志是什么样的。

我们使用Xcode 5和iOS 7的设备模拟一次低内存闪退,然后通过Organizer查看产生的crash日志,可以发现Process和Type都为Unknown:

1.2

Watchdog超时

Apple的iOS

Developer Library网站上,QA1693文档中描述了Watchdog机制,包括生效场景和表现。如果我们的应用程序对一些特定的UI事件(比如启动、挂起、恢复、结束)响应不及时,Watchdog会把我们的应用程序干掉,并生成一份响应的crash报告。

1.3用户强制退出

一看到“用户强制退出”,首先可能想到的双击Home键,然后关闭应用程序。不过这种场景是不会产生crash日志的,因为双击Home键后,所有的应用程序都处于后台状态,而iOS随时都有可能关闭后台进程,所以这种场景没有crash日志。

另一种场景是用户同时按住电源键和Home键,让iPhone重启。这种场景会产生日志(仅验证过一次),但并不针对特定应用程序。

这里指的“用户强制退出”场景,是稍微比较复杂点的操作:先按住电源键,直到出现“滑动关机”的界面时,再按住Home键,这时候当前应用程序会被终止掉,并且产生一份相应事件的crash日志。

通常,用户应该是遇到应用程序卡死,并且影响到了iOS响应,才会进行这样的操作——不过感觉这操作好高级,所以这样的crash日志应该比较少见。

2.代码bug

此外,比较常见的崩溃基本都源于代码bug,比如数组越界、插空、空引用、引用未定义方法、多线程安全性、访问野指针、发送未实现的selector等。

再来谈谈获取iOS设备上崩溃日志(Crash Log)的方法

第一个方法:XCode  的菜单Window->Organizer

选择Devices  ->  选中的手机 -> 点击手机名称左边的箭头 会等到如下图

在右边竖蓝色矩形框中 Type里面出现两种类型:Unknown和Crash 这两种类型分别是 内存不够回收内存kill应用程序导致Crash和程序异常Crash的日志。

第二种方法 打开手机 - > 设置 -> 通用 - > 关于本机 - > 诊断与用量 - > 诊断与用量数据  这里面就是所有应用的Crash日志。(本人没找到这个)

第三种方法 使用第三方软件:itools等

如果你平时不用iTunes,而是使用itools这类第三方的软件对iPhone设备进行管理,也是没问题的。

打开itools,在你的设备下,找到“高级功能”,点击“崩溃日志”,然后将需要的日志导出到电脑里面就可以了!

第四种方法 通过iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户的crash日志

大部分用户可能都会使用iTunes软件来管理iPhone或者iPad设备,这时候同步的Crash日志就会同步到电脑上,我们只需要在特定的路径里面寻找即可。

Mac OS X:~/Library/Logs/CrashReporter/MobileDevice

Windows XP:C:\Documents and Settings\Application Data\Apple

computer\Logs\CrashReporter

Windows 7/Vista: C:\Users\计算机登录名\AppData\Roaming\Apple

Computer\Logs\CrashReporter\MobileDevice

ios 捕抓crash_ios crash的原因与抓取crash日志的方法相关推荐

  1. 测试人员必备-用adb抓取APP日志的方法

    这篇文章,主要是简单介绍怎么用adb来抓取真机设备里的APP log 1.安装SDK,需要配置环境变量; 2.安装ADB,cmd 窗口输入adb验证; 3.用USB数据线将手机与电脑连接 4.手机打开 ...

  2. 抓取Crash不让崩溃

    2019独角兽企业重金招聘Python工程师标准>>> 主动抓取crash,并处理下一个消息 去掉ActivityThread类中处理消息的方法,避免黑屏 new Handler(L ...

  3. ios 抓娃娃开发_我爱抓娃娃appiOS版下载_我爱抓娃娃iOS版下载_18183软件下载

    我爱抓娃娃iOS版下载是一款有趣的软件,喜欢的用户不要错过. 抓中几率超高,让你成为朋友圈人气王!新人注册立即送钻石,每日签到立即送钻石,在家躺着就能抓娃娃,款式多样每天上新,想抓就抓,全国均可邮寄到 ...

  4. 如何分析 mysqld crash 的原因

    作者:Fander(芬达) 转自:芬达的数据库学习笔记 今天中午公司某业务系统 mysql crash 了,重启 mysqld 后业务恢复了.业务同事找到我,说需要分析 mysqld crash 的原 ...

  5. jvm crash 的原因以及解决办法

    当JVM crash时,不要慌,首先启动crash的服务,然后再分析原因.那么,应该从哪里入手呢?下面我根据已有的知识,发表下自己的浅见,希望能给和我遇到一样问题的小伙伴一些思路. 谁crash了我们 ...

  6. fiddler everywhere手机抓包_基于移动端抓包使用Fiddler模拟弱网测试

    随着移动互联网的发展,移动端测试工作也提上日程,那移动互联网测试与web测试有什么不一样?首先它们架构不一样,再者基于的场景不一样,PC端网络基本固定宽带,而移动互联的网络测试一般分为:2G.3G.4 ...

  7. Fiddler抓包工具入门:软件测试员必知的抓取https协议的方法

    首先给大家分享一个抓包的小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常": 小A说:"这哪是我的 ...

  8. APP 抓包和微信小程序抓包-Charles 的精简使用教程

    APP 抓包和微信小程序抓包-Charles 的精简使用教程 2021-09-25 更新 2019-07-10 更新 目标 教程 一.安装 Charles 二.Charles 简介 (1)Charle ...

  9. php 让百度蜘蛛抓取403,百度蜘蛛不抓取页面的解决方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我们都知道我们网站的页面要想被百度收录必须经过百度蜘蛛的抓取,因此我们要经常关注我们网站页面被抓取的情况,如果遇到不被抓取的情况,那么就要引起我们的注意, ...

最新文章

  1. getRunningTask API
  2. eclipse 中文件引用报错不能编译,但引用文件确实存在
  3. LinuxWindows下批量修改文件后缀
  4. Android简明开发教程二十一:访问Internet 绘制在线地图
  5. netbeans6.8_NetBeans 8.0的五个新性能提示
  6. uniapp返回上一页_uniapp怎么调用扫一扫功能?
  7. js把base64串解析成中文_26日大嘴足球:晚场5中3/中2串+1比分,早场(意甲+西甲)2场解析!!...
  8. ubuntu9.04更新之后无法启动系统的解决办法
  9. python方法测试怀孕_在Python中测试私有方法(例外)
  10. 5G格局剧变!苹果高通和解,英特尔退票出局,华为独善其身
  11. Jsvm2 与 prototype.js 组合 應用心得
  12. 林锐的《高质量编程》学习笔记——内存分配方式
  13. 虚拟化是什么,主要有哪些虚拟化技术?
  14. 西门子s7-200的PLC编程软件,帮助程序无法打开问题解决方法
  15. 学llinux的资料
  16. OA系统实现(请假审批,mybatis)-1
  17. 解决面具magisk刷入模块卡开机问题
  18. Android Studio中如何添加Vector Asset
  19. binlog恢复误删数据
  20. 2020最实用115个Java面试题及面向对象的能力汇总合集

热门文章

  1. python环境变量的配置_python基础教程-第一讲-带你进入python的世界
  2. springboot中获得app_在SpringBoot中读取环境变量
  3. add结果 bigdecimal_java.math.BigDecimal.add(BigDecimal augend)方法
  4. thread.sleep是让哪个线程休眠_Java多线程:多线程基础知识
  5. mysql数据表数据丢失6_MYSQL数据表损坏的原因分析和修复方法小结
  6. matplotlib调整图例的位置
  7. java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查
  8. java框架谁搭建_从零开始搭建一个开发框架(Java + Hibernate + Spring + Oracle)
  9. android默认exported_android:exported 属性详解-阿里云开发者社区
  10. SSD之硬的不能再硬的硬核解析