美文网首页
iOS 使用.dSYM文件来符号化崩溃信息

iOS 使用.dSYM文件来符号化崩溃信息

作者: sunxu_cocoa | 来源:发表于2020-04-03 10:43 被阅读0次

    .dSYM文件

    是debugger Symbols 的简称,是一个符号表文件,保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,包括文件名、函数名、行号等.

    .crash文件

    奔溃文件,当我们APP崩溃时会生成.crash文件,自动保存在设备本地,App上线以后苹果就会自动捕捉崩溃信息,当App出现Crash后iOS系统就会记录崩溃日志并上传到Appple的服务器。前提是需要用户同意 “与应用开发者共享”。
    步骤为 设置->隐私->诊断与用量->与应用开发者共享
    关于崩溃的确切语句和函数部分只有16进制地址符号,所以需要使用.dSYM文件来对地址进行解析,如下图,都是地址,没发直接阅读。


    image.png

    获取.dSYM文件分debug和release

    release:选择window->organizer-archives,右击,选择Show in Finder就可以选中archived 文件然后显示包内容,就可以找到dSYM文件了。
    debug:在项目工程里面的 Products 文件的 xxx.app 文件里面可以找到 xxxx.app.dSYM 文件,找不到需要在工程配置一下,然后重新运行。


    image.png

    获取crash文件分线上和线下

    线上:如果APP已经上线了,直接打开xcode->window->organizer-Crashes,需要联网获取,如下图展示的就是你线上版本的crash日志,左上角可以切换不同的构建版本。


    image.png

    右键show in finder,就可以获取到对应的.crash文件,这个文件是已经符号化的,不需要解析,可以直接查看。


    image.png

    线下:APP崩溃后的日志是保存在手机上的,需要与电脑上的iTunes同步,即将崩溃日志保存在电脑上的文件夹中
    具体文件位置:

    Mac OS X:~/Library/Logs/CrashReporter/MobileDevice
    
    Windows XP:C:\Documents and Settings\Application Data\Apple computer\Logs\CrashReporter
    
    Windows 7/Vista: C:\Users\计算机登录名\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice
    

    或者直接使用xcode查看,xcode 会自动符号化


    image.png

    或者使用iTools进入“工具箱”tab,点击崩溃日志,进入崩溃日志页面,导出对应的crash文件。

    symbolicatecrash

    Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数。

    ➜  ~ find /Applications/Xcode.app -name 'symbolicatecrash'
    /Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
    /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
    
    这里使用最后一个
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
    

    1.在桌面创建一个crash文件夹,然后将这个工具copy进去,使用命令如下

    cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ~/Desktop/Crash
    

    2.将获取到.crash,.dSYM,symbolicatecrash都放到刚刚创建的crash文件夹。执行如下命令

    ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
    

    如果报错Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.,再执行如下命令设置一下导出的环境变量

    export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
    

    然后重新导出。

    image.png
    这个symbol.crash就是解析好的文件。打开如下
    image.png
    变成我们能看的懂得了。
    参考文章:https://www.jianshu.com/p/480c0a2ac1a4
    https://www.jianshu.com/p/0b6f5148dab8
    http://www.cocoachina.com/articles/6677

    还有个工具也不错dSYMTools
    https://github.com/answer-huang/dSYMTools

    相关文章

      网友评论

          本文标题:iOS 使用.dSYM文件来符号化崩溃信息

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