iOS崩溃信息总结

iOS崩溃信息总结

崩溃类型

  1. Bad Memory Access [EXC_BAD_ACCESS // SIGSEGV // SIGBUS]
    内存相关的崩溃,工具:Zombies
  2. Abnormal Exit [EXC_CRASH // SIGABRT]
    异常退出,如果main方法没有被执行就退出,则崩溃的Subtype为 LAUNCH_HANG
  3. Trace Trap [EXC_BREAKPOINT // SIGTRAP]
    与异常退出类似,如果存在debugger,则它被唤起;否则,则与异常退出的处理一致;
  4. Guarded Resource Violation [EXC_GUARD]
    访问非法资源,例如:文件描述符已经被关闭,还继续访问
  5. Resource Limit [EXC_RESOURCE]
    达到资源访问上限,这不是崩溃,而是os发出的一个通知

一些特殊异常码 参考资料

  1. 0x8badf00d 读作“ate bad food”,这个异常一般是因为系统监视器(watch dog)发现超时现象,终止app抛出,比如启动或终止超时,或者是响应系统事件超时。

    系统事件列表:
    application:didFinishLaunchingWithOptions:
    applicationWillResignActive:
    applicationDidEnterBackground:
    applicationWillEnterForeground:
    applicationDidBecomeActive:
    applicationWillTerminate:

  2. 0xbad22222 标志VoIP类应用因为频繁启动终止。

  3. 0xdead10cc 读作“dead lock”,当应用在后台运行时,由于占用(hold onto)系统资源(比如通讯录数据库),被操作系统终止。

  4. 0xdeadfa11 读作“dead fall”,标志应用程序可能因为无响应被用户强行终止。

  5. 0xbaaaaaad 当前log是整个系统的快照,而不是崩溃报告;触发机制:home键+音量键,通常是用户不小心创建的

  6. 0xc00010ff:系统响应热(thermal)事件,导致app被杀掉;通常与特定的手机或环境有关。

崩溃信息参考

  1. Incident Identifier: 崩溃报告的id编号;
  2. CrashReporter Key:与device id一一对应,可以理解为device id的MD5值;
  3. Binary images:崩溃时已经加载的二进制文件;

符号化iOS Crash文件的3种方法参考资料

  1. 使用XCode

    需要3个文件,把它们放在一个目录,然后把.crash文件拖到Device Logs,选中该log,点击菜单“符号化”即可;

    1. crash报告(.crash文件)
    2. 符号文件 (.dSym文件)
    3. 应用程序文件 (appName.app文件,把IPA文件后缀改为zip,然后解压,Payload目录下的appName.app文件), 这里的appName是你的应用程序的名称。
  2. 使用命令行工具symbolicatecrash

    1. 依然将“.app“, “.dSYM”和 ".crash"文件放到同一个目录下
    2. 输入命令:
    export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer 
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash appName.crash appName.app > appName.log 
    
  3. 使用命令行工具atos

    语法:atos [-o AppName.app/AppName] -l loadAddress [-arch architecture] queryAddress...

    1. -o和-l参数必不可少,-arch参数可以忽略,查询地址可以多个,例如:Last Exception Backtrace中所有的地址
    2. -o参数的二进制包可以是ipa包中的,也可以从dSYM文件中获取,参考以下示例

    示例:2种方法均可,

       xcrun atos -o OneAPMDemoTest.app.dSYM/Contents/Resources/DWARF/OneAPMDemoTest -l 0x1000dc000 -arch arm64 0x1001a5a58
       xcrun atos -o OneAPMDemoTest.app/OneAPMDemoTest -l 0x1000dc000 0x1001a5a58

其他相关信息

  1. UUID: 每一个可执行程序都有一个build UUID来唯一标识
    • crash文件中查询:
      1. crash文件中的位置:
        Binary Images:
        0x1000dc000 - 0x100237fff OneAPMDemoTest arm64 <0328eee551ce3e2da04c1cd61cec89c4> /var/mobile/Containers/Bundle/Application/B1554786-0F88-4409-9D1A-2011E7B2679D/OneAPMDemoTest.app/OneAPMDemoTest
      2. 查询“Binary Images:”,显示2行
           $ grep --after-context=1 "Binary Images:" *crash  //显示前二行,命令更通用
    3. 在crash文件中查询“appName armv”,显示1行;
           $ grep "OneAPMDemoTest arm64" *crash //命令更具体,每次需要修改
    4. 显示:
           0x1000dc000 - 0x100237fff OneAPMDemoTest arm64 <0328eee551ce3e2da04c1cd61cec89c4> /var/mobile/Containers/Bundle/Application/B1554786-0F88-4409-9D1A-2011E7B2679D/OneAPMDemoTest.app/OneAPMDemoTest 
* 二进制文件中查询:  
       $xcrun dwarfdump --uuid OneAPMDemoTest.app/OneAPMDemoTest
       UUID: 5D3C9DFD-9CAD-3C8A-889D-E95E532EC721 (armv7) OneAPMDemoTest.app/OneAPMDemoTest
       UUID: 0328EEE5-51CE-3E2D-A04C-1CD61CEC89C4 (arm64) OneAPMDemoTest.app/OneAPMDemoTest
* dSYM文件中查询:
    使用mdls查看文件属性
        $ mdls OneAPMDemoTest.app.dSYM
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 本文就捕获iOS Crash、Crash日志组成、Crash日志符号化、异常信息解读、常见的Crash五部分介绍。...
    xukuangbo_阅读 1,566评论 0 0
  • 前言 iOS崩溃是让iOS开发人员比较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地方很...
    齐滇大圣阅读 65,224评论 29 443
  • [这是第14篇] 序: iOS Crash问题是iOS开发中难以忽视的存在,本文就捕获iOS Crash、Cras...
    南华coder阅读 9,845评论 21 116
  • 八月的天气带着那种热也不干脆冷也不干脆的厌烦劲。 白米粥咕噜咕噜冒泡的声音和从老锅中晕散出来的玉米香气叫醒了我...
    士多啤梨ara阅读 178评论 0 1
  • 知道道理,做不好事情,是信息爆炸时代的通病。如何做到“知行合一”,向王圣人靠近呢? 知行不合一,...
    悠然悠然吖阅读 247评论 2 1