iOS 如何解析crash 日志

来源:互联网 发布:网络空间安全 编辑:程序博客网 时间:2024/05/11 02:48

iOS 开发中我们我们难免会遇到各种crash,本地的(我自的mac上)crash xcode 会帮助我们自动解析crash 地址 定位到具体位置甚至行数,但是当我们上架之后 或者从测试人员获得的 crash 地址和 .crash文件时我们就需要自己来解析这些地址,从而来定位到我们代码的问题所在,
解析这类crash 的时候 我们需要四个文件,分别是:。crash 文件 .add 文件 .app.dSYM 文件 以及我们的解析工具文件 symbolicatecrash(具体位置在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/)
要注意的是 .add 文件 .app.dSYM 和.crash文件 的uuid 要一样 ,.crash文件的uuid 在文件的Healthy armv7 <904ff534459437aabb19a60b94afbc04> /var/mobile/ ,而其他文件的uuid 我们可以通过工具(dwarfdump)或得到 输入命令:
dwarfdump —uuid YourApp.app/YourApp
dwarfdump —uuid YourApp.app.dSYM

一切准备好了之后 我们要把他们放在以个文件加下;让后执行以下命令:
./symbolicatecrash xxx.crash xxx.app.dSYM > Control_symbol.crash
Control_symbol.crash 是你解析后要写入的文件
然后我们只需要查看Control_symbol.crash 文件就好了 ,这个文件里包含了我们想要的信息
使用这个方法的前提是我们要有 .crash 文件 而且uuid 要相同 但是当我们从服务端获取的crash 日志是一串地址时 我们就没办法使用这个方法了

这种情况下我们就需要另外的方法来解决 :
xcrun atos -arch armv7 -o …../…/…/crash/xxx.app/xxx 0x1587d7(crash地址)

当有.crash文件的时候 我们还可以直接在xcode中看crash 但是前提是我们 有.add 文件 .app.dSYM 这两个文件,且uuid 相同,放在相同目录下 使用mdimport 执行命令 mdimport foldername
这个时候我们在Xcode 中看到的crash log 就已经是解析过得log了 这个方法适合 在另外的换进下解析.crash文件
相关资料:http://blog.csdn.net/mkhgg/article/details/17247673

0 0
原创粉丝点击