美文网首页iOS开发你需要知道的
iOS Crash从iPhone导出堆栈和解析

iOS Crash从iPhone导出堆栈和解析

作者: 半邪亦正 | 来源:发表于2021-11-10 14:40 被阅读0次

    当我们在使用自己的APP时,遇到了crash,如何分析原因?
    一般大点的公司,都有自己的crash上报系统,如果发现crash可以在上面进行查看。
    但是也有一些情况下,没有crash上报,或者有的公司压根就没有crash上报系统,这种情况下如何定位crash呢?

    一、导出crash堆栈

    首先,在发生crash的iPhone以下路径找到对应的crash

    Setting -> Privacy -> Analytics & Improvements -> Analytics Data
    
    crash 堆栈列表

    该页面记录了当前手机所有app发生的crash堆栈,这时候可以搜索出自己的APP的堆栈,一般都是自己的工程名,再看看后面的时间,基本可以确定是不是这份堆栈了。找到后可以通过右上角把文件导出。
    但是这些堆栈都是以地址的形式记录的,看不出对应的代码符号,简而言之,人类看不懂,这个时候就需要进行“翻译” 。

    二、符号化堆栈

    准备工作:

    • 刚才导出crash堆栈文件.ips
    • 符号表.dSYM,在编译APP二进制文件时同级别目录下会有这份文件
    • symbolicatecrash工具,在工具是Xcode自带的,可以在Xcode目录下找到
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
    

    使用时,可以把symbolicatecrash文件复制到和其他两个文件同一个目录下

    开始

    ./symbolicatecrash xxx.ips yyy.dSYM > result.crash
    

    执行以上命令即可,会把结果导出到文件result.crash
    然后打开result.crash,就可以看到熟悉的堆栈了

    问题

    有时候会遇到这个错误提示

    Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

    这时候,只需先执行以下命令即可

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

    相关文章

      网友评论

        本文标题:iOS Crash从iPhone导出堆栈和解析

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