利用.dSYM和.app文件准确定位Crash位置
首先,確保在release(Ad Hoc或者App Store)一個版本時,保存了對應(yīng)的xxx.app和xxx.dSYM文件。
其次,驗證xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。
驗證方法:
1)查看xxx.app的uuid。
[plain]?view plaincopyprint?
2)查看xxx.dSYM的uuid。
[plain]?view plaincopyprint?
3)xxx.crash。
上面兩個UUID必須一樣,而且必須跟Crash Log里面的UUID一致。打開Crash Log文件,在”Binary Images:”段中,YourApp后面的尖括號內(nèi)的字符串就是UUID了。? crash log uuid : armv7 ?<1dd5eb047491310f88cb7b1d7f61275c> /var/mobile/Applications/581404D9-FF06-455F-8251-846D41D18B40/Note:
在這之前,需要找到對應(yīng)的app和dSYM文件。這兩個文件是在后綴為.archive的文件中,在我的機(jī)器(Mac OS 10.9.1,Xcode5.0.2)上,.archive文件在“/Users/mikelin/Library/Developer/Xcode/Archives/”文件夾下對應(yīng)的日期文件夾中,也可以從Xcode > Organizer > Archive 下找到對應(yīng)的Archive包。
確保三者uuid一致以后,用symbolicatecrash工具生成易讀的日志信息。
首先找到symbollicatecrash工具在哪里:
find /Applications/Xcode.app -name symbolicatecrash -type f
你會找到:
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
方法一:使用.crash文件和dsym文件
先準(zhǔn)備環(huán)境:
1)將symbolicatecrash文件拷貝到和那三個文件的同級目錄,此方法不需要.app文件。
2)設(shè)置xcode?DEVELOPER_DIR。
[plain]?view plaincopyprint?
然后執(zhí)行命令:
[plain]?view plaincopyprint?
轉(zhuǎn)載:http://blog.csdn.net/jinzhu117/article/details/20615991
方法二:使用局部崩潰信息和.app文件
如果沒有完整的.crash格式的崩潰文件,只有局部的崩潰信息,如下:
[plain]?view plaincopyprint?
0 ??libobjc.A.dylib ??????????????0x00003ec0 objc_msgSend + 24
1 ??MyApp ? ? ? ? ? ? ? ? ? ? ? ? ?0x000036d2 0×1000 + 9938?
其中:0x000036d2為棧地址,0×1000為偏移量。
我們可以在控制臺使用atos命令,解析出內(nèi)存地址,此方法不需要.dsym文件。
[plain]?view plaincopyprint?
總結(jié)
以上是生活随笔為你收集整理的利用.dSYM和.app文件准确定位Crash位置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设置电脑开机自动提示(防止忘打卡等)
- 下一篇: linux下如何启动vsftp服务,如何