崩潰分析方式:命令行解析Crash文件 通過Mac自帶的命令行工具解析Crash文件需要具備三個文件 symbolicatecrash,Xcode自帶的崩潰分析工具,使用這個工具可以更精確的定位崩潰所在的位置,將0x開頭的地址替換為響應的代碼和具體行數。 我們打包時產生的dSYM文件。 崩潰時產生的 ...
崩潰分析方式:命令行解析Crash文件
通過Mac自帶的命令行工具解析Crash文件需要具備三個文件
- symbolicatecrash,Xcode自帶的崩潰分析工具,使用這個工具可以更精確的定位崩潰所在的位置,將0x開頭的地址替換為響應的代碼和具體行數。
- 我們打包時產生的dSYM文件。
- 崩潰時產生的Crash文件。
1、獲取.crash文件
獲取崩潰信息方式:
- 使用友盟、蒲公英等第三方崩潰統計工具。->iOS 友盟第三方崩潰統計的解析-dSYM
- 自己實現應用內崩潰收集,並上傳伺服器。
- Xcode-Devices中直接查看某個設備的崩潰信息。
- 使用蘋果提供的Crash崩潰收集服務。
這篇文章先只用第四個方式-審核被拒給我的.crash文件,其他方式以後討論。
2、獲取 .app 和 .app.dSYM 文件
2.1、步驟:
1、Xcode-Window-Organize找到要檢查的對應Archives找到App-右擊-Show in Finder
2、右擊 .xcarchive 文件-顯示包內容
3、分別複製dSYMs文件夾下的 **.app.dSYM 文件和 Products->Applications文件夾下的 app文件放入 .crash 文件所在的crash文件夾中(文件夾自己建的)。
2.2、dSYM 符號集介紹:
- 符號集是我們對ipa文件進行打包之後,和.app文件同級的尾碼名為.dSYM的文件,這個文件必須使用Xcode進行打包才有。
- 每一個.dSYM文件都有一個UUID,和.app文件中的UUID對應,代表著是一個應用。而.dSYM文件中每一條崩潰信息也有一個單獨的UUID,用來和程式的UUID進行校對。
- 我們如果不使用.dSYM文件獲取到的崩潰信息都是不准確的。
- 符號集中存儲著文件名、方法名、行號的信息,是和可執行文件的16進位函數地址對應的,通過分析崩潰的.Crash文件可以準確知道具體的崩潰信息。
當程式崩潰的時候,我們可以獲得到崩潰的錯誤堆棧,但是這個錯誤堆棧都是0x開頭的16進位地址,需要我們使用Xcode自帶的symbolicatecrash工具來將.Crash和.dSYM文件進行符號化,就可以得到詳細崩潰的信息。
3、獲取symbolicatecrash工具
1、打開終端輸入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
我找到的是:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
2、用命令將symbolicatecrash拷貝到桌面的crash文件夾裡面,與.app和.app.dSYM放一起
cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/***/Desktop/crash
4、開始命令行解析Crash文件
1、打開終端用命令切換到桌面的crash目錄下:
cd /Users/***/Desktop/crash
2、執行命令
./symbolicatecrash /Users/***/Desktop/crash/*.crash /Users/***/Desktop/crash/*.app.dSYM > jieguo.crash
2.1、 如果上面命令不成功,需要使用下麵命令設置一下導出的環境變數,然後重覆上面解析的操作。
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
3、解析完成後會生成一個新的.Crash文件,這個文件中就是崩潰詳細信息。
解析前 解析後使用友盟、蒲公英等第三方崩潰統計工具獲取的信息可以用如下方式解析iOS 友盟第三方崩潰統計的解析-dSYM