iOS 崩溃日志分析(个人总结,最实用)
要分析奔溃日志需要三个文件:crash日志,symbolicatecrash分析工具,.dSYM符号集
0. 在桌面创建一个crash文件夹
1. 需要Xcode自带的崩溃分析工具symbolicatecrash,这个文件的位置参考:/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
快速找到的方法:打开finder后右键code.app 显示包内容然后 /Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
将symbolicatecrash 拷贝到桌面的crash文件夹中
2. 找到崩溃程序对应的.dSYM文件,这个文件是每个打包的程序都唯一对应的,所以每次打测试包的时候就要注意提前保存
寻找.dSYM文件的位置:Xcode->window->organizer 选择Archives(打测试包的时候就在这个位置,可以直接操作)右键show in finder 可以看到你的程序文件,再右键这个文件显示包内容有一个dSYMS文件夹,点击进去,将.dSYM文件拷贝到桌面上的crash文件夹
3.找到你崩溃时的crash文件,位置:Xcode->window->Devices->选中测试手机,点击views Devices Logs,根据时间点找到你的崩溃日志,右键Export 到桌面,再将这个crash文件放入桌面的crash文件夹
4.打开终端,进入你的crash文件夹:/Desktops/crash 然后使用命令:./symbolicatecrash ./*.crash ./*.app.dSYM>symbol.crash 如果出现解析过程就说明解析成功,这个时候再返回你的crash文件夹打开crash文件,就能够看到解析后的crash,可以直接定位奔溃位置,奔溃函数名也能看到
5.如果执行命令失败出现Error:"DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.
需要先执行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer 命令后再执行./symbolicatecrash ./*.crash ./*.app.dSYM>symbol.crash
6.如果出现Error: can't find tool named 'otool' in the macosx SDK or any fallback SDKs at ./symbolicatecrash line 115.参照http://stackoverflow.com/questions/33358799/cant-find-tool-named-otool-in-the-macosx-sdk-or-any-fallback-sdks-at-symbol以及http://www.tuicool.com/articles/VzEBBn
7. 补充说明:
cat ./symbol.crash
可以在终端打开解析后的crash文件,再使用
dwarfdump --lookup 0x000cf358 --arch armv7 appname.app.dSYM/
根据奔溃位置地址信息找到指定位置
Line table dir : '/Users/zhy/Downloads/ios/vlink_app_xunyi/xunYi7/library/ASIHttpRequest'
Line table file: 'ASIDownloadCache.m' line 320, column 3 with start address 0x00000000000cf340
注:关于.dSYM文件,当程序运行之后直接去products中右键show in finder 也能找到
iOS 崩溃日志分析(个人总结,最实用)的更多相关文章
- iOS崩溃日志分析-b
1名词解释 1.1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID,目的是为了唯一识别这个文件. 1.2. dwarfdump 苹果提供的命令行工具,其中一些功能就是查 ...
- [转]IOS 崩溃日志分析
以下是一个crash log示例: // 1: Process Information Incident Identifier: 30E46451-53FD--896A-457FC11AD05F Cr ...
- iOS崩溃日志分析
Incident Identifier: 55864905-937C-4172-B435-2ACA13D3070ECrashReporter Key: b85cab13431711060a5fab55 ...
- iOS应用崩溃日志分析 iOS应用崩溃日志揭秘
转自:http://www.raywenderlich.com/zh-hans/30818/ios%E5%BA%94%E7%94%A8%E5%B4%A9%E6%BA%83%E6%97%A5%E5%BF ...
- 【转】iOS应用崩溃日志分析
作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! ...
- iOS应用崩溃日志分析
转自raywenderlich 作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应 ...
- iOS crash日志分析
iOS crash日志分析 一. 寻找crash文件:手机崩溃后的ips或者crash文件(ips文件可以直接修改成crash文件,直接改后缀名就可以了),这里说下如何拿到crash文件 1. 把运行 ...
- 友盟崩溃日志分析工具 - dSYMTools
公司的项目中集成了UM的统计功能,UM统计可以统计app的用户新增,版本分布,日志崩溃等信息,打开错误分析按钮,则可能会看到很多崩溃的日志信息 选择编辑可以选择更多的版本号 点击列表中的一个崩溃日志, ...
- iOS崩溃日志ips文件解析
iOS崩溃日志ips文件解析 一 简介 测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下 ...
随机推荐
- 上下文(Context)和作用域(Scope)
函数的每次调用都有与之紧密相关的作用域和上下文.从根本上来说,作用域是基于函数的,而上下文是基于对象的. 换句话说,作用域涉及到所被调用函数中的变量访问,并且不同的调用场景是不一样的.上下文始终是th ...
- frp使用总结
笔者所知并成功实现内网穿透的方法: 花生壳 (需要花8块钱,使用花生壳给的二级域名,这里不做介绍) ngrok (免费,但是每次重启服务二级域名会变,付费的$5每月不会变) frp(开源免费,需要有自 ...
- CSS中关于linebox的baseline位置移动的理解
前言 最近看到一篇文章,弗里得木的翻译笔记,里面有个问题没有解决,就是linebox的baseline为什么会移动呢? 在讨论这个问题之前读者需要对 默认值baseline 以及 其他属性值(天镶的博 ...
- Android之侧滑导航栏
今天学习的新内容是侧滑导航栏,我想大家肯定都比较熟悉了,因为这个效果在qq里面也有,最近一直跟室友们玩的游戏是快速让自己的头像的点赞量上千.当然我的效果跟qq是没有办法比的,因为那里面的功能是在是太强 ...
- 云端基于Docker的微服务与持续交付实践
云端基于Docker的微服务与持续交付实践笔记,是基于易立老师在阿里巴巴首届在线技术峰会上<云端基于Docker的微服务与持续交付实践>总结而出的. 本次主要讲了什么? Docker Sw ...
- 【起航计划 037】2015 起航计划 Android APIDemo的魔鬼步伐 36 App->Service->Remote Service Binding AIDL实现不同进程间调用服务接口 kill 进程
本例和下个例子Remote Service Controller 涉及到的文件有RemoteService.java ,IRemoteService.aidl, IRemoteServiceCallb ...
- C语言指针的陷阱
C语言指针的陷阱 分类: C/Cpp 转自:http://blog.csdn.net/porscheyin/article/details/3461670 “C语言诡异离奇,陷阱重重,却获得了巨大 ...
- android Handler、Thread和Runnable
android里面的创建的Handler对象并不是新建一个新的线程,而是在主线程执行,主线程的消息队列中循环. java中实现一个线程有两种方法,一种是继承Thread类,一种是实现Runnable接 ...
- 深入浅出 关于SQL Server中的死锁问题
深入浅出 关于SQL Server中的死锁问题 博客2013-02-12 13:44 分享到:我要吐槽 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相 ...
- JavaScript 三种工厂模式
标签(空格分隔): JavaScript 简单工厂模式是工厂函数返回实例化对象或者对象,工厂函数作为一个方法. 工厂方法模式是工厂函数不作改变,将子类放在工厂原型中:工厂函数返回对应的实例化对象:re ...