Xcode7.3工具解析App崩潰日誌(.crash檔案)

來源:互聯網
上載者:User

標籤:

Xcode7.3工具解析App崩潰日誌(.crash檔案)

 

原文連結:http://blog.csdn.net/u011056605

開發的App或者遊戲提交審核後,偶爾會收到測試反饋的訊息,說應用崩潰了,bug偶爾出現,難以找到確定的重現方法。

怎麼辦?可以分析崩潰檔案啊,也就是app崩潰後,自動儲存在裝置本地的.crash檔案。

獲得崩潰日誌的方式,在 擷取裝置上的調試資訊與崩潰日誌分析 中有說。

 

在環境ok的情況下,xcode中是可以自動解析.crash檔案的。舊版本的xcode甚至可以匯入第三方.crash檔案,但是xcode7.3貌似是不能匯入.crash檔案了。

舊版的開啟檔案是菜單Window-Organizer,介面下方可以直接匯入.crash檔案,

新版的介面修改了,而且貌似不能直接匯入.crash檔案,

 

 

這時候,我們還是用Xcode內建的 symbolicatecrash 工具來解析測試發來的.crash檔案。

1.配置環境變數DEVELOPER_DIR,如果配置過了就跳過此步驟

臨時方法:開啟終端Terminal,輸入命令 

[plain] view plain copy 
  1. export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer  

 

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

 

 

[plain] view plain copy 
  1. # Add environment variable DEVELOPER_DIR  
  2. export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer  
  3. export PATH=$DEVELOPER_DIR:$PATH  

 

然後儲存檔案,使用source ~/.bash_profile命令或者完全退出終端來重新整理環境變數。

2.找到xcode的解析工具 symbolicatecrash 。查詢這個工具的路徑,貌似很多部落格裡面都是舊版的xcode了,所以根據部落格裡面的內容很難找到工具。

我使用的Xcode 7.3版本的 symbolicatecrash 工具路徑為

[plain] view plain copy 
  1. /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash  
使用其他版本的小夥伴可以看看下面幾個目錄,或者自行搜尋咯 [plain] view plain copy 
  1. /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKit.framework/Versions/A/Resources  
[plain] view plain copy 
  1. /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources  
[plain] view plain copy 
  1. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources  

 


  
找到之後我就直接複製到案頭上來了
  

 




3.安裝Xcode的Command Line Tools工具,可以查看這篇日誌 Xcode中Command Line Tools安裝方法

步驟還是開啟終端,輸入下面的命令即可開始下載安裝

[plain] view plain copy 
  1. xcode-select --install  

 

4.找到app包所對應的.dSYM檔案,強調要對應

.dSYM 是儲存 16 進位函數地址映射資訊的中轉檔案,我們調試的 symbols 都會包含在這個檔案中,並且每次編譯項目的時候都會產生一個新的 dSYM 檔案。測試給過來的.crash檔案中,關於崩潰的確切語句和函數部分只有16進位地址符號,並不是我們在xcode調試時看到的xxx.cpp(xxfunction xx行)這樣的。如

我們需要使用.dSYM檔案來對地址進行解析,這樣就可以看到是是哪個類裡面的哪個函數出了問題。如何擷取.dSYM檔案,在  擷取裝置上的調試資訊與崩潰日誌分析 有講。

如果是本地真機測試,路徑應該是

/Users/name/Library/Developer/Xcode/DerivedData/MyApp-aerllxbslxqnjhgfeoiagutyemyz(一串奇怪的值)/Build/Products

目錄下的Debug-iphoneos和Release-iphoneos檔案夾中都會包含.app和.dSYM檔案

如果是發布模式,可以在Xcode的菜單Window-Organizer框中看到發布過的app版本,選擇對應版本可以下載.dSYM檔案,如

 

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

 

5.獲得了.crash檔案  .dSYM檔案  symbolicatecrash工具 後,就可以開始解析崩潰日誌了。

要解析.crash檔案,需要與其版本對應的.dSYM檔案,也就是需要對應uuid。

使用如下命令可以查看.dSYM檔案的uuid

[plain] view plain copy 
  1. dwarfdump --uuid /Users/qufangliu/Mydsym.app.dSYM  
效果

 

可以開啟.crash檔案,查看crash檔案需要的dSYM檔案的uuid,如

 

6.可以看到,我們已經有了對應的.crash和.dSYM檔案了。可以直接開始解析了。

解析用的命令格式為:symbolicatecrash解析工具 .crash檔案 .dSYM檔案 > 輸出到某個檔案(自訂即可)。結果

 

7.可以查看結果檔案了

可以看到,原先的地址符號被解析出來了,我們能直接看到導致崩潰的函數和檔案。這樣就方便查bug了。

 

 

使用symbolicatecrash工具解析崩潰日誌條件:

1.配置環境變數DEVELOPER_DIR。

2.找到Xcode的解析工具symbolicatecrash

3.安裝了Xcode的Command Line Tools工具

4.獲得.crash檔案

5.獲得.dSYM檔案

6..crash檔案和.dSYM檔案的uuid要對應起來(據說每次打包都會出現不同的.dSYM)

 

 

注意:

項目的Debug模式下,預設是不產生.dSYM檔案的。如果沒有找到,請檢測項目設定Build Setting->Build Option項。

 

疑問:

本地真機調試打包後。目錄

/Users/qufangliu/Library/Developer/Xcode/DerivedData/TinyColoroad-fovkdduxiolajbggnwdfrfgqhoaw/Build/Products

下會產生如下檔案夾

 

上面樣本裡面,Debug-iphoneos檔案夾下的.dSYM檔案的uuid和我的.crash檔案的uuid是對應的。Release-iphoneos檔案夾下的.dSYM檔案的uuid和我獲得的.crash檔案的uuid不同,但是也可以正常解析我的.crash檔案。哈哈哈哈哈哈哈哈

 

     

Xcode7.3工具解析App崩潰日誌(.crash檔案)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.