iOS备忘录

dsYM文件分析方法

2019-06-28  本文已影响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命令来完成符号化,具体命令如下: $ atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <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) ---> 使用文本编辑器打开符号表文件

上一篇 下一篇

猜你喜欢

热点阅读