iOS Crash报告分析

article/2025/11/7 23:06:13

文章目录

    • 相关概念
      • 什么是 dSYM 文件
      • dSYM 文件有什么作用
    • 分析crash报告
    • 解析工具 umcrashtool

相关概念

什么是 dSYM 文件

Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于

/Users/<用户名>/Library/Developer/Xcode/Archives 

对于每一个发布版本我们都很有必要保存对应的 Archives 文件。

dSYM 文件有什么作用

当我们软件 release 模式打包或上线后,不会像我们在 Xcode 中那样直观的看到用崩溃的错误,这个时候我们就需要分析 crash report 文件了,iOS 设备中会有日志文件保存我们每个应用出错的函数内存地址,通过 Xcode 的 Organizer 可以将 iOS 设备中的 DeviceLog 导出成 crash 文件,这个时候我们就可以通过出错的函数地址去查询 dSYM 文件中程序对应的函数名和文件名。大前提是我们需要有软件版本对应的 dSYM 文件,这也是为什么我们很有必要保存每个发布版本的 Archives 文件了。

如何将文件一一对应

每一个 xx.app 和 xx.app.dSYM 文件都有对应的 UUID,crash 文件也有自己的 UUID,只要这三个文件的 UUID 一致,我们就可以通过他们解析出正确的错误函数信息了。

  • 查看 xx.app 文件的 UUID

terminal 中输入命令 :

$ dwarfdump --uuid xx.app/xx 
  • 查看 xx.app.dSYM 文件的 UUID
$ dwarfdump --uuid xx.app.dSYM
  • crash 文件的 UUID

crash 文件内第一行 Incident Identifier 就是该 crash 文件的 UUID。

上述内容原文地址:错误统计iOS :什么是 dSYM 文件和UUID

分析crash报告

以下以友盟为例,分析crash报告

crash报告

上图就是一份crash报告,提示我们是数组越界了,但是是哪里到文件,哪个数组越界了上面并没有显示,而且错误的地方都是16进制地址,我们根本看不懂,怎么办呢?
前面提到 dSYM 文件 ,该文件是一份地址映射信息的中转文件,我们现在要通过这个文件拿到映射后的函数方法等,定位到出错到地方

⚠️注意

每一个 xx.app 和 xx.app.dSYM 文件都有对应的 UUID,crash 文件也有自己的 UUID,只要这三个文件的 UUID 一致,才可以通过他们解析出正确的错误函数信息

dSYM在哪里?

Xcode Window -> Organizer -> Archives -> crash对应版本 -> show in find -> 显示包内容 -> xx.app.dSYM

解析地址

下载 xx.app.dSYM 文件后双击(默认终端打开)

$ cd Contents/Resources/DWARF

进入DWARF文件夹目录后

$ atos -arch CPUType -o appName  address

例如 CPUType 为 arm64 项目名为GuDaShi,随便取项目的一个地址0x100250210

$ atos -arch arm64 -o GuDaShi  0x100250210

解析的结果为

解析结果

由此可知,0x100250210 的地址为我自定义的函数 requestRealDetail:success: 的回调,这样一路解析项目的地址,追踪到闪退的问题。

解析工具 umcrashtool

如果你觉得还是很麻烦的话,你也可以使用友盟提供的解析工具umcrashtool , 使用方法。

使用步骤:

1、下载错误报告

下载错误报告

2、下载对应的dSYM和 umcrashtool,可将 umcrashtool 和错误报告放到同一个文件夹下

使用终端cd进入到分析工具和csv所在的文件夹目录下后,输入以下命令

$ ./umcrashtool xxx_错误分析_错误详情_110013.csv

如果出现下面的错误,就需要你将之前下载的dSYM文件放到 ~/Library/Developer/Xcode/. 目录下

错误

如下图所示

放置dSYM

再次运行 命令

$ ./umcrashtool   xxx_错误分析_错误详情_110013.csv

结果

解析结果

上面依此解析出来16进制地址映射出来的函数方法名,执行顺序一目了然。


http://chatgpt.dhexx.cn/article/pP8t9XOK.shtml

相关文章

Android 平台的Crash崩溃捕获-全

上层-java/kotlin&#xff1a; Android应用层java/kotlin的crash捕获相对容易。直接实现Thread.UncaughtExceptionHandler即可处理收集。Thread.UncaughtExceptionHandler&#xff1a;当某一线程因未捕获的异常而即将终止时&#xff0c;Java 虚拟机将使用 Thread.getUncaughtE…

服务器appcrash的问题怎么修复,电脑appcrash的问题怎么修复?

电脑是很复杂的程序代码设计的&#xff0c;因而有时会遇到一些奇怪的问题&#xff0c;而APPCRASH错误也是其中一种&#xff0c;如运行程序出现APPCRASH错误&#xff0c;我们在日志中查看事件名称为APPCRASH&#xff0c;这时很多朋友不知道怎么解决&#xff0c;下面小编和大家一…

iOS中“事件”的前因后果

iOS的事件是一个由触发行为到响应的过程。本文旨在表达事件如何处理响应&#xff0c;如何传递事件的。 1. 前言 国内智能手机要从2000年开始说起&#xff0c;手机的进化是飞速的&#xff0c;单从操作来看&#xff0c;最开始是数字实体键盘&#xff0c;后来出现了全字母的实体键…

AppCrash explorer问题(解决方法)

AppCrash 顾名思义 程序崩溃了 先上问题&#xff1a; 资源管理器不断地显示停止工作&#xff08;关闭后10s又出来报错&#xff09; 我也在网上找了很多资料&#xff0c;还去Google搜了一下&#xff0c;但我的错误和dll这个无关&#xff0c;修改注册表等方法都无法解决此问题&a…

win7 APPCRASH问题解决!

真是废了老劲了。。什么清理插件&#xff0c;各种运行msconfig/启动都试了 问题&#xff1a;**.exe已停止工作 问题事件名称: APPCRASH 应用程序名: compute_image_mean.exe 应用程序版本: 0.0.0.0 应用程序时间戳: 579c50f5 故障模块名称: MSVCR120.dll 故障模块版本: 12.0.21…

mysql安装appcrash_appcrash事件怎么解决-appcrash问题解决方法 - 系统家园

在电脑上运行程序的时候常常会遇到很多的问题然后提示appcrash错误&#xff0c;为此下面就给你们带来了appcrash问题解决方法&#xff0c;一直遇到这个问题的小伙伴就快来解决一下吧。 appcrash事件怎么解决&#xff1a; 方法一&#xff1a; 1、出现appcrash错误会提示给你故障…

程序崩溃APPcrash的问题

【问题】 小编在对接扫码枪枪的时候遇到了一个问题&#xff1a;拔出扫码枪的时候&#xff0c;有状态返回但是出现了这个错误&#xff1a; 【解决办法】 小编我真是心累的“狠”&#xff0c;但经过me的不辞辛苦还是找到了问题的根本&#xff1a; 一、厂家提供的环境 二、小编…

问题事件名称: APPCRASH(解决方法)

问题事件名称: APPCRASH(解决方法)(转&#xff09; 下面分享一下解决win7或者是Vista的一个刺手的问题 APPCRASH&#xff08;app是程序的意思&#xff0c;crash是坠机的意思。就是程序崩溃了/程序撞车……&#xff09; 我们使用软件的时候有时候会出现这种情况 举个例子 Dung…

appcrash事件怎么解决?三种方法教你

我们在电脑上运行程序的时候常常会遇到很多的问题然后提示appcrash错误&#xff0c;为此下面小编就给你们带来了appcrash问题解决方法&#xff0c;有遇到这个问题的小伙伴就快来解决一下吧。 appcrash事件怎么解决&#xff1f; 方法一 1、出现appcrash错误会提示给你故障模块&a…

LoadRunner9.1下载与破解

LoadRunner9.1下载与破解 上一篇 / 下一篇 2009-03-03 18:42:39 / 个人分类&#xff1a;测试工具 查看( 918 ) / 评论( 2 ) / 评分( 0 / 0 ) 一、Loadrunner下载地址&#xff1a; http://h30302.www3.hp.com/prdownloads/T7177-15005.iso?ordernumber380397475&itemid1&…

Loadrunner11破解详解 .

使用说明&#xff1a;要以管理员的身份运行 1、正常安装完LR11后。然后双击deletelicense.exe 2、然后解压替换其中的2个DLL文件拷贝到"C:\Program Files\HP\LoadRunner\bin\"下替换原有文件 3、进入LR&#xff0c;输入以上的序列号即可 global-100: AEACFSJI-YASEKJ…

LoadRunner11的安装与破解

现在很多人都在用LoadRunner11&#xff0c;下面我就来说说自己下载和安装LR11的过程。 一、安装 1.先来下载LR11.建议大家都在正规网站下载&#xff0c;推荐一个网站http://bbs.51testing.com/thread-423695-1-1.html&#xff0c;直接将此网站复制到迅雷下载http://www.genil…

Loadrunner11在win10下的安装、汉化与破解方法

Loadrunner11安装与破解方法 工具/原料 • HP Loadrunner 11.00 • 汉化包 • 破解文件 1 安装英文版 1.1 运行“setup.exe” 点击安装&#xff0c;其中会有提示缺少“Microsoft Visual C 2005 SP1运行组件”&#xff0c; 在“\lrunner\Chs\prerequisites\vc2005_sp1_redis…

loadrunner11基础使用

其实loadrunner11只要环境装好了&#xff0c;没那么多报错 装好Loadrunner后要用管理员权限打开&#xff0c;不然可能会报错 win10可以装lr12和12.5&#xff0c;但是无法破解&#xff0c;最大并发50人&#xff0c;还只有7天试用期&#xff0c;7天过了要重新装 loadrunner11中主…

loadrunner 11下载及破解

原文地址为&#xff1a; loadrunner 11下载及破解 1.下载参照文章&#xff1a; http://www.51testing.com/?uid-4827-action-viewspace-itemid-225451 2.破解参照文章&#xff1a; http://naotang.com/index.php?optioncom_content&viewarticle&id66:loadrunner11&a…

LoadRunner11的安装、破解以及基本使用

首先安装环境 除此之外没啥了&#xff0c;安装时会提示缺少什么组件&#xff0c;点击确认安装即可&#xff0c;剩下基本都是下一步就OK。 安装完成后自动启动会提示只剩余10天试用期 之后开始破解 选择“新许可证”,输入“ AEAMAUIK-YAFEKEKJJKEEA-BCJGI” 再次打开程序&…

LoadRunner测试工具大全下载,破解,licence

LoadRunner测试工具大全下载&#xff0c;破解&#xff0c;licence。 目前的版本有7.8&#xff0c;8.0&#xff0c;8.1下面是他们的下载地址&#xff0c;大家看自己的情况下载 安装程序资源 &#xff08;eMule资源&#xff09; 《工业标准级负载测试工具 LoadRunner》(LoadRunne…

loadrunner 11 的下载和安装与破解

Loadrunner安装详解 一 、 下载篇 下载地址是&#xff0c;这个是我自己搜集的&#xff0c;也可以安装其他版本&#xff1a; 链接&#xff1a;http://pan.baidu.com/s/1skGkzb3 密码&#xff1a;88uq loadrunner 12 链接: https://pan.baidu.com/s/1qXL4tFu 密码: cgrt …

loadrunner11.0 安装 破解

一 、下载(4G多):ed2k://|file|%5B%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7LR11.00%5D.loadrunner-11.iso|4313382912|b95afeb3a879c6b8146435bb79e8cb97|hntupkaxx5ltzwovgdkv7uexj7ukal5hu|/ 二 、安装: 1.首先我安装了一个加载ISO光盘的虚拟光驱的工具: …

loaderrunner11.00安装与破解

在下面的链接里面下载安装包&#xff0c;语言包&#xff0c;以及破解程序 http://pan.baidu.com/s/1bnEQmEr 安装完安装包&#xff0c;语言包后&#xff0c;关键看怎么破解&#xff0c;步骤如下&#xff1a; 1. lm70.dll文件&#xff0c;覆盖\LoadRunner\bin下文件即可。 mlr5l…