Xcode7.3工具解析App崩潰日志(.crash文件)

開發(fā)的App或者游戲提交審核后,偶爾會收到測試反饋的消息,說應(yīng)用崩潰了,bug偶爾出現(xiàn),難以找到確定的重現(xiàn)方法。
怎么辦?可以分析崩潰文件啊,也就是app崩潰后,自動保存在設(shè)備本地的.crash文件。
獲得崩潰日志的方式,在 獲取設(shè)備上的調(diào)試信息與崩潰日志分析 中有說。

在環(huán)境ok的情況下,xcode中是可以自動解析.crash文件的。舊版本的xcode甚至可以導(dǎo)入第三方.crash文件,但是xcode7.3貌似是不能導(dǎo)入.crash文件了。
舊版的打開方式是菜單Window-Organizer,界面下方可以直接導(dǎo)入.crash文件,如圖:



新版的界面修改了,而且貌似不能直接導(dǎo)入.crash文件,如圖:


這時候,我們還是用Xcode自帶的 symbolicatecrash 工具來解析測試發(fā)來的.crash文件。
1.配置環(huán)境變量DEVELOPER_DIR,如果配置過了就跳過此步驟
臨時方法:打開終端Terminal,輸入命令
[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

永久方法:編輯~/.bash_profile,在末尾添加

[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

Add environment variable DEVELOPER_DIR

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
export PATH=$DEVELOPER_DIR:$PATH

然后保存文件,使用source ~/.bash_profile命令或者完全退出終端來刷新環(huán)境變量。
2.找到xcode的解析工具 symbolicatecrash 。查詢這個工具的路徑,貌似很多博客里面都是舊版的xcode了,所以根據(jù)博客里面的內(nèi)容很難找到工具。
我使用的Xcode 7.3版本的 symbolicatecrash 工具路徑為
[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

使用其他版本的小伙伴可以看看下面幾個目錄,或者自行搜索咯[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKit.framework/Versions/A/Resources

[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources

找到之后我就直接復(fù)制到桌面上來了


3.安裝Xcode的Command Line Tools工具,可以查看這篇日志 Xcode中Command Line Tools安裝方法
步驟還是打開終端,輸入下面的命令即可開始下載安裝
[plain] view plain copy
在CODE上查看代碼片
在CODE上查看代碼片
派生到我的代碼片
派生到我的代碼片

xcode-select --install

4.找到app包所對應(yīng)的.dSYM文件,強調(diào)要對應(yīng)
.dSYM 是保存 16 進制函數(shù)地址映射信息的中轉(zhuǎn)文件,我們調(diào)試的 symbols 都會包含在這個文件中,并且每次編譯項目的時候都會生成一個新的 dSYM 文件。測試給過來的.crash文件中,關(guān)于崩潰的確切語句和函數(shù)部分只有16進制地址符號,并不是我們在xcode調(diào)試時看到的xxx.cpp(xxfunction xx行)這樣的。如下圖


我們需要使用.dSYM文件來對地址進行解析,這樣就可以看到是是哪個類里面的哪個函數(shù)出了問題。如何獲取.dSYM文件,在 獲取設(shè)備上的調(diào)試信息與崩潰日志分析 有講。
如果是本地真機測試,路徑應(yīng)該是
/Users/name/Library/Developer/Xcode/DerivedData/MyApp-aerllxbslxqnjhgfeoiagutyemyz(一串奇怪的值)/Build/Products
目錄下的Debug-iphoneos和Release-iphoneos文件夾中都會包含.app和.dSYM文件
如果是發(fā)布模式,可以在Xcode的菜單Window-Organizer框中看到發(fā)布過的app版本,選擇對應(yīng)版本可以下載.dSYM文件,如下圖

正常情況下這樣是可以獲取到.dSYM文件的,如果不行,那就沒法解析.crash文件了。記得看看你的項目配置:


5.獲得了.crash文件 .dSYM文件 symbolicatecrash工具 后,就可以開始解析崩潰日志了。
要解析.crash文件,需要與其版本對應(yīng)的.dSYM文件,也就是需要對應(yīng)uuid。
使用如下命令可以查看.dSYM文件的uuid
[plain] view plain copy

派生到我的代碼片
派生到我的代碼片

dwarfdump --uuid /Users/qufangliu/Mydsym.app.dSYM

效果如圖



可以打開.crash文件,查看crash文件需要的dSYM文件的uuid,如下圖


6.可以看到,我們已經(jīng)有了對應(yīng)的.crash和.dSYM文件了。可以直接開始解析了。
解析用的命令格式為:symbolicatecrash解析工具 .crash文件 .dSYM文件 > 輸出到某個文件(自定義即可)。結(jié)果如圖


7.可以查看結(jié)果文件了



可以看到,原先的地址符號被解析出來了,我們能直接看到導(dǎo)致崩潰的函數(shù)和文件。這樣就方便查bug了。

使用symbolicatecrash工具解析崩潰日志條件:
1.配置環(huán)境變量DEVELOPER_DIR。
2.找到Xcode的解析工具symbolicatecrash
3.安裝了Xcode的Command Line Tools工具
4.獲得.crash文件
5.獲得.dSYM文件
6..crash文件和.dSYM文件的uuid要對應(yīng)起來(據(jù)說每次打包都會出現(xiàn)不同的.dSYM)

注意:
項目的Debug模式下,默認是不生成.dSYM文件的。如果沒有找到,請檢測項目設(shè)置Build Setting->Build Option項。

疑問:
本地真機調(diào)試打包后。目錄
/Users/qufangliu/Library/Developer/Xcode/DerivedData/TinyColoroad-fovkdduxiolajbggnwdfrfgqhoaw/Build/Products
下會生成如下文件夾


上面示例里面,Debug-iphoneos文件夾下的.dSYM文件的uuid和我的.crash文件的uuid是對應(yīng)的。Release-iphoneos文件夾下的.dSYM文件的uuid和我獲得的.crash文件的uuid不同,但是也可以正常解析我的.crash文件。哈哈哈哈哈哈哈哈

**

**
**

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。原文鏈接:http://blog.csdn.net/u011056605

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容