美文网首页
iOS .Crash文件分析处理办法 -symbolicatec

iOS .Crash文件分析处理办法 -symbolicatec

作者: 暗物质 | 来源:发表于2016-07-06 16:53 被阅读1482次

    今天审核AppStore被拒,说是有crash错误,并给了.crash文件。但是真机调试模式下没有崩溃,但是在AdHoc的版本下会崩溃,至今不知道为什么。所以我现在想到的只能通过.crash寻找崩溃咯。😢

    经过一番折腾,找到了问题(一个粗心造成的问题,还是不知道为何真机调试不会出现这问题)。故现在想整理一个详细的笔记:

    崩溃分析方式:命令行解析Crash文件

    通过Mac自带的命令行工具解析Crash文件需要具备三个文件

    • symbolicatecrash,Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数。
    • 我们打包时产生的dSYM文件。
    • 崩溃时产生的Crash文件。

    1、获取.crash文件

    获取崩溃信息方式:

    • 使用友盟、蒲公英等第三方崩溃统计工具。->iOS 友盟第三方崩溃统计的解析-dSYM
    • 自己实现应用内崩溃收集,并上传服务器。
    • Xcode-Devices中直接查看某个设备的崩溃信息。
    • 使用苹果提供的Crash崩溃收集服务。

    这篇文章先只用第四个方式-审核被拒给我的.crash文件,其他方式以后讨论。

    2、获取 .app 和 .app.dSYM 文件

    2.1、步骤:

    1、Xcode-Window-Organize找到要检查的对应Archives找到App-右击-Show in Finder

    2、右击 .xcarchive 文件-显示包内容

    3、分别复制dSYMs文件夹下的 **.app.dSYM 文件和 Products->Applications文件夹下的 app文件放入 .crash 文件所在的crash文件夹中(文件夹自己建的)。

    2.2、dSYM 符号集介绍:

    • 符号集是我们对ipa文件进行打包之后,和.app文件同级的后缀名为.dSYM的文件,这个文件必须使用Xcode进行打包才有。
    • 每一个.dSYM文件都有一个UUID,和.app文件中的UUID对应,代表着是一个应用。而.dSYM文件中每一条崩溃信息也有一个单独的UUID,用来和程序的UUID进行校对。
    • 我们如果不使用.dSYM文件获取到的崩溃信息都是不准确的。
    • 符号集中存储着文件名、方法名、行号的信息,是和可执行文件的16进制函数地址对应的,通过分析崩溃的.Crash文件可以准确知道具体的崩溃信息。

    当程序崩溃的时候,我们可以获得到崩溃的错误堆栈,但是这个错误堆栈都是0x开头的16进制地址,需要我们使用Xcode自带的symbolicatecrash工具来将.Crash和.dSYM文件进行符号化,就可以得到详细崩溃的信息。

    3、获取symbolicatecrash工具

    1、打开终端输入以下命令:

    find /Applications/Xcode.app -name symbolicatecrash -type f
    
    我找到的是:
    
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
    

    2、用命令将symbolicatecrash拷贝到桌面的crash文件夹里面,与.app和.app.dSYM放一起

    cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/***/Desktop/crash
    

    4、开始命令行解析Crash文件

    1、打开终端用命令切换到桌面的crash目录下:

    cd /Users/***/Desktop/crash
    

    2、执行命令

    ./symbolicatecrash /Users/***/Desktop/crash/*.crash /Users/***/Desktop/crash/*.app.dSYM > jieguo.crash
    
    2.1、 如果上面命令不成功,需要使用下面命令设置一下导出的环境变量,然后重复上面解析的操作。
    
    export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
    

    3、解析完成后会生成一个新的.Crash文件,这个文件中就是崩溃详细信息。

    解析前 解析后

    使用友盟、蒲公英等第三方崩溃统计工具获取的信息可以用如下方式解析iOS 友盟第三方崩溃统计的解析-dSYM

    相关文章

      网友评论

          本文标题:iOS .Crash文件分析处理办法 -symbolicatec

          本文链接:https://www.haomeiwen.com/subject/oipkjttx.html