定位release的Crash位置

来源:互联网 发布:贪心算法c语言 编辑:程序博客网 时间:2024/05/17 00:03

对于已经上线的应用,苹果测试的应用,或者是release环境包导致的crash,我们就需要一些特殊的手段来通过crash log进行分析定位了。

 

首先需要release版本的xxx应用的三个文件:xxx.app.dSYM文件、xxx.app文件、xxx.crash文件,确保他们有相同的uuid才能生成才能生证日志文件:

(xxx是工程名)

1.导出xxx.crash

通过Xcode的Organizer查看某台iphone设备的DeviceLog,选择需要的crash log,导出xxx.crash文件。(苹果测试crash会给你这个文件)

2.xxx.app

找到当前iphone设备上安装的ipa文件,更改文件后缀名为zip,解压后得到Payload文件夹,你需要的app文件就在其中了。

3.找到对应build版本的dSYM文件

dSYM文件是iOS编译后保存16进制函数地址映射信息的文件,每次应用程序build后,都会生成对应的xxx.app, xxx.app.dSYM文件。

4.确定dSYM、app以及crash文件的关系

每一个xxx.app, xxx.app.dSYM文件都拥有相应的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件。
查看xxx.app文件的uuid的方法,在terminal中输入命令:

dwarfdump --uuid xxx.app/xxx 

查看xxx.app.dSYM文件的uuid的方法,在terminal中输入命令:

dwarfdump --uuid xxx.app.dSYM 

而.crash的uuid位于,crash日志中的Binary Images:中的第一行尖括号内。如:

armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>

 

 下面用symbolicatecrash指令生成日志文件

Xcode6.1路径, symbolicatecrash在: Xcode6.0.app ▸ Contents ▸ SharedFrameworks ▸ DTDeviceKitBase.framework ▸ Versions ▸ A ▸ Resources▸ symbolicatecrash  (不同版本xcode路径是不同的)

确认文件:

$ ln -s  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /usr/bin/symbolicatecrash   

 设置xcode DEVELOPER_DIR:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"  

 把xxx.app.dSYM文件、xxx.app文件、xxx.crash放在同一路径下执行:

symbolicatecrash xxx.crash xxx.app.dSYM > ~/crash.txt

 crash.txt就是和你debug模式所看到一样类型的输出了。

 

 

thx:

http://blog.csdn.net/guojin08/article/details/41351813

 

 

 

原创粉丝点击