.dSYM解析.crash

来源:互联网 发布:全景视频转换软件 编辑:程序博客网 时间:2024/06/05 18:58

解析.crash

上一篇博文中介绍了如何获取.crash来获取程序崩溃信息,其中有些.crash有十分明确的错误信息,提示哪个控制器的哪个方法的哪一行出错。有些.crash却是如同天书的十六进制地址,如果不能看懂这些信息,要它何用。接下来就说说如何将看不懂的.crash解析为看得懂的.crash

解析.crash要的三个文件

  • .crash文件
  • .dSYM文件
  • symbolicatecrash

收集齐上面三个文件,说出咒语,就可以召唤出解析后的.crash。在桌面建个文件夹,将之前获取到的.crash放到之中备用。

.dSYM

dSYM文件是iOS编译后保留16进制函数地址映射信息的文件

如何生成.dSYM
配置Xcode TARGETS->Build Settings ->Build Options ->Debug information Format 的值为DWARF with dSYM File 这里写图片描述
打包软件后会自动生成

那么生成的.dSYM文件在哪?

点击Xcode->Preferences 弹出的框选最后一个Locations,
在Locations中能设置Derived Data和Archive的路径,
如果没修改过默认路径为:
/users/用户名/Library/Developer/Xcode/Archives,
可通过点击图中箭头直接跳转
(博主建议使用自定义路径,便于管理,上传app时,.dSYM要一起上传)
这里写图片描述
里面是按时间排布的文件夹,找到对应时间的文件进入,找到对应的项目,这里要找准,解析才能正确。命名的规则是项目名+时间+.xcarchive ,只要路径正确,很好找。右键显示包内容,在文件夹dSYMs下就是要找的.dSYM文件了。将.dSYM拷贝到之前桌面上准备的文件夹中,备用。

symbolicatecrash

symbolicatecrash是Xcode自带的解析工具,可以通过dSYM文件将crash文件中的16进制地址转换成可读的函数地址

博主的xcode版本是7.3.1
symbolicatecrash所在的路径是
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources

在别的博客中看到的路径有些不同,这里也列举一下
xcode6.0以前的位置:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources​
xcode6.0以后的位置:
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

也将symbolicatecrash拷贝到桌面的准备好的文件夹中。

开始解析

在命令终端输入命令,格式是 Symbolicatecrash + .crash + .dSYM > 输出到的文件 如图 大致意思是:哪个工具,通过哪个dSYM去解析哪个.crash,最后给解析好的文件取个名字
这里写图片描述

如果提示“DEVELOPER_DIR”is not defined
在终端中输入 :
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

解析完之后桌面文件夹中就会多出解析好的.crash文件,打开这个解析好的.crash,16进制的函数地址已经变成对应的函数名了,到此解析结束,。。。。。接下来就是苦苦的解bug时间了。。。。。

0 0