crash log调用栈看不到的解决方案(debug symbols不起作用)

 

1         前言

有时crash log在xcode中,看不到crash的调用堆栈,只有些十六进制,下面是解决的参考方法。

2         先查看symbolicate工具环境设置

步骤一:

在“终端”中,使用如下工具查看symbolicate工具是否出问题了,命令后接crash log文件。

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

如果输出Developer3什么的,(假设你使用的Xcode目录是Developer),则表明你装了多个Xcode,Xcode路径找的不对,使用如下命令彻底卸载Developer3:

sudo /Developer3/Library/uninstall-devtools -mode=all

然后输入“xcode-select -switch /Developer”选择Developer这个目录。

步骤二:

重复步骤一,查看输出,如果在symbolicate系统库出问题,则将如下目录删除:

/Users/peterdou/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)

以后比方说插上手机,该目录会重新生成。

步骤三:

重复步骤一,如果觉得应该有symbol输出但依然看不到,则说明对应的xcarchive没找到

可尝试如下“终端”命令:

mdimport ~/Library/Developer/Xcode/Archives/ 使得spotlight可以找到。

以上完事后,依然不行,则尝试下面build setting。

Ps:有可能编译时出现libxml什么的找不到情况,将Build setting中的属性做如下修改:

3         再看project build setting

涉及到debug symbols的一些setting项如下:

1)  Generate Debug Symbols

2)  Strip Debug Symbols During Dopy

3)  Symbols Hidden by Default

3.1       setting项官方文档解释

3.2       实验一:以某一设置为标准,做三次尝试,依次改了某一项,比较生成的包,结果是:

设置项

生成文件结果的影响

Generate Debug Symbols

影响是否生成dSYM文件

Strip Debug Symbols During Dopy

此值无论YES、NO,生成的dSYM和app大小都不变。

 

Symbols Hidden by Default

此值为YES时生成的app包稍微变小。

 

 

3.3       实验二:哪些值影响symbol的显示。

由实验一可知,Generate Debug Symbols必须为YES,下面测试其他两项:

设置项

Symbol是否显示

Generate Debug Symbols

YES

显示

Strip Debug Symbols During Dopy

任何值

Symbols Hidden by Default

任何值

结论:影响symbol显示的,只有Generate Debug Symbols因素。

4         总结

要想看到symbol,必须:

1)        外部环境设置对;

2)        Generate Debug Symbol设YES;

查看log前,必须用“终端”命令mdimport ~/Library/Developer/Xcode/Archives/ 使得spotlight可以找到dSYM文件。

你可能感兴趣的:(ios开发)