通过dSYM文件定位分析crash

我们应用上线后往往会遇到各种各样的crash。其实当你的app 在手机上crash的时候,会在手机上自动生成一个崩溃日志,也就是我们说的Crash Log。CrashLog的位置位于:

iPhone设备的var/mobile/Library/Logs/CrashReporter

一、获取崩溃日志的方法

1、通过 iTunes Connect

对于已经上线的应用,如果用户同意上传相关信息(具体操作为:打开了诊断与用量这个选项设置->隐私->诊断与用量 )。那么作为开发者,你想要获取到你的用户的崩溃日志的话就得通过 iTunes Connect 了。在 iTunes Connect 上的 Manage Your Applications -> View Details -> Crash Reports。


2、获取测试机的crash log

通过Xcode获取到崩溃日志,方法是Xcode->Window->Devices

3、通过友盟等第三方统计获取

二、以友盟统计为例,如何分析崩溃日志

我们项目默认都接了友盟统计,因此每天上班的第一个任务就是打开友盟查看崩溃信息。通常的崩溃信息是长这样子的。


4851100-d483041bcc8cc2df.png
图一.友盟崩溃日志错误详情

步骤一、乍一看日志,看不懂。但我们将注意力放在高亮的那几行,这里就是出现crash的内存地址。


4851100-f529c863ecbe4557.png
图一.错误内存地址

步骤二、当我们点击地址,会弹出一个的提示窗。

4851100-da95a94209613017.png
图三.点击内存地址提示框

步骤三、打开终端,进入到  *.dSYM 文件  所在的文件夹。(.dSYM文件为每次编译后自动生成,为了方便应用上线后定位错误,备份好.dSYM文件是一个良好的习惯)

步骤四、将步骤二弹窗的后半句命令行复制到终端,将后面的  “$dSYMPath” 替换成当前*.dSYM 的路径。以下是我的命令行:

dwarfdump --arch=arm64 --lookup 0x1002c9444 NewLingHit882.app.dSYM 

步骤五、找到崩溃代码位置


4851100-1cacbda1b8c3217a.png
图四.错误位置

三、通过第三方工具定位crash位置

除了终端定位错误位置外还能用一个第三方的工具dSYMTool协助定位到项目crash的代码,这里附上dSYMTool

只需将.dSYM文件拖入,并将错误内存地址copy在对应位置,即可快速找到对应的方法。


4851100-60bac9c548d2ac7a.png
图五.利用dSYMTool定位错误

猜你喜欢

转载自blog.csdn.net/weixin_34372728/article/details/87636002
今日推荐