understanding and analyzing ios application crashreports

这个TN涉及了与崩溃相关的 内存耗尽信息,堆栈信息 以及 异常编号 等信息

内存耗尽

内存不足时,虚存系统需要app的协助释放部分内存,内存不足的通知会发送给所有正在运行的app。如果内存压力依然存在,系统会终止后台进程以缓解内存压力。如果释放的内存足够,你的app仍可以运行且不会有crash report产生。否则,app将被终止且产生crash report。

low memory report与其他crash report不同在于没有应用线程的stack trace,每个进程的内存占用是由内存页数标识的,每页4K。且每个被 ios终止的进程名后面都会有一串字符 "(jettisoned)"。如果你的app名旁边有这个字串,则可以确认你的应用是因为内存占用过多而被终止的。否则则不是因为内存压力而崩溃的,这时应该寻找.crash文件。可以checkout WWDC2010 session的 Advanced Memory Analysis with Instruments

需要注意的是,泄漏和分配工具并不会跟踪显存。你需要使用VM tracker工具(instruments Allocations template中)运行app以查看显存使用量。

分析crash report

符号化

crash report 最有趣的部分是应用执行中止时应用的栈回溯信息,这与在调试器中停止执行时的栈trace类似但不同的是其中并未带符号信息(即函数方法名),你所看到的会是十六进制的地址和可执行代码,你需要将这些地址映射成符号,即源代码地址和行数。这个过程需要 上传到app store的二进制app文件及此文件对应的.dsym文件,文件需要完全匹配,否则符号化会不完全。使用 product->Archive命令可以将app与dsym文件打包到你的home/library/developer/xcode/archives目录下。

如果上传app二进制包到 appstore的时候添加了Archive则此应用的crash可以导入 xcode organizer的crash reports tab中。如果要分析开发过程中的crash可能就只能在Devices中view device logs里面查看crash了

异常码

crash log中以 Exception Codes: + 一个或多个十六进制value 为标志的行,这行是特定于处理器的代号,用于辨识crash的进一步信息

0xbaaaaaad: 当前log为整个系统的栈快照,并不是crash report文件(home+volume键可以取stack快照)

0xbad22222: VoIP app 由于重启太频繁而被ios中止

0x8badf00d:watchdog超时(大概是1分钟未向约定的数据空间写数据导致),比如app启动或者退出,或者响应系统事件 花费的时间太长。通常的原因一般是在主线程上做同步的网络操作,无论如何,耗时的操作应该从主线程中移除,以免阻塞主线程。

0xc00010ff: app由于过热引发的系统事件而被系统中止。

0xdead10cc: app由于在后台运行时hold on to 系统资源(比如地址簿数据库)

0xdeadfa11: app 被用户强制中止。用户长按 开机键直到出现“滑动关机”,然后长按home按钮。(需要注意的是,从多任务托盘中移除暂停的app并不会产生crash文件,因为一旦app暂停,ios即可随时将它中止,所以不会有crash文件产生)

文/纵横而乐(简书作者)
原文链接:http://www.jianshu.com/p/2052e215e4f6
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

TN2151:崩溃报告的更多相关文章

  1. 【译】理解与分析ios应用的崩溃报告

    源网址: http://developer.apple.com/library/ios/#technotes/tn2151/_index.html 当一个应用程序崩溃时,创建一份“崩溃报告”对于理解崩 ...

  2. 转 理解与分析ios应用的崩溃报告

    理解与分析ios应用的崩溃报告 源网址: http://developer.apple.com/library/ios/#technotes/tn2151/_index.html 当一个应用程序崩溃时 ...

  3. Mac OS X:禁止崩溃报告-CrashReport

    Mac OS X:禁止崩溃报告 崩溃报告就是CrashReport 至于官方的有关CrashReport的文档在Technical Note TN212 . 一般的默认情况下,当一个应用程序因为各种原 ...

  4. [Windows]_[中级]_[崩溃报告的中级解决方案]

    场景 1.在Windows上用C/C++开发软件, 经常会出现软件级别的崩溃情况, 如果用户看到这种崩溃报告, 那么一般会认为软件质量不高, 从而不想用. Windows上就会有崩溃报告这种噢给你工具 ...

  5. iOS- 全方位解析.crash文件崩溃报告

    1.前言 想来每个iOS攻城狮,都免不了要接触.crash文件 那么什么是.crash文件? iOS app的所有崩溃记录都会记录在设备上,所以对于和我一样没有集成让用户发送崩溃报告功能的iOS开发者 ...

  6. [Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]

    场景: 1. Release的程序崩溃时,崩溃报告能够让开发者查明代码哪里出了问题,用处大大的. 2. 仅仅实用VS的编译器才支持,所以MinGW就无缘了. 3. 使用了未处理异常过滤处理函数. 4. ...

  7. 看懂 游戏《Minecraft》的崩溃报告 服务端/客户端

    如何看懂Minecraft报错的关键信息. 让你如何看懂Minecraft报错 前言 一些俏皮话 寻找崩溃日志 打开崩溃日志 重要的事说三遍 下载文本编辑器 开始分析 深度分析 得出结论 修复报错 解 ...

  8. 关于崩溃报告的日志以及dump文件

    在用户使用软件的过程当中突然产生软件崩溃的问题,必须采取相关的措施去拦截崩溃产生的原因,这有助于程序员解决此类崩溃的再次发生.特别是有些难以复现的崩溃,不稳定的崩溃,更有必要去调查崩溃产生的原因.一般 ...

  9. iOS崩溃报告获取一

    在AppDelegate.m文件中实现函数 void UncaughtExceptionHandler(NSException *exception) { /** * 获取异常崩溃信息 */ NSAr ...

随机推荐

  1. UIViewController的View显示在导航栏下面如何解决?

    ios7之前的版本中UIViewController中的view在显示后会自动调整为去掉导航栏的高度的,控件会自动在导航栏以下摆放. 在iOS7中UIViewController的wantsFullS ...

  2. 【C#学习笔记】一、基础知识

    1.1数据类型(P43) 类型 别名 允许的值 sbyte System.SByte -128~127 byte System.Byte 0~255 short System.Int16 -32768 ...

  3. [转载] extern "C"的用法解析

    本文转载自: http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html   1.引言 C++语言的创建初衷是“a better ...

  4. HTML语义化标签(一)

    总所周知,现在的网页是由HTML.CSS.JS三大元素组成,而HTML是其中最重要的部分,是整个网页的骨架,CSS和js在骨架的基础上进行相应的修饰,使得网页成为一个有血有肉,可以动的“人”.如果HT ...

  5. 面向对象设计模式之Flyweight享元模式(结构型)

    动机:采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行代价——主要指内存需求方面的代价.如何在避免大量细粒度对象问题的同 时,让外部客户程序仍然能够透明地使用面向对象的 ...

  6. ECharts 是一款开源

    ECharts

  7. Android模拟器genymotion安装与eclipse 插件安装

    推荐一款Android模拟器"Genymotion",有点速度快,占用资源少,可整合eclipse.闲话少谈,看安装步骤. 1.下载地址:https://www.genymotio ...

  8. 老oj3999孤独一生

    孤独一生 Time Limit:10000MS  Memory Limit:165536KTotal Submit:23 Accepted:11 Case Time Limit:1000MS Desc ...

  9. [转载] $\mathrm{Jordan}$标准型的介绍

    本文转载自陈洪葛的博客$,$ 而实际上来自xida博客朝花夕拾$,$ 可惜该博客已经失效 $\mathrm{Jordan}$ 标准形定理是线性代数中的基本定理$,$ 专门为它写一篇长文好像有点多余$: ...

  10. IIS 内部运行机制及Asp.Net执行过程详解

    一直以来对一个Asp.net页面穿过IIS后就返回给浏览器一个HTML页面感觉很是神奇.虽然做技术这么长时间了,也曾经大致了解过一点来龙去脉,但是如果你真的问起我比较详细的过程,我还真的回答不上来,好 ...