iOS符號化崩潰日志
經(jīng)常(偶爾)QA在測試的時(shí)候,APP發(fā)生了crash肘习,此時(shí)相比APP的崩潰,更加崩潰的是開發(fā)坡倔。如果是必現(xiàn)的還好漂佩,但如果是偶現(xiàn)的話,此時(shí)就必須設(shè)法恢復(fù)現(xiàn)場罪塔,找到崩潰原因投蝉。
崩潰日志導(dǎo)出
恢復(fù)現(xiàn)場第一步是導(dǎo)出崩潰日志,導(dǎo)出日志的方式有兩種征堪。一種是通過Xcode導(dǎo)出瘩缆,另外則是直接通過設(shè)備的Settings導(dǎo)出。
通過Xcode導(dǎo)出崩潰日志
直接用發(fā)生崩潰的設(shè)備連接Xcode佃蚜,點(diǎn)擊Xcode -> Window -> Devices庸娱,然后定位到發(fā)生崩潰的機(jī)器着绊,找到對應(yīng)的崩潰日志,并導(dǎo)出到Mac的文件系統(tǒng)涌韩。
通過設(shè)備Settings(設(shè)置)APP查看并導(dǎo)出崩潰日志
通過Settings導(dǎo)出崩潰日志畔柔,不同版本的系統(tǒng)可能不同氯夷,以iOS 12為例臣樱,崩潰日志位于Settings -> Privacy -> Analytic -> AnalyticsData 下,日志名格式為AppName-XXXX-XX-XX.ips
腮考,可以根據(jù)崩潰時(shí)間點(diǎn)和發(fā)生崩潰的APP名稱來定位雇毫,點(diǎn)擊對應(yīng)的崩潰日志,可以進(jìn)入查看踩蔚,然后通過導(dǎo)航欄的分享按鈕通過AirDrop傳送到Mac棚放。
崩潰日志符號化
第二步是找到發(fā)生崩潰的測試包對應(yīng)的dSYMs文件,這個(gè)要求每次打包以后要保存對應(yīng)的dSYMs文件馅闽,否則沒辦法了飘蚯。其次,很重要的一點(diǎn)福也,Xcode中必須要有對應(yīng)版本系統(tǒng)的iOS DeviceSupport文件局骤,否則符號化會失敗。
舉個(gè)例子:比如發(fā)生崩潰的iPhone系統(tǒng)是iOS 8.1.1暴凑,那么路徑/Users/username/Library/Developer/Xcode/iOS DeviceSupport/路徑下也要有iOS 8.1.1的設(shè)備支持文件峦甩。
將崩潰日志和dSYMs文件放到同一個(gè)目錄下,然后采用symbolicatecrash命令進(jìn)行符號化现喳。symbolicatecrash是Xcode自帶的符號化工具凯傲,但是不在系統(tǒng)的PATH內(nèi),因此運(yùn)行該命令需要修改PATH變量嗦篱,在終端執(zhí)行如下命令:
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
export PATH=$PATH:/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/
然后在終端中執(zhí)行如下命令:
symbolicatecrash XXX.crash -o YYY.crash
其中XXX.crash是未符號化的日志冰单,YYY.crash是符號化后的日志。