iOS crash日志堆栈地址符号化

.dsym(符号表文件)

.crash(崩溃日志)

.app (Optional)

.app不是必然需要的,目前我看到不需要也是没问题的,只是会报警告(说的不对请轻喷):

## Warning: Unable to symbolicate from required binary: /Users/wind/Library/Developer/Xcode/iOS DeviceSupport/10.1.1 (14B100)/Symbols/System/Library/Frameworks/CoreMotion.framework/CoreMotion

1.首先我们一起找到需要的文件


1.1获取.dSYM文件

1.1.1 使用Xcodebuild编译打包

iOS crash日志堆栈地址符号化_第1张图片
Xcodebuild编译生成文件

1.1.2 使用Xcode的Archive导出

Xcode->product->Archive,右键Show in Finder,如果一个Show in..不能解决,当然就是两个啦。

1.1.3 使用make编译打包(没用过)

如果开发团队不使用Xcode编译打包,而是使用make编译生成.o文件,然后打包发布。此时编译过程不会有.dSYM生成,开发者可用使用dsymutil工具               从.o文件中提取符号信息。

1.2获取.crash文件

如果用户设置为同步崩溃日志,那可以在Xcode->Window->Organizer->Crashes->Show in Finder里找到.xccrashpoint,右键显示包内容里就可以看到.crash文件

如果用户没有设置同步崩溃日志,则需要用户把.crash设置为同步崩溃日志。(要么你让用户发给你,如果用户知道怎么发的话.........)


2.检查UUID


要想把.crash的堆栈地址转成我们熟知的函数,首先要确定它们UUID是否一致。

查询UUID方法如下(.app,.dsym):

dwarfdump —uuid xxx.app

dwarfdump —uuid xxx.dsym

.crash文件无法使用上述方式查询。它的UUID需要打开它,并找到Binary Images的位置。

.crash文件Binary Images

上述UUID一致的情况下,就可以执行第3步

3.使用symbolicatecarsh工具查询


要使用symbolicatecrash肯定要先找到它在哪儿?

可以在终端使用命令行查找:

find /Applications/Xcode.app -name symbolicatecrash -type f

此处为我mac上symbolicatecarsh的位置:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

接着,我们把xxxx.crash 与xxxx.dSYM文件放在同一个文件夹下。

示例如下:

测试目录下的文件

在终端切换到当前目录,之后使用之前找到的symbolicatecarsh工具,输入如下:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Vers

ions/A/Resources/symbolicatecrashtest.crash test.dSYM > test.log

:命令执行需要时间,如果在命令执行结束后test.log内容为空,可以输入:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

之后在重新尝试symbolicatecarsh命令。

4.使用atos查询单个堆栈地址


其中<>内的参数都是来自.crash文件内,Binary Images,可以参考苹果给的图

iOS crash日志堆栈地址符号化_第2张图片
苹果官网截的图

使用示例:

atos -arch arm64 -o TheElements.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc


参考资源:

苹果官方之崩溃信息如何查看:https://developer.apple.com/library/content/technotes/tn2151/_index.html

解决symbolicatecrash打出空白.loghttp://blog.csdn.net/my_programe_life/article/details/50686174

你可能感兴趣的:(iOS crash日志堆栈地址符号化)