有时crash log在xcode中,看不到crash的调用堆栈,只有些十六进制,下面是解决的参考方法。
步骤一:
在“终端”中,使用如下工具查看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中的属性做如下修改:
涉及到debug symbols的一些setting项如下:
1) Generate Debug Symbols
2) Strip Debug Symbols During Dopy
3) Symbols Hidden by Default
设置项 |
生成文件结果的影响 |
Generate Debug Symbols |
影响是否生成dSYM文件 |
Strip Debug Symbols During Dopy |
此值无论YES、NO,生成的dSYM和app大小都不变。
|
Symbols Hidden by Default |
此值为YES时生成的app包稍微变小。
|
由实验一可知,Generate Debug Symbols必须为YES,下面测试其他两项:
设置项 |
值 |
Symbol是否显示 |
Generate Debug Symbols |
YES |
显示 |
Strip Debug Symbols During Dopy |
任何值 |
|
Symbols Hidden by Default |
任何值 |
结论:影响symbol显示的,只有Generate Debug Symbols因素。
要想看到symbol,必须:
1) 外部环境设置对;
2) Generate Debug Symbol设YES;
查看log前,必须用“终端”命令mdimport ~/Library/Developer/Xcode/Archives/ 使得spotlight可以找到dSYM文件。