欢迎来到天天文库
浏览记录
ID:44605311
大小:142.34 KB
页数:6页
时间:2019-10-24
《如何手动解析CrashLog_计算机软件及应用_IT计算机_专业资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、如何手动解析CrashLog解决崩溃问题是移动应用开发者最日常的工作z—。如果是开发过程中遇到的崩溃,可以根据重现步骤调试,但线上版本就无能为力了。好在目前已经有很多不错的第三方CrashLog搜集平台(如友盟、Crashlytics等)为我们做好了解析工作,甚至在Xcodc7里苹果也跟进了解析线上版本崩溃日志的功能,为开发者减轻了不少负担。尽管通常已经不需要我们手丁处理CrashLog,了解CrashLog的还原原理和方法还是有必要的。一、・dSYM.dSYM(debuggingSYMbols)又称为调
2、试符号表,是苹果为了方便调试和定位问题而使用的一种调试方案,木质上使用的是起源丁•贝尔实验室的DWARF(DebuggingWithAttributedRecordFormats),其在.xcarchive目录屮的层次结构为:1・・xcarchive2・--dSYMs3・
3、一一Your・app・dSYM4.
4、——Contents5・
5、一一Resources6・
6、--DWARF关于DWARF的具体内容以后有机会再说。我们能解析CrashLog全靠.dSYM文件,解析方式见后文。二、确定符号表和崩溃日志的一致
7、性有了符号表文件,有了崩溃FI志文件,在解析之前一定要确保二者的对应关系,否则就算按照下述步骤解析出内容也肯定是不准确的。二者的对应关系可以通过UUID来确定。1、从崩溃日志中获取UUID崩溃日志比较靠卜•的位置有个BinaryImages模块,其第一彳亍内容如卜•:1・BinaryImages:2.0x^2000-0x541fffYourarmv7/var/mobile/Containers/Bundle/Application/645D3184-4C20-4161-924B-BDE170FA64CC/
8、Your・app/Your从屮可以看到关于你应用的若干信息:代码段的起终地址为:0xa2000-0x541fff运行你应用的CPU指令集为:armv72、从符号表中获取UUID执行以下命令从符号表中提取UUID:1.dwarfdump一一uuidYour・app・dSYM或者:1.dwarfdump一-uuidYour.app.dSYM/Contents/Resources/DWARF/Your执行结果为:1・UUID:A5C8D3CF-DA65-3966-89E4-370BF3A0AC64(armv7)
9、Your・app•dSYM/Contents/Resources/DWARF/Your由此得到armv7指令集的UUID为:A5C8D3CF-DA65-3966-89E4-370BE3A0AC64(如果你的二进制文件支持多个指令集,这里会列出每个指令集对应符号表的UU1D),通过和崩溃日志中的对比发现二者一致,才可进行进一步的解析操作。三、计算崩溃符号表地址以下面的崩溃堆栈为例:1•Thread0:1.0libobjc.A.dylib0x33flOf600x33efeOOO+776643・1Foundat
10、ion0x273526ac0x2734a000+344764.2Foundation0x27355c3e0x2734a000+481905.3UIKit0x29ef9dlc0x29bbc000+33989406.4UIKit0x29ef9c9a0x29bbcOOO+33988107.5UIKit8・6UIKit9.7UIKit0x29ef954c0x29c3al6a0x29e4b8e60x29bbc000+33969400x29bbc000+5164580x29bbc000+268515810111213
11、14151617188UIKit0x29c3al280x29bbc000+5163929Your0x000f08460xa2000+32160610UIKit11UIKit12UIKit13UIKit14UIKit0x29e90fb20x29bbc00029695220x29e910760x29bbc00029697180x29e867cc0x29c9e8ea0x29bc8A640x29bbc0000x29bbc0000x29bbcOOO29265409279785181815QuartzCore0x29
12、5f0a080x295^4000+5172016QuartzCore0x295ec3e00x295^4000+3376017QuartzCore0x295ec2680x295^4000+3338420212223242526272829303118QuartzCore0x295ebc4c0x295^4000+3182019QuartzCore0x295eba500x295e4000+3131221CoreFoundation0
此文档下载收益归作者所有