1.符号化crash日志需要3样东西:

1).crash日志本身(如:example.crash),从Xcode的organizer导出或者来自Itunes Connect.

2).crash日志所对应的.app包(如:example.app)如果你有的是.ipa包,你可以解压后在Payload/文件夹下获得.app包

3).crash日志多对应的.dSYM包

2.开始符号化之前,先检查一下以上3样东西是否相对应(UUID):

crash日志中可以看到类似一下内容:

...
Binary Images:
0xe1000 - 0x1f0fff +example armv7 <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff dyld armv7s <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...

说明,这个二进制镜像名为 example.app/example,UUID为 aa5e633efda8346cab92b01320043dc3 .

可以用以下命令检查.app的UUID:

dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example

检查.dSYM文件的UUID:

dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example

3.使用symbolicatecrash脚本

如果是Xcode 6.1,使用:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log

如果找不到该脚本,使用:

find . -name symbolicatecrash

用终端查找和crash日志中的uuid一只的符号文件:

mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"

如果遇到 "DEVELOPER_DIR" is not defined 的报错,执行以下命令:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

2.使用终端符号化日志:

xcrun atos -o MyApp.app/MyApp -arch armv7 -l 0xb7000 -f MyApp.crash

其中0xb7000就是crash日子中紧跟"Binary Images:"后面的地址

参考:

http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/how-to-solve-symbolication-problems

http://stackoverflow.com/questions/1460892/symbolicating-iphone-app-crash-reports

Crash日志符号化的更多相关文章

  1. iOS Crash 分析 符号化崩溃日志

    参考: http://blog.csdn.net/diyagoanyhacker/article/details/41247367 http://blog.csdn.net/diyagoanyhack ...

  2. iOS Crash日志

    Understanding Crash Reports on iPhone OS https://developer.apple.com/videos/wwdc/2010/?id=317 http:/ ...

  3. iOS应用的crash日志的分析基础

        Outline如何获得crash日志如何解析crash日志如何分析crash日志     1. iOS策略相关     2. 常见错误标识     3. 代码bug 一.如何获得crash日志 ...

  4. Android Native crash日志分析

    在Android应用crash的类型中,native类型crash应该是比较难的一种了,因为大家接触的少,然后相对也要多转几道工序,所有大部分对这个都比较生疏.虽然相关文章也有很多了,但是我在刚开始学 ...

  5. iOS--崩溃日志的格式化分析---格式化crash日志

    工作中难免或碰到crash,如果是开发环境,碰到简单的crash还能重现下,如果不能重现的话,我们只能去分crash文件了. 首先看下面的crash问题,说句实话一看这个我是拒绝的,这怎么找原因啊,头 ...

  6. Crash日志分析

    从Crash文件出发解决bug的一般步骤,分三步: a, 获取设备上的崩溃日志. b, 分析崩溃日志,找到报错位置(定位到函数和代码行数). c, 打开代码,改bug. 1, 获取设备日志 1. 在可 ...

  7. ios crash的原因与抓取crash日志的方法

    首先我们经常会闪退的异常有哪些呢?crash的产生来源于两种问题:违反iOS策略被干掉,以及自身的代码bug. 1.IOS策略 1.1 低内存闪退 前面提到大多数crash日志都包含着执行线程的栈调用 ...

  8. android 程序崩溃crash日志的捕捉

    android 程序崩溃crash日志的捕捉 之前在项目开发过程中,一直会遇到程序崩溃了,但是测试組的哥哥们又没及时的导出日志.... 后来在诳群的时候听别人说起,腾讯有那么一个叫bugly的东西 将 ...

  9. iOS解析crash日志:

    iOS解析crash日志:我们在ios开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应用,或者是rele ...

随机推荐

  1. 表格CSS样式美化

    1. 单像素边框CSS表格 这是一个很常用的表格样式. <!-- CSS goes in the document HEAD or added to your external styleshe ...

  2. 模拟Jquery选择器

    目前实现的功能有以下几点: 1.$("#adom"); // 返回id为adom的DOM对象 2.$("a"); // 返回一个a标签的数组 3.$(" ...

  3. JS对象的几个方法介绍

    1.hasOwnProperty 判断是不是对象自身的属性,如果是继承的返回false否则true function Fn(){ } Fn.prototype.num = 10; var obj = ...

  4. Keepalived 使用指南

    Keepalived 使用指南 1.    简介 负载均衡是虚拟服务的一种好的处理方案.当设计一种负载均衡的拓扑时一定要考虑到如下两点: 真实服务器的可用性使用健康检测机制. 负载均衡器的可用性使用故 ...

  5. sql order by 排序多个字段

    order by 多个字段,每个字段后面都有排序方式,默认ASC 例如:select table a order by a.time1 ,a.time2 desc,a.time3 asc

  6. php + Redis 写的类似于新浪微博的feed系统

    最近接了一个feed系统的外包,类似于微博那种!客户端是ios和android,服务器用的php,数据库用的是redis.分享下服务器和数据库部分的功能!希望对大家有帮助. 关于redis的介绍,大家 ...

  7. Criteria查询数据

    Criteria介绍: Criteria查询是Hibernate提供的一种查询方式,与HQL基于字符串的查询形式完全不同.Hibernate提供了org.hiberanee.Criteria 接口.o ...

  8. 在做excel导出时如何将excel直接写在输出流中

    之前做excel导出时,我都是先将文件写在服务器上,然后再下载下来,后来发现原来可以直接将文件写在输出流里边. 下面是一个小demo: package com.huaqin.fcstrp.util; ...

  9. ASP.NET 运行时详解 揭开请求过程神秘面纱

    对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...

  10. C#设计模式——命令模式(Command Pattern)

    一.概述通常来说,“行为请求者”与“行为实现者”是紧耦合的.但在某些场合,比如要对行为进行“记录.撤销/重做.事务”等处理,这种无法抵御变化的紧耦合是不合适的.在这些情况下,将“行为请求者”与“行为实 ...