Testin崩潰分析面包屑功能掃平Crash問題
面包屑(Breadcrumb)這個概念來自童話故事"漢賽爾和格萊特",當漢賽爾和格萊特穿過森林時,不小心迷路了,但是他們發(fā)現(xiàn)在沿途走過的地方都撒下了面包屑,讓這些面包屑來幫助他們找到回家的路。所以,面包屑的作用是幫助開發(fā)者了解用戶的行為路徑,定位用戶何時、為何發(fā)生崩潰。
在Testin崩潰分析服務中面包屑到底是什么?
新增面包屑功能,面包屑與日志信息類似,是開發(fā)人員自己定義的內容。通過插入面包屑來記錄應用程序運行時的信息,如變量值,應用程序狀態(tài),代碼進展,用戶操作,程序性能,以及回調(如低存儲器警告)等事件。本次Testin崩潰分析面包屑功能的SDK版本號為1.7.3(Android & iOS).
舉個簡單的例子,Android手機九宮格解鎖功能相信大家一定再熟悉不過,常見的解鎖手勢有Z型、M型、W型,但有些用戶為了防止密碼過于簡單,設置了很多千奇百怪的解鎖圖案,而經(jīng)常又會忘記正確的操作步驟。同理也體現(xiàn)在我們日常開發(fā)App的過程中,通過崩潰分析SDK可以具體定位到哪行代碼出現(xiàn)問題,但有些崩潰和異常出現(xiàn)的原因往往會經(jīng)過復雜的方法調用關系,導致開發(fā)者面對Bug而無法修復。通過面包屑,開發(fā)者能夠縮小定位問題的范圍,從而更快地定位、解決問題。
當面包屑灑在森林中后
當面包屑灑在森林中后又會如何呢?某家大型手游企業(yè)在使用面包屑解決段違例崩潰問題時,總結出了以下幾個關健的切入點:
函數(shù)調用棧:通過調用棧能分析絕大多數(shù)簡單段違例崩潰的來龍去脈,運氣好的話,看棧頂兩三層就可以找到問題并加以修復,諸如空指針相關的絕對結果錯誤在完整的調用棧面前幾乎無法藏身。
違例地址:利用違例地址并結合調用上下文,可以很簡單的推斷出來是空指針錯誤還是野指針錯誤。
應用臨終操作:一般來說,對于野指針錯誤,函數(shù)調用棧和違例地址信息是基本沒有參考價值的,它們只會告訴我們程序在哪里訪問了哪個不該訪問的地址,但是對于程序為什么要去訪問,又怎么去訪問就愛莫能助了。對于野指針段違例錯誤,我們需要知道最終用戶是如何一步步靠近崩潰點的,一般來說本地調試可以使用trace log。
其他:機型,應用版本,內存,用戶反饋等作為參考。
對于線上的崩潰,我們使用了testin崩潰分析,新版本(1.7.4)提供了一個非常給力的新功能:面包屑,這個功能可以用來收集100條自定義臨終信息,可以很好的針對三號切入點
Testin崩潰分析中的面包屑到底能做什么?
添加面包屑,開發(fā)人員只需插入一個API調用(TestinAgent實例化后)。抓取的面包屑可以幫助開發(fā)人員:
1. 識別和分析會話事件、狀態(tài)或參數(shù)來進行調試。
2. 利用這些信息,以及堆棧信息、診斷和用戶搜索,確定問題根源。
3. 補充IDE調試,使他們能夠捕獲有關應用程序行為的有用信息,以便獲得更多的用戶。
4. 對于每個面包屑會話,SDK中自動存儲的start痕跡標記用戶會話的開始,每個面包屑會話最多有100條面包屑。
Testin崩潰分析的“面包屑”可幫助開發(fā)者分析Crash原因:用戶做了什么操作、函數(shù)中變量是什么?不讓任何一個Crash(崩潰)橫行。