iOS --------Crash 分析(一)
iOS Crash 分析(文一)- 开始
1. 名词解释
1. UUID
一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID。目的是为了唯一识别这个文件。
2. dwarfdump
苹果提供的命令行工具,其中一些功能就是查看可执行文件件或库文件的UUID
3. symbolicatecrash
一个苹果提供的脚本。可以将crash日志符号化为可读的堆栈信息。
4. atosl
苹果提供的命令行工具,可以将crash的base_address和load_address转化为可读的堆栈信息。symbolicatecrash就是使用这个命令来做符号化的。
2.如何获取Crash日志
1.模拟器崩溃
模拟器崩溃后可以在“~/Library/Logs/DiagnosticReports/”下找到crash日志。
2.真机崩溃
1.Xcode获取日志
手机和mac连接后,打开Xcode选择window进入Organizer(快捷方式是 Shift-CMD-2),在 Organizer 窗口上, 选中 Devices 标签栏. 在左侧的导航面板上,选中 Device Logs, 如下图所示:
选择对应设备的Device Logs菜单,就可以看到崩溃日志。
打开图最上边的Device Logs菜单就可以看到mac曾经同步过的iOS设备的崩溃日志。
2.手动获取日志
日志存放的路径 ~/Library/Logs/CrashReporter/MobileDevice/DEVICE_NAME
DEVICE_NAME是你想要查看的设备。
下面是我的终端输出的信息:
➜ DiagnosticReports pwd
/Users/zhuolaiqiang/Library/Logs/DiagnosticReports
➜ DiagnosticReports ls
QQ_2014-05-30-132026_Anyhacker.crash atosl_2014-06-04-151416_Anyhacker.crash eclipse_2014-05-29-192522_Anyhacker.crash eclipse_2014-06-02-145714_Anyhacker.crash
SogouInput_2014-05-29-151154_Anyhacker.crash atosl_2014-06-04-151447_Anyhacker.crash
3.符号化
1.利用Xcode符号化
app在真机设备上Crash后,我们可以让iOS设备和mac连接,然后打开Xcode选择window进入Organizer(快捷方式是 Shift-CMD-2),在 Organizer 窗口上, 选中对应设备的 Device Logs标签,然后找到对应app日志文件,如图所示:
这样就可以看到已经符号化完毕的日志。
2.利用symbolicatecrash脚本符号化
symbolicatecrash是苹果随Xcode一起提供的专门用来做崩溃日志符号化的脚本工具(perl)。
symbolicatecrash存放路径是
"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash"。
使用方法是:
symbolicatecrash xx.crash xx.DSYM
xx.crash:需要符号化的崩溃日志文件
xx.DSYM:编译APP时产生的DSYM文件,此文件可以不指定,symbolicatecrash会在硬盘内自动搜索和匹配该文件(前提是你的硬盘内存有这个文件)
iOS --------Crash 分析(一)的更多相关文章
- iOS Crash 分析 符号化崩溃日志
参考: http://blog.csdn.net/diyagoanyhacker/article/details/41247367 http://blog.csdn.net/diyagoanyhack ...
- IOS crash分析
此处不讨论具体的如何根据.dsym文件解析crash log的方式. 什么是崩溃: 不希望出现的中断,APP收到了系统发出的unhandle signal,来源主要由系统内核,处理器,或者应用程序本身 ...
- iOS开发之Crash分析,以及收集
一 先谈谈iOS的Crash收集方式: 1. APP 发生crash,用户手机手机上肯定会有crash纪录,当然删除了该app,或是删了再装 crash纪录还是没了. 2. 如果用户设置-隐私 同 ...
- iOS crash日志分析
iOS crash日志分析 一. 寻找crash文件:手机崩溃后的ips或者crash文件(ips文件可以直接修改成crash文件,直接改后缀名就可以了),这里说下如何拿到crash文件 1. 把运行 ...
- 了解和分析iOS Crash
WeTest 导读 北京时间凌晨一点,苹果一年一度的发布会如期而至.新机型的发布又会让适配相关的同学忙上一阵子啦,并且iOS Crash的问题始终伴随着移动开发者.本文将从三个阶段,由浅入深的介绍如何 ...
- [转][iOS Crash文件分析]-如何使用symbolicatecrash工具
上传一软件,被拒了,自己测试了n遍都未出现这个情况,今天用symbolicatecrash工具分析了一下苹果提供的Crash文件,最终查到是 - (void)mapView:(MKMapView *) ...
- iOS: Crash文件解析(一)
iOS Crash文件的解析(一) 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退.脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断. ...
- IOS Bug分析
异常代码是SIGABRT.通常, SIGABRT 异常是由于某个对象接收到未实现的消息引起的. 或者,用简单的话说,在某个对象上调用了不存在的方法. iOS应用崩溃日志分析 分析iOS Crash文 ...
- 漫谈iOS Crash收集框架
漫谈iOS Crash收集框架 Crash日志收集 为了能够第一时间发现程序问题,应用程序需要实现自己的崩溃日志收集服务,成熟的开源项目很多,如 KSCrash,plcrashreporter,C ...
随机推荐
- 采用Lambda表达式快速实现实体模型对象转换到DTO
在项目中,采用code first时建立的模型对象不能直接用于数据传输,需要从新根据需求建立Dto对象 为什么需要建立Dto对象呢? DTO即数据传输对象.之前不明白有些框架中为什么要专门定义DTO来 ...
- test imetro
haha hahah2 hahah3 hahah4 text int main() { cout << "helloworld" << endl; } pi ...
- java cookie 工具类
package com.xxx.xxx.xxx.xxx; import java.net.URLDecoder; import java.net.URLEncoder; import javax.se ...
- Jsonp原理就是这么简单
原理就是:包裹数据的js数据文件,自动执行,找到目标函数,通过传参,把数据注入进去. 当你打开本篇博文,证明你已经大体知道了Jsonp的作用了. 但如果需要我介绍一下,我也可以简单介绍: 简单说,就是 ...
- web-inf目录和meta-inf目录
/WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/ 包含了站点所有用的 class 文件,包括 se ...
- 在C#中调用EXE文件
1. 如果exe文件的返回值是int类型,标识操作执行的结果是否成功,例如: class Program { static int Main(string[] args) { return args. ...
- PMP备考_第六章_项目时间管理
项目时间管理 前言 项目时间管理是项目管理中最难的一个环节,与个人时间管理类似,团体的效率如果管理不当,是低于个人效率的,为了管理好时间,从预估,执行到反馈均需要严格的分析和处理.如果制定的计划是无法 ...
- [原创]MySQL innodb_rollback_on_timeout参数对锁的影响
环境:Server version: 5.6.21-log MySQL Community Server (GPL) 前提提要: innodb_rollback_on_timeout是 ...
- 浏览器地址栏输入一个URL后回车,将会发生的事情
浏览器向DNS服务器查找输入URL对应的IP地址. DNS服务器返回网站的IP地址. 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接 浏览器获取请求页面的html代码. 浏览器在显示窗 ...
- android ADT 无法查看第三方jar源代码
Source not foundThe JAR of this class file belongs to container 'Android Private Libraries' which do ...