有时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文件。
从Release配置copy出来一个Deployment配置,设置如下:
优化编译设置,并调试程序
Generate Debug Symbols YES 默认有
Strip Linked Product YES 默认有 (但是必须设置Deployment Postprocessing YES 才生效)
Deployment Postprocessing YES 默认没有
Debug Information Format DWARF with dSYM File默认没有
最后加上
Use Separate Strip YES 默认没有
Strip Debug Symbols During Copy NO 默认为YES 要改
Debug只编译对应版本以节省编译时间:$(NATIVE_ARCH)
发布版本的配置还要加上:Preprocessor Macros 设置:__DEPLOYMENT