转自:http://answerhuang.duapp.com/index.php/2014/07/06/dsym_tool/
来到新公司后,前段时间就一直在忙,前不久 项目 终于成功发布上线了,最近就在给项目做优化,并排除一些线上软件的 bug,因为项目中使用了友盟统计,所以在友盟给出的错误信息统计中能比较方便的找出客户端异常的信息,可是很多像数组越界却只给出了 *** -[__NSArrayM objectAtIndex:]: index 50 beyond bounds [0 .. 39]'
这类错误信息,如下图所示:
遇到这种问题如果通过 objectAtIndex
去检索错误的地方那将会是一个巨大的工作量。
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。
dSYM工具
于是我抽了几个小时的时间将这些命令封装到一个应用中,也为以后解决bug提供了便利。
使用步骤:
1.将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格
)
2.选中任意一个版本的xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型。
3.对比错误给出的UUID和工具界面中给出的UUID是否一致。
4.将错误地址输入工具的文本框中,点击分析。
相关推荐
当release的版本 crash的时候,会有一个日志文件,包含出错的内存地址, 使用symbolicatecrash工具能够把日志和dSYM文件转换成可以阅读的log信息,也就是将内存地址,转换成程序里的函数或变量和所属于的 文件名.
总的来说,dsym文件分析工具对于iOS和macOS开发者来说至关重要,它能够帮助开发者快速定位并修复应用中的错误,提高产品的稳定性和用户体验。理解和熟练使用dsym工具是每个移动平台开发者必备的技能之一。在遇到用户...
2. **分发给第三方**:如果使用了第三方崩溃分析服务,如Firebase或Crashlytics,需要将DSYM文件上传到这些服务,以便它们能正确解析崩溃日志。 五、自动化处理 为了提高效率,开发者可以设置自动化流程来处理DSYM...
使用步骤: 1.将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格) 2.选中任意一个版本的xcarchive文件,右边...4.将错误地址输入工具的文本框中,点击分析。
使用dSym分析工具,开发者通常需要先获取到崩溃日志和对应的dSym文件,然后导入工具进行解析。工具会自动匹配并显示崩溃的具体位置,以及相关的变量值和调用堆栈。相比于手动查找和解析,dSym分析工具大大提高了...
3. **使用工具解析**:Xcode本身提供了对DSYM文件的内置支持,可以将崩溃日志导入Xcode的“Devices and Simulators”窗口进行分析。除此之外,第三方工具如Frida、Crashlytics、Fabric等也能提供方便的DSYM解析功能...
dsym分析工具就是这样一个关键的辅助工具,它专为开发者设计,用于解析和符号化iOS应用的崩溃日志,帮助我们快速定位错误源。下面我们将详细探讨dsym分析工具的工作原理、使用方法以及其在iOS崩溃分析中的重要性。 ...
iOS 设备中会有日志文件保存我们每个应用出错的函数内存地址,通过 Xcode 的 Organizer 可以将 iOS 设备中的 DeviceLog 导出成 ...这个时候我们就可以通过出错的函数地址去查询 dSYM 文件中程序对应的函数名和文件名。
DSYM文件分析对于识别和修复bug至关重要。本篇文章将详细介绍如何利用工具来分析DSYM文件,以便精准定位bug的位置。 首先,DSYM文件包含了一种名为DWARF的调试格式,它是编译器生成的一种二进制表示,记录了源代码...
本文将深入探讨`dSYM`文件、其在错误分析中的作用以及如何使用友盟错误分析工具来优化这一过程。 首先,我们来了解`dSYM`文件的基本结构和功能。当我们在Xcode中编译iOS应用时,编译器会生成两个主要的输出文件:`....
dSYM文件分析工具、用于崩溃日志分析、~/资源库/Developer/Xcode/Archives路径下 找到对应的dSYM文件,然后根据崩溃平台的日志信息、根据工具、输入后得出崩溃结果。系统10.15可用、版本1.0.3
在iOS和macOS开发中,dSYM文件是一个非常重要的组件,它在调试和分析应用程序崩溃时扮演着关键角色。dSYM分析工具就是专门用于处理这些文件的工具,它能够帮助开发者迅速地根据方法地址找到引发错误的具体代码行,极...
本文将详细介绍dSYM文件、友盟分析工具以及如何利用它们进行bug异常分析。 **一、dSYM文件详解** dSYM(DWARF withSYMtab)文件是Apple为iOS和macOS应用程序生成的一种特殊文件,用于在调试时关联应用程序的二进制...
2. 工具会解析Crash Log中的内存地址,并使用dSYM文件中的符号信息进行映射。 3. 映射完成后,崩溃日志将显示源代码行和函数名,帮助开发者理解崩溃发生的具体位置。 4. 根据这些信息,开发者可以修复代码并发布更新...
提拱4个小工具,用于分析iOS程序崩溃时日志分析。 1、checkuuid.sh 验证app及dSYM文件的uuid。 使用方法:将相应的app或dSYM文件拷贝到目录下,执行checkuuid.sh,选择类型。 2、makecrash.sh 软件崩溃日志。 使用...
在进行iOS应用的故障排查、分析崩溃报告或者进行逆向工程时,`dsym`文件是必不可少的工具。 **反编译过程** 反编译是将已编译的二进制代码转换回高级语言的过程,以便于理解其内部工作原理。在iOS世界里,由于苹果...
2. **匹配`dSYM`**: 使用`atos`命令行工具或第三方工具(如Frida, Reveal等)将崩溃日志中的内存地址与`dSYM`文件对应起来。 3. **分析源代码**: 查看转换后的源代码行,分析问题出现的原因。 4. **修复并测试**: ...
"iOS崩溃代码定位分析工具"是一个关键的资源,它专门用于处理dSYM文件,帮助开发者迅速定位到导致崩溃的代码行。dSYM文件是苹果为调试目的生成的一种特殊文件,包含了应用的二进制代码的调试信息。 首先,我们要...