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

研究數據代表,高達62%的用戶在使用移動App時遭遇過死機、無反應、閃退等程序崩潰(Crash)。若是Crash發生在首次啓動,21%的用戶會選擇當即卸載App;而若是Crash發生在使用過程當中,70%的用戶會給App差評。程序員

這個數字是否是高的有點可怕?質量學界有名的KANO模型也證明了這個道理,產品性能和用戶滿意之間並不老是呈線性關係。架構

在產品功能的優先級上,咱們要優先知足基本型需求,第二是指望型需求,最後纔是興奮型需求。由於若是基本型需求的表現差強人意,用戶的不滿情緒會急劇增長,甚至粉轉黑,即便知足此類需求並不能帶來客戶滿意度的增長。工具

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

好比一個號稱裝備雙曲面柔性屏、2256萬超高像素、充電五分鐘通話兩小時的完美手機,若是打電話信號很是差、時斷時續、通話質量掉渣,想必買了的客戶都吵着要退貨吧。性能

而對於一個App來講,用戶的基本型需求就是程序穩定可用不閃退優化

Crash全方位解決方案

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

Crash平臺實現了哪些能力

它實現了多平臺的Crash數據徹底採集,幫助開發者動態監測App在各移動設備的異常狀況,且支持按錯誤類型和應用版本篩選/分析錯誤, 若是APP發生重大的質量問題,系統將自動告警給相關人員,讓相關人員作出相應的應急處理。更重要的是它簡化了流程,助力App開發者用「一行代碼」擁有「完整Crash分析系統」,爲App運行時的崩潰檢測和恢復提供有力保障。cdn

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

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

Crash分析系統架構

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

Crash 分析背後的技術攻關

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

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

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

一個簡單的Crash處理會涉及到至少三個重要環節:一是源代碼文件編譯時的編譯過程,中間會生成符號表和二進制文件;二是用戶安裝運行時,發生Crash後,整個捕獲過程;三是後臺對上報的異常堆棧進行堆棧符號還原的過程。

除了堆棧數據,系統還須要更多維度更靈活的數據來輔助定位,諸如時間、狀態、身份標識、歸因、位置等詳細的信息。

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

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

同時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

相關文章
相關標籤/搜索