1. 程式人生 > 實用技巧 >一個crash引發對版本管理備註重要性的思考

一個crash引發對版本管理備註重要性的思考

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

在某個風和日麗的晚上,檢視友盟後臺時,發現有個app crash發生率特別高。情況如圖所示

SIGSEGV crash一般是引用物件給回收為空,測試了一番,重現了bug,當app進入後臺時,app就會掛在GPUImage 某個方法上,這個問題以前沒出現過,然後最近手機又更新到ios9,xcode老提示一些莫名奇妙的錯誤,所以自然會認為是ios9系統的問題,但是這麼必現而且常現的問題一定要解決啊,至少也得try catch,有個友好的展示,而不是直接掛掉。測試了其他機子發現跟ios9沒關。。。因為其他系統一樣出問題。。。

不過這樣也說明是程式碼層面的問題,問題定位到更準確的範圍了。因為掛在GPUImage上,所以一直設斷點追蹤GPUImage上的物件,沒啥結果。。畢竟大牛寫的程式碼,在論壇上問了人,其他人用GPUImage也沒遇到這個問題。

放下這個問題,去做其他東西冷靜下,晚上蹲坑的時候,有條線索閃過腦袋,以前沒有這個問題,現在出現了,會不會是某個版本更新加了什麼東西導致的呢?

立馬回去檢視專案更新列表,還好沒個版本更新我都備註了更新的功能跟做出的修改,雖然只是寫主要的更新功能,但也能在一定程度定位問題。更新列表如圖所示:

發現20151003之前的版本是木有這個bug的,但後面的版本都有,也就是這兩個版本的更新出了問題程式碼,通過比較,發現加入了友盟統計的功能。然後去掉友盟統計就沒有這個bug了。再去翻看友盟統計的文件,發現一句可疑又坑爹的話:

就是這個自動開啟的後臺統計功能,導致app 進入後臺時掛掉,估計是友盟統計進入後臺使用了跟GPUImage使用的某些物件一樣,然後友盟使用完就釋放了,導致GPUImage引用物件為空,最終app crash。

一個bug引發的血案到此完結,得到的經驗,

1.開發文件要寫全,友盟只寫了對一般app沒有影響,卻不具體說明對具體某些型別會產生什麼影響以及結果,這裡對友盟提出不指名批評,負分滾粗。

2.專案更新時的文案備註要儘量寫清楚,無論大小功能程式碼的更新都應該儘量清晰,方便日後快速定位問題。

3.多方面多維度思考問題,在一個方向轉一段時間沒有結果,就可以嘗試休息下,換個狀態跟心情再去思考問題,說不定思路就清晰了。

轉載於:https://my.oschina.net/gdxz111/blog/518752