iOS crash 追终 ,iOS 如何定位crash 位置

https://developer.apple.com/library/ios/technotes/tn2151/_index.html

错误分析是基于设备中的crash log 与 编译文件时生成的dsYM文件相结合得出的结果,crash log 中包含应用的 crash trace stack,dsym中包含应用的符号表信息,符号表信息用于匹配程序中的文件,函数,代码,行号。

一、可用crash trace 追踪的crash

二、low memery 是追踪不到的因为没有对应以下的这类型的符号

1)EXC_BAD_ACCESS

SIGSEGV: 通常由于重复释放对象导致,这种类型在切换了ARC以后应该已经很少见到了。

SIGABRT:  收到Abort信号退出,通常Foundation库中的容器为了保护状态正常会做一些检测,例如插入nil到数组中等会遇到此类错误。
SEGV:(Segmentation  Violation),代表无效内存地址,比如空指针,未初始化指针,栈溢出等;

SIGBUS:总线错误,与 SIGSEGV 不同的是,SIGSEGV 访问的是无效地址,而 SIGBUS 访问的是有效地址,但总线访问异常(如地址对齐问题)

SIGILL:尝试执行非法的指令,可能不被识别或者没有权限
2)EXC_BAD_INSTRUCTION

3)EXC_ARITHMETIC

不用第三方工具,如何分析?

首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.dSYM文件。
其次,验证xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。
验证方法:
1)xxx.app。dwarfdump --uuid mobileguard.app/mobileguard
2)xxx.dSYM。dwarfdump --uuid mobileguard.app.dSYM/Contents/Resources/DWARF/mobileguard
3)xxx.crash。
确保三者uuid一致以后,用symbolicatecrash工具生成易读的日志信息。

先准备环境:
1)链接symbollicatecrash到/usr/bin/中,就可以直接使用sybollicatecrash命令。ln -s /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /usr/bin/symbolicatecrash
2)设置xcode DEVELOPER_DIR。export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer”
然后执行命令:symbolicatecrash m.crash mobileguard.app.dSYM > n.crash

当然是有 分析工具可以用的:

Crashlystics (twitter,使用自动集成工具,通过上传dsym文件形式,强烈推荐使用,简单,好用,定位问题快,准)

Bugly (腾讯,用相应的jar 将dsym分析后上传至腾讯服务器)

MoClick (友盟,需下载crash log 并用相应的工具解析)

Hockeyapp (微软,需上传dsym文件,收费,有自动集成工具)

 

转载于:https://www.cnblogs.com/codetime/p/6124197.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值