获取IOS 客户端crash logs 和解析

用一个同步工具(如iTunes),把手机中信息同步到本地

OS X
~/Library/Logs/CrashReporter/MobileDevice/<your iPhone’s name>/
Windows XP
C:\Documents and Settings\\Application Data\Apple computer\Logs\CrashReporter\<your iPhone’s name>\
Windows Vista
C:\Users\\AppData\Roaming\Apple computer\Logs\CrashReporter\MobileDevice\<your iPhone’s name>\

Xcode 4.3的symbolicatecrash的位置和老版本的不一致了。
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/

Xcode 4.3之前
/Developer/Platforms/iPhoneOS.
platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

日志解析
http://www.cnblogs.com/ydhliphonedev/archive/2012/12/07/2806866.html
http://www.raywenderlich.com/zh-hans/30818/ios%E5%BA%94%E7%94%A8%E5%B4%A9%E6%BA%83%E6%97%A5%E5%BF%97%E6%8F%AD%E7%A7%98

 方法一:

1.xcode 有自带的symbolicatecrash,可以将.crash文件中的16进制地址转换成可读的函数地址。
symbolicatecrash位于:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash(Xcode 4.5)
可以将symbolicatecrash拷贝到便于操作的目录。
如:将其拷贝到Desktop/iphonedug文件夹中。

2.每一次Build之后会有相应的xxx.app, xxx.app.dSYM文件,.dSYM文件是将Build之后的文件16进制地址对应的函数地址储存起来之后的文件。
每一个xx.app, xxx.app.dSYM文件都拥有相应的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件。
查看xx.app文件的uuid的方法,在terminal中输入命令:dwarfdump --uuid xxx.app/xxx (xxx工程名)
查看xx.app.dSYM文件的uuid的方法,在terminal中输入命令:dwarfdump --uuid xxx.app.dSYM (xxx工程名)
而.crash的uuid位于,crash日志中的Binary Images:中的第一行。如:armv7s  <13760bde0d073f1eb4d596c3df753f4b>
将对应的xx.app, xx.app.dSYM文件也拷贝到Desktop/iphonedug文件夹中

3.使用symbolicatecrash解析.crash日志。
在terminal中输入命令:./symbolicatecrash xxx.crash xxx.app.dSYM > test.log
这样可以将.crash日志转换成test.log,test.log即可读的函数文件。
输入上述命令可能会出现Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 53.这个错误。
如果出现上述错误,输入命令:export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer,
然后继续执行./symbolicatecrash xxx.crash xxx.app.dSYM > test.log可以成功

 方法二:

使用命令:atos -o xxx.app/xxx -arch armv7 0x38ad42f9 0x38ad42f9 0x38ad42f9(多个16进制地址,使用空格分开)
注意.app, .app.dSYM需要跟日志程序版本build一致

posted on 2013-12-05 11:50  邓伟  阅读(977)  评论(0编辑  收藏  举报

导航