真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS監(jiān)控筆記之啟動(dòng)crash-創(chuàng)新互聯(lián)

前言

專(zhuān)注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)衡南免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

相較于正常的崩潰問(wèn)題,啟動(dòng)crash造成的損失要遠(yuǎn)遠(yuǎn)大得多。正常來(lái)說(shuō),如果有足夠強(qiáng)健的構(gòu)建發(fā)布系統(tǒng),大多數(shù)時(shí)候能在版本上線之前及時(shí)發(fā)現(xiàn)問(wèn)題并且修復(fù),但是仍然存在小概率的線上意外。啟動(dòng)crash一般同時(shí)具備損害嚴(yán)重以及難以捕獲兩大特點(diǎn)

啟動(dòng)過(guò)程

從應(yīng)用圖標(biāo)被用戶(hù)點(diǎn)擊開(kāi)始,直到應(yīng)用可以開(kāi)始響應(yīng)發(fā)生了很多事情。正常來(lái)說(shuō),盡管我們希望crash監(jiān)控工具啟動(dòng)的盡可能早,但接入方往往總是等到launch事件之后才能啟動(dòng)工具,而在這個(gè)時(shí)間之前發(fā)生的崩潰就是啟動(dòng)crash,下面列出了在應(yīng)用直到launch時(shí),存在的可能發(fā)生啟動(dòng)crash的階段:

iOS監(jiān)控筆記之啟動(dòng)crash

其中initialize的順序可能在更早,但總是會(huì)在load和launch之間。從圖中來(lái)說(shuō),如果我們想要監(jiān)控啟動(dòng)crash,那么開(kāi)始監(jiān)控的時(shí)間點(diǎn)必須要放到load階段,才能保證最好的監(jiān)控效果

如何監(jiān)控

最簡(jiǎn)單的方式是不管接入方愿不愿意啟動(dòng)crash監(jiān)控,我們?cè)趌oad方法中直接啟動(dòng)監(jiān)控功能。但是這樣的做法會(huì)讓?xiě)?yīng)用面臨四個(gè)風(fēng)險(xiǎn)點(diǎn):

  • 類(lèi)似A/B的線上開(kāi)關(guān)方案失去了對(duì)監(jiān)控工具的控制能力
  • crash監(jiān)控啟動(dòng)存在崩潰問(wèn)題,這將導(dǎo)致應(yīng)用完全癱瘓
  • load階段類(lèi)未加載完畢,啟動(dòng)工具過(guò)程的遞歸加載引發(fā)的崩潰無(wú)法監(jiān)控

綜合這些風(fēng)險(xiǎn)點(diǎn),啟動(dòng)crash監(jiān)控的方案應(yīng)該滿(mǎn)足這些條件:

  • 啟動(dòng)過(guò)程不依賴(lài)類(lèi),避免遞歸加載造成的crash
  • 一旦過(guò)程發(fā)生crash,能夠保證日志記錄的安全性

最終得出監(jiān)控的流程圖:

iOS監(jiān)控筆記之啟動(dòng)crash

不依賴(lài)類(lèi)

不依賴(lài)類(lèi)意味著監(jiān)控工具需要使用C接口來(lái)實(shí)現(xiàn)功能,雖然比較麻煩,但由于runtime的機(jī)制決定了所有方法調(diào)用最終要以objc_msgSend函數(shù)作為入口,因此如果能夠hook掉這個(gè)函數(shù)并且實(shí)現(xiàn)一個(gè)調(diào)用棧結(jié)構(gòu),將所有調(diào)用入棧記錄,那么追蹤方法調(diào)用就不是難事。fishhook提供了hook掉函數(shù)的能力:

__unused static id (*orig_objc_msgSend)(id, SEL, ...);

__attribute__((__naked__)) static void hook_Objc_msgSend() {
 /// save stack data
 /// push msgSend
 /// resume stack data
 
 /// call origin msgSend
 
 /// save stack data
 /// pop msgSend
 /// resume stack data
}

void observe_Objc_msgSend() {
 struct rebinding msgSend_rebinding = { "objc_msgSend", hook_Objc_msgSend, (void *)&orig_objc_msgSend };
 rebind_symbols((struct rebinding[1]){msgSend_rebinding}, 1);
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


標(biāo)題名稱(chēng):iOS監(jiān)控筆記之啟動(dòng)crash-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/spgsg.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部