前言
在iOS
開發(fā)中捉邢,通常會(huì)遇到很多各種各樣的線上奔潰康震,這無(wú)疑給用戶帶來(lái)了極其不好的體驗(yàn)蛛芥。在平時(shí)開發(fā)過程中提鸟,我們可以直接通過斷點(diǎn)調(diào)試,或直接查看奔潰的地方找到原因仅淑,但是一般情況下称勋,線上的奔潰由于都是一些地址和偏移量組成的未符號(hào)化過的奔潰文件(即crash
文件),我們都無(wú)法通過奔潰信息直接定位到具體原因漓糙!因此铣缠,將未符號(hào)化的crash
文件通過dSYM
解析就非常重要了。
本文主要簡(jiǎn)單地介紹如何將奔潰文件符號(hào)化昆禽,變成清晰可見的奔潰文件蝗蛙,以便快速定位奔潰原因。
解析步驟
- 在任意目錄醉鳖,這里以桌面為例捡硅,創(chuàng)建文件夾
CrashParser
(名字隨意)
cd ~/Desktop && mkdir CrashParser && cd CrashParser
將
xxx.crash
、xxx.app.dSYM
文件拖到CrashParser
文件夾中解析并查看符號(hào)化(解析)后的奔潰信息
cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash . && export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer" && ./symbolicatecrash xxx.crash xxx.app.dSYM > ParsedSymbol.crash && open ParsedSymbol.crash
其中盗棵,將xxx.crash xxx.app.dSYM
中的xxx
替換成對(duì)應(yīng)的完整奔潰文件名和dSYM
文件名壮韭,其它的都可以不用修改,直接執(zhí)行即可纹因。
例如喷屋,下面的奔潰文件在解析前為UnparsedSymbol.crash
,dSYM
文件夾為Demo.app.dSYM
? CrashParser ls
Demo.app.dSYM UnparsedSymbol.crash
? CrashParser cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash . && export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer" && ./symbolicatecrash UnparsedSymbol.crash Demo.app.dSYM > ParsedSymbol.crash && open ParsedSymbol.crash
在執(zhí)行之后瞭恰,變成如下
? CrashParser ls
Demo.app.dSYM ParsedSymbol.crash UnparsedSymbol.crash symbolicatecrash
其中ParsedSymbol.crash
就是最終解析后的符號(hào)化文件屯曹,symbolicatecrash
是我們用于執(zhí)行解析的可執(zhí)行文件,這個(gè)可執(zhí)行文件來(lái)源于Xcode
惊畏。
注意點(diǎn)
通常情況下恶耽,可執(zhí)行文件symbolicatecrash
的路徑/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
是不變的,如果你不確定這個(gè)路徑是否正確颜启,通過以下命令可以查看
find /Applications/Xcode.app -name symbolicatecrash -type f
如果出現(xiàn)錯(cuò)誤Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
偷俭,執(zhí)行如下命令
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"