iOS应用如何查找闪退的原因

iOS设备遇到闪退的应用会在系统日志里记录一个log文件,有一部分是因为内存不足闪退的,那就要解决内存泄露的问题。其他的原因有找不到文件、数组越界等各种原因,具体的分析日志办法有以下两种。

ps:每次发布版本之后,在编译出的包文件边上都有一个相应的符号文件(symbols)。比如包是app.cpp,符号文件就是app.cpp.dSYM,里面是包含了调试信息的。在测试阶段应该使用debug版本。.cpp最终打包为可安装的.ipa。

  • step1. 明确crashlog产生的版本,找到对应的安装包文件*.ipa和符号化文件*.app.dSYM;
  • step2. 将安装包文件解压成*.app文件,符号化文件解压成*.dSYM文件(如果直接是,省去该步骤);
  • step3. 符号化(两种方法)

1. 用Xcode直接符化
a) 打开项目工程,在Products组中找到对应的app项;
b) 右键选择show in Finder,转到Debug生成的文件夹;
c) 将刚才生成的app、dSYM文件覆盖该文件夹下的文件;
d) 进入Xcode->Window->Organizer->Devices->DeviceLogs,导入crashlog文件,点击Re-Symbolicate符号化成功;
2. 用命令符号化
a) 将生成的app、dSYM文件和crashlog文件放在同一个文件夹下;
b) 在Terminal进入到上面的文件夹中,运行symbolicatecrash crashlog.crash crashlog.app.dSYM > crashlog.log命令,符号化成功的文件将放入crashlog.log文件中;
(注:请将crashlog换成对应的文件名,Xcode5 symbolicatecrash命令path:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

如果找不到可用find /Applications/Xcode.app -name symbolicatecrash -type f进行查找);
c) 如果出现错误:Error: “DEVELOPER_DIR” is not defined at ./symbolicatecrash,请设置环境变量:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer;

文章来源:http://blog.csdn.net/tycoon_atg/article/details/18654165原标题《 iOS crashlog符号化方法》