美文网首页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