1.什么是Crash文件征唬?
- 在開發(fā)過程中程序的崩潰日志捌显,首先符號化
Crash
文件,才能查出錯誤出現(xiàn)在程序的那個地方鳍鸵,可以定位到方法的某一行 - 我采用的是
symbolicatecrash
工具分析苇瓣,網(wǎng)上有很多的文章都有說明(我沒有一一查看,只是用了這一種方式解決了問題)
2.以我碰到的問題為例
-
程序上架之后偿乖,被拒了击罪,蘋果官方給的說法是項目在打開的過程中出現(xiàn)了崩潰,無法再繼續(xù)審核贪薪,給了圖中的三個文件
屏幕快照 2017-05-23 上午9.38.41.png - 其實程序在開發(fā)過程中也偶爾出現(xiàn)了這個現(xiàn)象(修改之后才知道)媳禁,但是無法捕捉到相關(guān)的信息,只能一一排查(肯定會遺漏)
- 后面就想著怎么分析這些
Crash
文件画切,經(jīng)過別人的指點順利解決了問題,然后整理了一下竣稽,分享出來
3.按照下面的步驟使用symbolicatecrash
工具分析Crash
文件
1.創(chuàng)建一個 Crash
文件夾(文件夾的名字可以隨意)
- (1)
Xcoe
-Window
-Organize
找到Archives
找到App(你提交的最后一個版本)-右擊-Show in Finder
-
(2) 里面可能有多個,選擇最后的一個 - 右擊 - 顯示包內(nèi)容
屏幕快照 2017-05-23 上午10.09.17.png - (3)復(fù)制
dsYMs
文件里的.app.dsYM
文件和Products
文件 -Applications
文件 -.app
文件到Crash
屏幕快照 2017-05-23 上午10.12.55.png
屏幕快照 2017-05-23 上午10.13.02.png
注釋:如果沒有.app.dsYM
文件霍弹,打開項目Build Settings
->Debug information format
選DWARF with dSYM File
屏幕快照 2017-05-23 上午10.40.54.png
2.找到symbolicatecrash
工具存放的地址
- (1) 打開終端輸入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
你會找到:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/./symbolicatecrash
直接拷貝前往文件夾
注釋: 如果沒有找到上面的文件夾也沒關(guān)系
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
直接拷貝這個前往文件夾也可以(親測是可行的)
- (2) 將
symbolicatecrash
拷貝到創(chuàng)建的Crash
文件夾里面毫别,與.app
和.app.dSYM
放一起
- (3) 將
Crash
文件也拷到當(dāng)前文件夾里面就是下面這些文件,有些可能后綴是.crash
不過都沒什么影響
屏幕快照 2017-05-23 上午9.38.41.png
3.執(zhí)行symbolicatecrash
- (1) 打開終端用命令切換到桌面的crash目錄下:
cd /Users/你的電腦名稱/Desktop/crash
,直接cd
把文件夾拖到終端就行
- (2)執(zhí)行命令
./symbolicatecrash /Users/hyz/Desktop/crash/attachment-2077632342871049448crashlog-252C388C-3AAC-44FC-B4BF-0F993CEBB47D.txt /Users/angel/Desktop/crash/Control.app.dSYM > Control_symbol.crash
注釋:這行命令包含四個部分
./symbolicatecrash
--symbolicatecrash
命令
/Users/hyz/Desktop/crash/attachment-2077632342871049448crashlog-252C388C-3AAC-44FC-B4BF-0F993CEBB47D.txt
-- 是Crash
文件的路徑
/Users/angel/Desktop/crash/Control.app.dSYM
-- 是.app.dsYM
文件路徑
Control_symbol.crash
-- 輸出文件(在執(zhí)行成功之后會在當(dāng)前文件夾輸出這個文件,里面包含的就是崩潰的信息典格,當(dāng)然命名可以隨意)
(3) 這時候終端有可能會出現(xiàn):
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.
輸入命令:export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
等待執(zhí)行完成重新執(zhí)行上面的命令就可以了(4) 終端執(zhí)行完成以后岛宦,在
crash
文件夾里面會多出一個文件Control_symbol.crash:
這個就是最終的文件,可以查看bug所在的(我執(zhí)行了兩遍耍缴,每次命名不同砾肺,后綴也不同)
打開文件就可以清晰的看到bug的所在了