美文网首页
iOS App Crash怎么符号化

iOS App Crash怎么符号化

作者: 小如99 | 来源:发表于2018-01-20 15:05 被阅读102次

    这篇文章,我不说最基本的怎么看crash的栈,怎么定位crash的thread,希望看这篇文章的童鞋都有这个基础。这篇文章我主要想记录一下,上传到Fabric或Bugly或者从手机里拷贝出来的crash log,只有地址,没有项目函数该怎么看。如下图:

    image.png image.png

    看到这样的crash log,是不是一脸懵逼,只能猜出大概就是FMDB里出问题了,但是具体哪里出问题,出了啥问题,都不知道,没定位。

    之所以出现这样的问题是因为没有符号化,符号化就是将系统的内存地址与项目的函数名、文件名、行号进行映射,快速并准确地定位用户APP发生Crash的代码位置,简单的说就是对APP发生Crash的程序堆栈进行解析和还原。一般在哪台机器打包的,就去哪台机器看crash log,Xcode会自动帮你解析,如果想了解更多,请参考文章 分析iOS Crash文件:符号化iOS Crash文件的3种方法
    符号化需要三个文件:

    1. crash报告(.crash文件)
    2. 符号文件 (.dsymb文件)
    3. 应用程序文件 (appName.app文件,把IPA文件后缀改为zip,然后解压,Payload目录下的appName.app文件), 这里的appName是你的应用程序的名称。

    项目集成第三方上传crash log(如Fabric /Bugly/友盟),一般都会要求你上传对应的符号化文件,它会自动帮你符号化crash log。

    定位.dsymb文件

    • 方式一
      通过打包方式获取,
      Xcode -> Window -> Organizer -> Show xcarchive file in Finder -> Right Click Your xcarchive file -> Select "Show Package Contents"
      附上详细动画教程
      定位dsymb文件.gif

    如果进去还是没有.dsymb文件,请进入Project Build Settings -> Generate Debug Symbols 确保它的值是Yes

    image.png
    • 方式二
      如果不想通过打包方式拿到.dsymb文件,则直接定位Build后的.app文件,在该目录下面可以找到.dsymb文件,


      image.png
      image.png

    如果没有,请进入Project Build Settings > Build Options > Debug Information Format 确保它的值是DWARF with dSYM file,这样你在Products目录下,定位.app文件的目录下就有.dsymb文件了。

    得到.dsymb文件就可以进行符号化了,不管是instrument还是第三方的,都可以使用。

    但是有点特别需要说明,如果你的IPA包是支持bitcode的,那即便你上传了符号化文件,也是解析不了的,只会显示__hidden(排除上架了App Store,从iTunes下载.dsymb),如何解决?
    用dsymutil命令:
    在.dSYMs文件夹同目录下找到BCSymbolMaps文件夹(file.xcarchive/BCSymbolMaps)再用下面命令,就可以啦。

    dsymutil --symbol-map PATH_TO_BCSYMBOLMAPS_DIR downloaded.dSYM
    

    有多个的话,循环:

    for d in dSYMs/*
       dsymutil --symbol-map path/to/file.xcarchive/BCSymbolMaps $d
    end
    

    参考文章:
    分析iOS Crash文件:符号化iOS Crash文件的3种方法
    crash log调用栈看不到的解决方案(debug symbols不起作用)
    Bugly iOS 符号表配置
    Xcode - There are no dSYMs available for download
    Swift bitcode Crashlytics __hidden

    相关文章

      网友评论

          本文标题:iOS App Crash怎么符号化

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