解决线上crash

之前有说过如何解决crash,就是非调试情况下的,手机玩着玩着就crash了,当时的那篇文章用的是友盟,今天讲下,用系统自带的解析crash文件,找到crash的地方

1.先将符号表变成正常的可看的奔溃栈

a.直接通过Xcode连接手机中获取

device and simu..

b.view Device Log
找到具体的crash文件,有些文件可能根本不是crash,内部标示了,没有crash,这个一定要注意,导出到电脑中

图片.png

c.找到symbolicatecrash可执行文件的位置

在命令行中输入find /Applications/Xcode.app -iname 'symbolicatecrash'

获取具体的位置

➜  ~ find /Applications/Xcode.app -iname 'symbolicatecrash'
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

是我们真机使用的
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

d.找到.dSYM文件
这个就是你打包的时候,产生的文件,我们用Jenkins打包,都放到了云端,自己去下载下来就行了

注意.dSYM对应版本,即和.crash中显示的版本要对应起来。

e.设置DEVELOPER_DIR

命令行中
export DEVELOPER_DIR=`xcode-select -print-path`

f.执行symbolicatecrash命令

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash path/to/x.crash path/to/y.dSYM > z.crash

如果上边的用了 > z.crash缺没有导出来,那么我们直接在terminal中查看吧,用下面的命令行
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash path/to/x.crash path/to/y.dSYM
转换完成之后的崩溃栈,就可以看到很多信息了,这个是奔溃时候的上下文

2.如何查找具体的问题?

  • 1.表示奔溃的控制器和方法
  • 2.表示的是10进制的汇编偏移量,转成了16进制为0xC51E,但是要记住,我们实际的是带有偏移量的,但是IDA中的是没有偏移量的。
    3.可以直接去代码中查找到 WMBNewFunctionGuideController.m文件中,106行
IDA中找到具体的函数,然后找到内部的0xC51E位置,只要最后3位能对的上就行,这样可以避免偏移量
Xcode查看代码

问题总结:
4s上使用了[self.view.subviews setValue:@"YES" forKey:@"hidden"];代码,其他的手机都行,就4s不行,应该是4s的系统无法将字符串@"YES"变成布尔型的YES导致了crash,4s还是认为他是字符串

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 iOS崩溃是让iOS开发人员比较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地方很...
    齐滇大圣阅读 65,461评论 29 443
  • 如果大家是用真机在调试的过程中出现了Crash,那么请看iOS调试之 crash log分析 前言 导读:Unde...
    KODIE阅读 6,531评论 7 12
  • 前言 作为一个程序开发人员,调试程序编写过程中遇到的各种异常奔溃,是再常见不过的现象了。一般在开发过程中,我们可以...
    brilliance_Liu阅读 1,791评论 7 6
  • 本文就捕获iOS Crash、Crash日志组成、Crash日志符号化、异常信息解读、常见的Crash五部分介绍。...
    xukuangbo_阅读 1,598评论 0 0
  • 1、有一天“我”字丢了一撇,成了“找”字,为找回那一撇,“我”问了很多人,那一撇代表什么?商人说是金钱,政客说是权...
    大斌娱乐阅读 639评论 0 0