Crash
文件獲取1.1. 遠程獲取;已經上傳到iTunes Connect
的應用,能夠經過iTunes Connect
的App分析
查看App
崩潰狀況不會有崩潰日誌
,若是是TestFlight
測試,則能夠在iTunes Connect
獲取到崩潰日誌git
1.2. 遠程獲取;經過Xcode
菜單Window -> Organizer -> Crashes
獲取用戶的崩潰日誌 github
iPhone
分析,纔可以獲取到用戶的崩潰日誌1.3. 本地獲取;在手機上設置 -> 隱私 -> 分析與改進 -> 分析數據
中,根據應用名稱和日期時間找到你須要的日誌,點擊進去後,右上角會有個分享按鈕,分享給Mac
bash
1.4. 把手機鏈接到Mac
,經過Xcode
菜單Window -> Devices and Simulators -> Devices -> View Device Logs
獲取用戶的崩潰日誌app
iOS
系統會沒有上面提到的分享按鈕,這時候能夠全選複製,再發送給Mac
Crash
文件符號化Xcode
自動符號化和經過手動命令行工具symbolicatecrash
符號化;這兩種方式原理同樣,都須要dSYM
文件,只不過前者是Xcode
自動幫咱們完成的Xcode
上傳iTunes Connect
的,並同時上傳了.xcarchive
文件(其實是一個文件夾,包含.ipa和.dSYM文件)
,Xcode
會默認幫你勾選該選項,那麼從iTunes Connect
獲取到的日誌就已是符號化過的了2.1. 使用Xcode
自動符號化Crash
文件,Xcode
自帶的工具很是好用工具
Mac
就是打包的機子,而且獲得了發生崩潰的手機,那麼手機鏈接電腦,經過Xcode
菜單Window -> Devices and Simulators -> Devices -> View Device Logs
找到本身的日誌,就是符號化事後的,若是沒有符號化,就稍微等待一下子,或者右擊點出菜單選擇Re-Symbolicate Log
Mac
出包機,沒有手機只有崩潰日誌,那麼一樣能夠經過Xcode
菜單Window -> Devices and Simulators -> Devices -> View Device Logs
把崩潰日誌直接拖進去,就是符號化事後的,若是沒有符號化,就稍微等待一下子,或者右擊點出菜單選擇Re-Symbolicate Log
Xcode
是拖不進去的,遇到這種狀況能夠用下面的手動符號化方式dSYM
文件,Xcode
就能自動找到他併爲你符號化
2.2. 經過終端命令行工具symbolicatecrash
符號化 大概須要以下三個文件,下面是獲取這些文件的方法 測試
Xcode -> Window -> Organizer -> Archiver
找到打包的項目,右鍵Show In Finder
,找到AppName.xcarchive
,右鍵顯示包內容,找到AppName.app.dSYM
tmp
,將以上兩個文件拷貝到tmp
文件夾中find /Applications/Xcode.app -name symbolicatecrash -type f
查找symbolicatecrash
,其中/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
路徑是須要的symbolicatecrash
文件,將symbolicatecrash
文件也拷貝到tmp
文件夾中crash
文件也拷貝到tmp
文件夾中,crash
文件的格式多是.beta
、.crash
或.ips
crash
文件格式以.crash
爲例# 進入到 tmp 文件夾中
cd ~/Desktop/tmp
# 分析 crash 文件,會在 `tmp` 文件夾中生成 crash.log 文件
./symbolicatecrash ./xxx.crash ./AppName.app.dSYM > crash.log
或./symbolicatecrash ./xxx.crash ./.app.dSYM > crash.log
複製代碼
zsh: permission denied: ./symbolicatecrash
說明是symbolicatecrash
文件有問題,可能該文件不是本機獲取的,或者是以前獲取的、Xcode
升級等問題形成的,從新在本機上按上面方法獲取便可Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
嘗試如下命令後,再重複上面命令,正常狀況就能夠分析bug了export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
Crash
文件和dSYM
這兩個文件裏面的UUID
是一致的,若是不一致,就說明不是本次Crash
對應的文件,就不能進行符號化;查看dSYM
文件裏面的UUID
命令:dwarfdump --uuid AppName.app.dSYM
;查看Crash
文件文件的UUID
就比較簡單了,直接打開,Crash
最上面的就是各類信息,不一樣系統版本給的格式可能會有不一樣,下圖內容爲參考
Xcode
在Debug
模式下默認關閉生成dSYM
文件,Release
模式下默認生成dSYM
文件的, 要生成dSYM
文件須要查看一下項目的Build Settigns -> Build Options -> Debug information Format
屬性;只有該屬性設置爲DWARF with dSYM File
時,編譯纔會生成dSYM
文件Xcode 11.2
和iOS 13.2
上寫的教程,不一樣的系統版本的Xcode
和手機系統獲取路徑和符號化方式會有變化附:個人博客地址ui