[iOS]LSSafeProtector和Bugly雙劍合璧異常處理以及符號表配置

最近工作需要,項(xiàng)目中需要異常檢測

LSSafeProtector

LSSafeProtector 是一個(gè)可快速集成但功能強(qiáng)大的防止crash庫,不改變原代碼支持KVO自釋放,可以檢測到dealloc時(shí)未釋放的kvo旁赊,等19種crash,使用Objective-C編寫.

    //注意線上環(huán)境isDebug一定要設(shè)置為NO)
    [LSSafeProtector openSafeProtectorWithIsDebug:YES block:^(NSException *exception, LSSafeProtectorCrashType crashType) {
        [Bugly reportException:exception];
        //此方法相對于上面的方法致开,好處在于bugly后臺查看bug崩潰位置時(shí)屯断,不用點(diǎn)擊跟蹤數(shù)據(jù)步咪,再點(diǎn)擊crash_attach.log,查看里面的額外信息來查看崩潰位置
        [Bugly reportExceptionWithCategory:3 name:exception.name reason:[NSString stringWithFormat:@"%@  崩潰位置:%@",exception.reason,exception.userInfo[@"location"]] callStack:@[exception.userInfo[@"callStackSymbols"]] extraInfo:exception.userInfo terminateApp:NO];
    }];
    //打開KVO添加拳锚,移除的日志信息
    [LSSafeProtector setLogEnable:YES];
    [Bugly startWithAppId:@"5c825b6c8d"];

注意:[Bugly reportExceptionWithCategory:3 name:exception.name reason:[NSString stringWithFormat:@"%@ 崩潰位置:%@",exception.reason,exception.userInfo[@"location"]] callStack:@[exception.userInfo[@"callStackSymbols"]] extraInfo:exception.userInfo terminateApp:NO];

  1. 在IPA包分發(fā)(例如蒲公英)時(shí),是會無法獲取錯(cuò)誤位置的寻行,官方介紹是由于ipa包安裝的crash日志是非源碼霍掺,無法直接分析定位,必須符號化拌蜘。xcode安裝是源碼安裝杆烁。
  2. 在這種自定義匯報(bào)情況,Bugly的手動上傳符號表也是無法解析的简卧。
  3. 好處是對新手非常友好兔魂,能夠提示bug位置,而缺點(diǎn)就是以上兩個(gè)問題举娩,[Bugly reportException:exception];相對來說析校,可以獲取到完整堆棧信息以及得到手動上傳符號表的支持(這一點(diǎn)非常重要)。
  4. 還有一個(gè)優(yōu)點(diǎn)铜涉,是bugly會把bug歸類智玻,標(biāo)記已解決的問題再次出現(xiàn)時(shí)不會有明顯提示,且過濾和搜索有些不準(zhǔn)確芙代,需要挨個(gè)查找吊奢。

Bugly

騰訊Bugly,為移動開發(fā)者提供專業(yè)的異常上報(bào)和運(yùn)營統(tǒng)計(jì)纹烹,幫助開發(fā)者快速發(fā)現(xiàn)并解決異常页滚,同時(shí)掌握產(chǎn)品運(yùn)營動態(tài),及時(shí)跟進(jìn)用戶反饋铺呵。

為什么要配置符號表裹驰?
為了能快速并準(zhǔn)確地定位用戶APP發(fā)生Crash的代碼位置,Bugly使用符號表對APP發(fā)生Crash的程序堆棧進(jìn)行解析和還原陪蜻。

舉一個(gè)例子:
4001.png

符號表配置(只介紹iOS)

推薦使用官方的自動配置

注意點(diǎn):

  1. 下載符號表提取工具包buglySymbolIOS.jar需放在主目錄(Home)的bin目錄下(沒有bin文件夾,請自行創(chuàng)建)邦马;Tips:換電腦打包時(shí)需要配置這個(gè)工具包
  2. 符號表上傳腳本dSYMUpload.sh按官方教程配置到工程里即可,需要修改成自己的APP_ID等信息宴卖,完成這兩項(xiàng)即配置完成Bugly滋将。Tips:可以自定義查找buglySymbolIOS.jar包的目錄以及DEBUG模式是否上傳等。
  3. bug上報(bào)的數(shù)量有待考證症昏,而且會不定程度延遲随闽。(當(dāng)然一般項(xiàng)目不會有大量bug,不像我們公司每天十幾個(gè)bug肝谭,幾百次異常記錄??)
  4. dSYM符號表文件上傳不是一定能成功的>蛳堋6晟取!魏滚!
    觸目驚心的上傳成功概率

符號表手動上傳

使用符號表手動上傳的主要目的镀首,是在自動上傳失敗的情況下輔助解析堆棧信息的。有多種方式可以獲取dsym文件鼠次,但目前只介紹獲取發(fā)布版本(也就是Archive后的)的符號表更哄。

  1. 某一版本在Archive后(或在Xcode的Window的Organizer)選擇Show In Finder看到的.xcarchive文件,右擊顯示包內(nèi)容
  2. dSYMs文件夾內(nèi)找到項(xiàng)目名稱的dSYM文件
  3. 在Bugly頁面的符號表管理頁面上傳腥寇,上傳完成后成翩,對應(yīng)版本的問題就可以看到解析后的堆棧信息了。
  4. 另外赦役,如果無法判斷是否問題和dSYM文件的版本是否對應(yīng)麻敌,即可從問題具體信息頁面進(jìn)入,查看UUID和找到的dSYM文件的UUID是否一致掂摔。查看本地dSYM文件UUID的指令:xcrun dwarfdump --uuid <dSYM文件>
WX20201027-153231.png
WX20201027-153348.png

總結(jié)來說术羔,這雙劍合璧是極大程度保護(hù)了我們的軟件以及定位和解決bug。純屬個(gè)人經(jīng)驗(yàn)之談棒呛,使用過程中難免偏頗聂示,如有紕漏,望指正簇秒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鱼喉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子趋观,更是在濱河造成了極大的恐慌扛禽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皱坛,死亡現(xiàn)場離奇詭異编曼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)剩辟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門掐场,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贩猎,你說我怎么就攤上這事熊户。” “怎么了吭服?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵嚷堡,是天一觀的道長。 經(jīng)常有香客問我艇棕,道長蝌戒,這世上最難降的妖魔是什么串塑? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮北苟,結(jié)果婚禮上桩匪,老公的妹妹穿的比我還像新娘。我一直安慰自己粹淋,他們只是感情好吸祟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桃移,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葛碧。 梳的紋絲不亂的頭發(fā)上借杰,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音进泼,去河邊找鬼蔗衡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乳绕,可吹牛的內(nèi)容都是我干的绞惦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼洋措,長吁一口氣:“原來是場噩夢啊……” “哼济蝉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起菠发,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤王滤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滓鸠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雁乡,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年糜俗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踱稍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悠抹,死狀恐怖珠月,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锌钮,我是刑警寧澤桥温,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站梁丘,受9級特大地震影響侵浸,放射性物質(zhì)發(fā)生泄漏旺韭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一掏觉、第九天 我趴在偏房一處隱蔽的房頂上張望区端。 院中可真熱鬧,春花似錦澳腹、人聲如沸织盼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沥邻。三九已至,卻和暖如春羊娃,著一層夾襖步出監(jiān)牢的瞬間唐全,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工蕊玷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邮利,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓垃帅,卻偏偏與公主長得像延届,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子贸诚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355