美文网首页iOS备忘录
dsYM文件分析方法

dsYM文件分析方法

作者: 跃文 | 来源:发表于2019-06-28 09:38 被阅读8次

dSYM文件是什么?

  • debugger Symbols 的简称
  • .dSYM文件是一个符号表文件, 这里面包含了一个16进制的保存函数地址映射信息的中转文件, 所有Debug的symbols都在这个文件中(包括文件名、函数名、行号等).
  • 一般Xcode项目每次编译后, 都会产生一个新的.dSYM文件和.app文件, 这两者有一个共同的UUID.
  • 注:项目编译完dSYM文件和app文件在同一个目录,Xcode Debug 编译默认不会生成.dSYM文件, Release 编译才会生成

NO.1 Xcode分析

1、要使用Xcode符号化 crash log,你需要下面所列的3个文件:
①crash报告(.crash文件)
②符号文件 (.dsymb文件)
③应用程序文件 (.app文件)
2、把这3个文件放到同一个目录下,打开Xcode的Window菜单下的organizer,然后点击Devices tab,然后选中左边的Device Logs。
然后把.crash文件拖到Device Logs或者选择下面的import导入.crash文件。
这样你就可以看到crash的详细log了。

NO.2 使用命令行工具symbolicatecrash

1、将“.app“, “.dSYM”和 ".crash"文件放到同一个目录下。
2、打开终端(Terminal)然后输入如下的命令:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
然后输入命令:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash appName.crash appName.app > appName.log
现在,符号化的crash log就保存在appName.log中了。

NO.3 atos

  • atos 是一个可以把地址转换为函数名(包括行号)的工具, 它和dwarfdump 为mac os自带工具.

我们使用atos命令来完成符号化,具体命令如下: $ atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate> 其中:

  • Binary Architecture: arm64、armv6、armv7 armv7s 根据自己的情况来写。
  • Path to dSYM file: dSYM文件的路径。
  • binary image name: 你工程的名字。
  • load address: 是运行时起始地址(基地址),如果我们的崩溃日志中没有这个信息(比如上面的Crash信息中就没有包含),就需要我们手动去计算这个load * address:laod address = address to symbolicate - offset,比如:0x0000000102838119转化为十进制为4337139993,再减去偏移量265,为4337139728,在转化为十六进制0x0000000102838010
  • address to symbolicate:运行时堆栈地址,当前方法的内存地址。

具体示例:atos -arch arm64 -o CrashDemo.app.dSYM/Contents/Resources/DWARF/CrashDemo -l 0x0000000102838010 0x0000000102838119

补充:

查看dsYM文件UUID:
方法一: 通过命令行查看dSYM文件的UUID
xcrun dwarfdump --uuid <dSYM文件>
dwarfdump --uuid TestAvoidCrash.app.dSYM/
dwarfdump --uuid TestAvoidCrash.app/TestAvoidCrash

方法二:通过符号表文件查看UUID
符号表文件的UUID与dSYM文件的UUID是一致的,因此可以通过符号表工具生成的符号表文件来查看dSYM文件的UUID:
生成符号表文件(.zip) ---> 解压符号表文件(.symbol) ---> 使用文本编辑器打开符号表文件

相关文章

  • Crash以及报错总结

    方法1:下载dSYM工具分析 dSYM分析 方法2:终端cd文件反编译 由于这类的崩溃信息通常难以重现, 没有任何...

  • dSYM文件分析方法

    在开发中很多项目使用了类似友盟统计的第三方统计工具,这样可以在友盟给出的错误信息统计中比较方便的找出客户端异常的信...

  • dsYM文件分析方法

    dSYM文件是什么?debugger Symbols 的简称.dSYM文件是一个符号表文件, 这里面包含了一个16...

  • symbolicatecrash及atos命令

    根据 dSYM 文件和 .crash文件,分析崩溃原因要保证.dSYM 文件的 uuid 和.crash 文件的 ...

  • 3.Xcode方面问题

    1.iOS崩溃日志分析 iOS 获得crash dSYM方法(手机本地连接方式) [iOS Crash文件分析]-...

  • 【iOS】dSYM文件分析方法

    在开发中很多项目使用了类似友盟统计的第三方统计工具,这样可以在友盟给出的错误信息统计中比较方便的找出客户端异常的信...

  • iOS开发面试中需要牢牢记住的几个知识点

    如何分析dSYM? dSYM是什么? Xcode编译项目之后,我们会看到一个同名的dSYM文件,dSYM是保存十六...

  • 阿里三面(转)

    1.dSYM你是如何分析的? 什么是 dSYM dSYM文件Xcode编译项目后,我们会看到一个同名的 dSYM ...

  • dSYM文件分析

    来到新公司后,前段时间就一直在忙,前不久 项目 终于成功发布上线了,最近就在给项目做优化,并排除一些线上软件的 b...

  • .dSYM 文件分析

    查看 xxx.app 文件的 UUID 查看 xxx.app.dSYM 文件的 UUID 查看 xxx.crash...

网友评论

    本文标题:dsYM文件分析方法

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