【分享】如何構建並應用Crash實時統計

騰訊移動分析_MTA發表於2017-07-14

研究資料表明,高達62%的使用者在使用移動App時遭遇過當機、無反應、閃退等程式崩潰(Crash)。如果Crash發生在首次啟動,21%的使用者會選擇立即解除安裝App;而如果Crash發生在使用過程中,70%的使用者會給App差評。

這個數字是不是高的有點可怕?質量學界有名的KANO模型也證實了這個道理,產品效能和使用者滿意之間並不總是呈線性關係。

在產品功能的優先順序上,我們要優先滿足基本型需求,第二是期望型需求,最後才是興奮型需求。因為如果基本型需求的表現差強人意,使用者的不滿情緒會急劇增加,甚至粉轉黑,即使滿足此類需求並不能帶來客戶滿意度的增加。

未滿足的基本型需求會帶來嚴重的負面體驗
未滿足的基本型需求會帶來嚴重的負面體驗

比如一個號稱裝備雙曲面柔性屏、2256萬超高畫素、充電五分鐘通話兩小時的完美手機,如果打電話訊號非常差、時斷時續、通話質量掉渣,想必買了的客戶都吵著要退貨吧。

而對於一個App來說,使用者的基本型需求就是程式穩定可用不閃退

Crash全方位解決方案

針對這個App開發同學的剛需,騰訊移動分析(MTA)將內部打磨多年的Crash分析能力對外輸出,合成進階版Crash分析。本文我們主要分享了Crash分析平臺構建的架構,與在Crash實時分析統計的應用中,攻克的技術難點,希望能為更多讀者帶來裨益。

Crash平臺實現了哪些能力

它實現了多平臺的Crash資料完全採集,幫助開發者動態監測App在各移動裝置的異常情況,且支援按錯誤型別和應用版本篩選/分析錯誤, 如果APP發生重大的質量問題,系統將自動告警給相關人員,讓相關人員做出相應的應急處理。更重要的是它簡化了流程,助力App開發者用“一行程式碼”擁有“完整Crash分析系統”,為App執行時的崩潰檢測和恢復提供有力保障。

具體來講,MTA提供的 Crash分析解決了四大痛點:

  1. 它實現了多平臺的Crash資料完全採集。不同平臺和CPU架構環境下的異常資料、堆疊、環境屬性、執行引數等資料的完整獲取,是後續定位的基礎。
  2. 資料的實時高效處理。將異常資料實時化處理,第一時間展示給使用者,實時瞭解產品質量。並且支援按錯誤型別和應用版本篩選錯誤。
  3. 堆疊資料的精準還原。準確的異常追蹤過程、精確到行號的堆疊還原,是還原Crash現場的最有力資料。
  4. 完善的告警運營體系。Crash分析完備的監控告警機制能及時監控App質量的波動,把握質量情況,甚至能雲控助力遠端解決問題。

Crash分析系統架構

下圖是 Crash分析的全方位解決方案視覺化圖。

Crash 分析背後的技術攻關

能實現如此牛逼哄哄的功能,背後自然少不了程式設計師小哥哥們的技術突破,總的來說有二:終端Crash採集多平臺建設和海量實時還原系統建設。

1、 終端Crash採集多平臺建設

終端資料採集主要分為兩個維度,一個是基本平臺的建設,即Android和Java與C/C++、iOS的Objective C和Swift;二是專業領域的定製,比如主流的手遊引擎Cocos2dx中的C/C++、Lua與JS,以及Unity3d的C#。有了這兩個維度平臺,基本上能覆蓋絕大部分場景。而在眾多語言平臺上,Android的C/C++異常捕獲是最具挑戰性的。

一個簡單的Crash處理會涉及到至少三個重要環節:一是原始碼檔案編譯時的編譯過程,中間會生成符號表和二進位制檔案;二是使用者安裝執行時,發生Crash後,整個捕獲過程;三是後臺對上報的異常堆疊進行堆疊符號還原的過程。

除了堆疊資料,系統還需要更多維度更靈活的資料來輔助定位,諸如時間、狀態、身份標識、歸因、位置等詳細的資訊。

2、 海量實時還原系統建設

還原系統主要是用於處理不同平臺上報的堆疊,主要有四個部分:預處理,流量控制、資料過濾;堆疊還原,不同平臺的符號化堆疊內容;智慧合併,特性提取與歸類;入庫,批量入庫,實時檢索。

同時MTA自研的iOS符號表還原工具也很強大,它不依賴於Mac OS系統,支援framwork符號還原,支援Swift語言,支援Demangle,還可精準到行號。

通過解析iOS的dSYM檔案,我們可以得到符號表和dwarf資料,解析dwarf資料後可以得到解析後地址與檔案行號對映關係,最終可對應到Crash地址發生的行號。

堆疊還原後,我們需要做結構化處理以方便提取特徵堆疊。分級優化,按App、第三方元件、系統分級,第一次提取最直接相關的,第二次做干擾資料的過濾優化;同時,還要對堆疊的呼叫鏈過程做分析。

同時,增量計算模型還有如下功能:單層單節點內計算小段時間(秒級)的增量,定期傳送到下一層節點進行彙總;全整數運算:減少字串處理開銷;全記憶體處理:檔案持久化支援,保證端到端的訊息可靠傳輸;智慧容災策略:本地檔案備份、雙機熱備、一致性hash。

除以上兩大技術攻關,MTA還有一個亮點功能,那就是一行程式碼,一個系統。只需要整合簡單一行程式碼,便可擁有Crash分析、自定義事件、分群畫像、無埋點等一系列服務,不愧為解放開發者的神器。


那麼,當使用者秒刪App時,他在想什麼呢?

暴躁的小A:垃圾軟體,毀我青春,廢我前程!
淡定的小B:連程式穩定都做不到,怎麼實現“改變世界”的小目標呀~
聰明的小C:趕緊接入騰訊MTA來為你的App保駕護航啊!

聯絡我們:

如果您希望試用或者體驗 MTA Crash分析,請訪問MTA官網接入試用。

如果您對該功能有疑問、或者在使用中遇到了困難,歡迎您聯絡mta官網線上客服,或者傳送您的問題郵件至:dtsupport@tencent.com

商務合作或業務諮詢,請聯絡以下郵箱:mta@tencent.com

相關文章