Symbolicating Crash Reports(符號(hào)化崩潰報(bào)告)
符號(hào)化 是解決將樹結(jié)構(gòu)地址轉(zhuǎn)化Wie源碼的方法和函數(shù)的名字蕾哟、可認(rèn)識(shí)的標(biāo)示符的進(jìn)程票渠;如果沒(méi)有這個(gè)步驟很難找到崩潰出現(xiàn)在哪里。
1)當(dāng)編譯器將源碼轉(zhuǎn)化為機(jī)器碼時(shí)哗戈,它同樣產(chǎn)生調(diào)試的符號(hào)畏浆,這個(gè)符號(hào)集匹配每一個(gè)機(jī)器的介紹在被編譯為二進(jìn)制對(duì)應(yīng)到源碼的行。
依賴調(diào)試信息格式 (DEBUG_INFORMATION_FORMAT)的建立設(shè)置氧枣,這些調(diào)試符號(hào)被存儲(chǔ)在二進(jìn)制或在一個(gè)比較的調(diào)試符(dsym)文件中烧董。
默認(rèn)龙填,一個(gè)應(yīng)用(debug)調(diào)試配置的建立存儲(chǔ)了調(diào)試符號(hào)在被編譯好的二進(jìn)制文件中當(dāng) 而release方式建立程序應(yīng)用存儲(chǔ)調(diào)試符號(hào)在一個(gè)協(xié)同的dsym文件去減少字節(jié)大小喘先。
調(diào)試符號(hào)文件和應(yīng)用的二進(jìn)制被綁定通過(guò)UUID(per-build-basis),一個(gè)新的UUID被生成每一個(gè)應(yīng)用的建立和唯一的標(biāo)示符。
甚至一個(gè)方法(標(biāo)識(shí))執(zhí)行被重建從相同的源代碼中國(guó)恨课,和相同的編譯器設(shè)置,它將有一個(gè)不同的建立UUID颜武。
調(diào)試符號(hào)文件來(lái)自于隨后的簡(jiǎn)歷,甚至從相同的源文件中籍铁,將不會(huì)和其他的簡(jiǎn)歷程序進(jìn)行相互操作。
【即為:(1)編譯文件和描述符進(jìn)行綁定 , (2)UUID是一一對(duì)應(yīng),程序之間和dsym不會(huì)混淆】
2)當(dāng)你歸檔應(yīng)用用于發(fā)布時(shí),xcode將會(huì)集合應(yīng)用二進(jìn)制和.dsym 文件并且存儲(chǔ)它們?cè)谝粋€(gè)位置在你的home文件夾下面。你能夠找到所有你的歸檔得應(yīng)用在xcode組織中在 "Archived” 字段下忌堂。 App Distribution Guide
【也就是打包的是偶李命,可以在這里會(huì)看到.dsym 文件進(jìn)行下載】
重點(diǎn): 從測(cè)試、應(yīng)用預(yù)覽和自定義中符號(hào)化崩潰,你必須retain 歸檔對(duì)于你的每一次創(chuàng)建應(yīng)用。
3)發(fā)布應(yīng)用通過(guò)app store 或者構(gòu)架一個(gè)test fight 的test版本,你將給出的選擇包括dsym文件當(dāng)你上傳你的歸檔文件到iTunes Connect。在子類從test flight 中集合用戶和客戶當(dāng)他們有選擇分享診斷數(shù)據(jù)的時(shí)候。對(duì)于更多信息查看App Distribution Guide 。重點(diǎn):崩潰日志從app預(yù)覽中收到地 信息不會(huì)被符號(hào)化赴肚,甚至包括你的的dsym文件當(dāng)你上傳你的歸檔文件到iTunes Connect上。你將需要符號(hào)化更多崩潰報(bào)告來(lái)自于應(yīng)用預(yù)覽使用xcode。可看:Symbolicating Crash Reports With Xcode.
4)當(dāng)應(yīng)用崩潰的時(shí)候炬藤,一個(gè)沒(méi)有符號(hào)的崩潰日志被創(chuàng)建和存儲(chǔ)在設(shè)備上。
5)用戶取回直接取回崩潰日志從設(shè)備中【Debugging Deployed iOS Apps 步驟】,如果你已經(jīng)發(fā)布你的應(yīng)用工通過(guò) AdHoc or Enterprise distribution嗓违,這個(gè)只有一種方式就是通過(guò)用戶疏日。
6)奔潰報(bào)告從設(shè)備上獲取沒(méi)有符號(hào)化的宾肺,將需要被符號(hào)化通過(guò)xcode增拥。xcode使用dsym文件鏈接你的二進(jìn)制應(yīng)用去替代每一個(gè)地址在backtrace和原始的代碼猾封。結(jié)果就是符號(hào)化崩潰報(bào)告枚钓。
7) 如果用戶有選擇分享診斷數(shù)據(jù)到蘋果嫩舟,或者你的用戶已經(jīng)安裝你的應(yīng)用的測(cè)試版本通過(guò)testflight蜀踏。崩潰日志被上傳到app Store上。
8)app store 符號(hào)化崩潰日志和組織類似的崩潰報(bào)告。這個(gè)的總數(shù)崩潰報(bào)告被調(diào)用在一個(gè)崩潰點(diǎn)。
9)符號(hào)化崩潰報(bào)告用于解決bug,在xcode的崩潰組織中。