dSYM 文件分析工具

article/2025/1/11 7:00:06


我在项目中使用了百度统计,友盟统计也可以,上线项目出bug的时候,错误信息统计中能比较方便的找出客户端异常的信息,可是很多像数组越界却只给出了 *** -[__NSArrayM objectAtIndex:]: index 50 beyond bounds [0 .. 39]' 这类错误信息,这样就很难找到是哪里,比如报错如下

012.png

这时候我们就可以借助dsym工具来做分析定位了,下面是介绍


什么是 dSYM 文件

Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于 /Users/<用户名>/Library/Developer/Xcode/Archives 目录下,对于每一个发布版本我们都很有必要保存对应的 Archives 文件 ( AUTOMATICALLY SAVE THE DSYM FILES 这篇文章介绍了通过脚本每次编译后都自动保存 dSYM 文件)。

dSYM 文件有什么作用

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

如何将文件一一对应

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

1.查看 xx.app 文件的 UUID,terminal 中输入命令 :

dwarfdump --uuid xx.app/xx (xx代表你的项目名)

2.查看 xx.app.dSYM 文件的 UUID ,在 terminal 中输入命令:

dwarfdump --uuid xx.app.dSYM 

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


使用步骤:

1.将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格)

2.选中任意一个版本的xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型。

3.对比错误给出的UUID和工具界面中给出的UUID是否一致。
4.将错误地址输入工具的文本框中,点击分析。
Mac app下载地址  项目源码地址

002.jpg



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

相关文章

firebase_crashlytics缺失dSYM unity ios

Firebase后台提示缺失dSYM文件的截图 解决方案&#xff1a; 一、找dSYM&#xff1a; 方法一&#xff1a; 打开xcode->window->organizer->选择你的版本包archives->show in finder->显示包内容->里面即可看到.dSYM文件 方法二&#xff1a; 打开终端&#…

iOS-详解没有dSYM文件 如何解析iOS崩溃日志

Xcode支持崩溃日志自动符号化&#xff0c;前提是本地有当时Build/Archive生成的dSYM文件&#xff0c;iOS崩溃日志符号化后&#xff0c;可以帮助开发者更好的定位问题&#xff0c;但如果dSYM文件丢失或拿到的崩溃日志不是标准的crash log&#xff0c;如何定位crash呢&#xff0c…

iOS开发-dSYM文件

文章目录 dSYMxcode的符号化解析每个架构的符号 Bitcode相关定位你的dSYMBuild UUID对比恢复隐藏的符号表文件符号化解析操作命令命令行工具 symbolicatecrash 符号化 dSYM 根据 苹果官方文档&#xff0c;当编译器将源代码转为机械码时&#xff0c;会生成调试符号(debug symbo…

ios崩溃日志分析,无dSYM文件

问题场景 大部分情况下&#xff0c;我们都拿不到dSYM文件&#xff0c;只有一份ipa文件一个crash文件&#xff0c;应该如何定位具体崩溃的代码呢&#xff1f; 实例说明 首先本人建立了一个demo工程&#xff0c;写了一段会crash的代码&#xff0c;如下图 然后打包成ipa包&…

命令行工具解析Crash文件,dSYM文件进行符号化

https://www.jishux.com/p/10628644fe5dabf3 序 在日常开发中&#xff0c;app难免会发生崩溃。简单的崩溃还好说&#xff0c;复杂的崩溃就需要我们通过解析Crash文件来分析了&#xff0c;解析Crash文件在iOS开发中是比较常见的。 获取崩溃信息方式 在iOS中获取崩溃信息的方…

iOS-dSYM 文件分析工具

来到新公司后&#xff0c;前段时间就一直在忙&#xff0c;前不久 项目 终于成功发布上线了&#xff0c;最近就在给项目做优化&#xff0c;并排除一些线上软件的 bug&#xff0c;因为项目中使用了友盟统计&#xff0c;所以在友盟给出的错误信息统计中能比较方便的找出客户端异常…

DSYM文件

什么是dSYM文件&#xff1f; iOS平台中&#xff0c;dSYM文件是指具有调试信息的目标文件&#xff0c;文件名通常为&#xff1a;xxx.app.dSYM。如下图所示&#xff1a; 为了方便找回Crash对应的dSYM文件和还原堆栈&#xff0c;建议每次构建或者发布APP版本的时候&#xff0c;备…

Xcode打包后,找不到dSYM文件

在一次分析crash时&#xff0c;需要用到dSYM文件&#xff0c;于是去对应的位置找&#xff0c;结果找到一个空文件夹&#xff0c;里面什么都没有&#xff0c;这是怎么回事&#xff1f; 后来发现是在打包的时候&#xff0c;在TARGET->Building Setting->Build Option下的设…

dSYM文件是什么 ?

Overview 概述 dSYM的全称是debug symbol, 所以dSYM文件就是debug symbol (dSYM) file, dSYM文件中的每个 debug symbol, 对应了一个关系, 这个关系一端是源代码里真实的符号(类名称、全局变量以及方法和函数名称), 另一端则是其定义的文件号和行号. Apple Documentation 苹果…

通过dSYM文件分析crash日志

一、获取crash日志 1、连接崩溃手机&#xff0c;同步 2、日志保存位置&#xff1a; ~/Library/Logs/CrashReporter/MobileDevice/ 3、找到对应的手机和对应的crash文件 二、获取dsym文件 1、 XCode -> Window -> Organizer -> Archiver 找到对应的打包项目&#xf…

手动解析App dSYM示例

https://www.jianshu.com/p/c507f95646bd 前期准备 崩溃日志地址(涉及敏感数据已屏蔽)对应app 的 dSYM文件&#xff0c;利用dwarfdump --uuid <file_to_detect>检测dSYM文件uuid和app执行文件uuid是否匹配 $ dwarfdump --uuid APP_BUNDLE_NAME.app.dSYMUUID: F181E27B…

dSYM介绍

在XCODE编译项目之后,会在app旁看见一个同名的dSYM文件. 他是一个编译的中转文件,简单说就是debug的symbols包含在这个文件中. 他有什么作用? 当release的版本 crash的时候,会有一个日志文件,包含出错的内存地址,使用symbolicatecrash工具能够把日志和dSYM文件转换成可以阅读的…

dSYM文件分析

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

iOS dSYM详解和分析crash,ips文件

1.什么是dSYM文件 dSYM 文件是Xcode编译后&#xff0c;我们会看到一个同名的 dSYM 文件&#xff0c;dSYM 是保存 16 进制函数地址映射信息的中转文件&#xff0c;存储应用程序的调试 symbols。每次编译项目或者打包的时候都会生成一个新的 dSYM 文件&#xff0c;当我们软件rel…

Xcode骚操作之:解决报错 MapFileParser.sh: Permission denied

MapFileParser.sh: Permission denied Unity项目&#xff0c;需要用Xcode运行&#xff0c;结果报了错误。 解决方案&#xff1a; 1、启动台》其它》选择 终端 &#xff0c;输入以下命令&#xff1a; chmod空格x空格拖拽这个文件到小黑框 回车 注意&#xff1a;chmod x的意思…

ipa重签名的四种方式

文章为学习hank的视频笔记 一 开发者调试安装app到手机的签名过程 1. Mac电脑生成公钥M和私钥M 2. 公钥M传给苹果服务器,苹果服务器的私钥A对公钥M进行加密生成证书返回给xcode 3. Xcode下载profile等描述文件,用公钥M对app进行加密生成app签名,然后把app签名和证书以及p…

闲聊扯淡 | 微信8.0背景视频合集,笑死我了

微信 8.0 更新已经有几天了&#xff0c;最开始现在 IOS 端推行&#xff0c;昨天在安卓端也可以更新了&#xff0c;没有更新的小可爱快去更新试试吧。 除了重新高清化的表情以及衍生的表情包大战外&#xff0c;各种新玩法也被不断挖掘出来。 值得一提的就是微信 8.0 中是支持视频…

Unity简单操作:获取 apk在 苹果平台 或者 安卓平台,它自身的包名

在运行时返回应用程序标识。在 Apple 平台上为保存在 info.plist 文件中的“bundleIdentifier”&#xff0c;在 Android 平台上为 AndroidManifest.xml 中的“package”。(com.xxxx.xxxx)

iOS 多线程和GCD(Grand Central Dispath) 教程 (一)

iOS 多线程和GCD(Grand Central Dispath) 教程 &#xff08;一&#xff09; 本文翻译自 Ray Wenderlich 的博客 点击打开原文链接。全部由本人亲手翻译...童叟无欺~ 你有木有遇见过这样的情况&#xff0c;当你在写app的时候&#xff0c;有时候界面就卡住了&#xff0c;要等很长…