这是苹果官方对于crash report的一些讲解:
 
MAC上有个免费的小工具——dwarfdump,可以简便地检测出app和相应的dSYM。

使用起来很简单。分三步即可。
1> 根据crash log,得到App的UUID。UUID是个字符串,由32个字符组成。得到了UUID,你才能知道是你的哪个版本在用户的iPhone上出了问题。

2> 使用dwarfdump检查app,看哪个app是上面那个UUID。命令行格式:
dwarfdump --uuid YourApp.app/YourApp (注意 这里指向的是app包里的unix可执行文件)

3> 用dwarfdump检查dSYM文件是否是上面的UUID。命令行格式:
dwarfdump --uuid YourApp.app.dSYM

如果三者的UUID都是一致的,那么恭喜你,该crash log可以被正确解析出来,stack traces信息可以被正确地拿到。
 
 
以上都确认好后,可以进行栈地址解析了。
4> 解析命令行格式为: 
dwarfdump --lookup 0x000984c4 --arch armv6 YourApp.app.dSYM
 
备注:命令行里的符号,一定要注意是不是中文符号,是不是从网页上直接拷贝下来的。
我第一次使用,就是从网页上直接拷贝到控制台,结果控制台第一次报错,改“—”为“-”,第二次啥都不输出,直接跳到新的命令行开头,如下所示。
如何使用:上述命令中的地址符替换为crash report中要解析的地址;架构如果是armv7就替换为armv7,armv7s同理;最后一项则是解析地址所用的dSYM文件,在Xcode给工程Archive的时候,在.xcarchive包里找得到。
 
例如:我所用的是,
iMac-Jerrylei:Demo mac$ dwarfdump --lookup 0x000984c4 --arch armv6 /Users/mac/Desktop/Demo/DDT-iPhone.app.dSYM
 
拿文本比较器比较了下,结果也让我很蛋疼。

仔细看后,才发现armv6后面的空格符有区别,下面那行是从网页上直接拷贝下来的。