HarmonyOS官網上線“穩定性”專欄 助力更穩定流暢的鴻蒙原生應用開發
鴻蒙應用穩定性是影響用戶體驗的重要因素之一,常見的穩定性問題包括:崩潰、應用Freeze、內存泄漏、內存越界等。這類問題的定界與定位往往需要豐富的經驗積累和技術沉淀,定位過程通常耗時耗力。
本文引用地址:http://www.j9360.com/article/202502/466735.htm最近,在鴻蒙開發者官網的最佳實踐中上線了穩定性專欄,將DevEco Studio問題定位工具與穩定性實際場景相結合,幫助開發者用好工具的同時,降低穩定性問題定位的難度。
下面以CppCrash的問題為例,介紹一下如何根據新上線的“穩定性”專欄分析和定位穩定性問題。
當我們在開發中遇到了CppCrash問題,應用會閃退,FaultLog會彈出對應的錯誤日志:紅色Reason部分為CppCrash觸發的原因,該Crash的原因是系統拋出的SIGSEGV信號Crash了運行的應用。通常情況下點擊藍色的鏈接部分,可以跳轉到對應出錯的代碼行。通過SIGSEGV信號量判斷出代碼中存在無效的內存引用,一般為下面三種情況:訪問空指針、訪問已經釋放的內存和內存訪問越界。但具體是哪種情況觸發的應用閃退,還需要我們根據相應代碼片段進行具體分析,較為耗時。我們可以參考穩定性專欄中的相關內容,來降低定位難度并縮減定位時間。
對于由內存錯誤引起的運行態問題,我們可以選擇穩定性專欄目錄下的穩定性檢測/運行態檢測/內存檢測中介紹的工具。
此處我們選擇使用HWAsan檢測內存錯誤的章節,根據章節的內容描述,我們勾選DevEco Studio中的HWAsan功能,開啟HWAsan檢測之后,點擊run重新運行編譯推包,編譯工具會將HWAsan檢測開關打開,同時對Cpp代碼進行插樁,增加調試信息。
重新運行編譯推包之前產生CppCrash的程序,應用發生閃退,彈出FaultLog。
通過勾選HWasan后產生的FaultLog我們可以看到,該日志在提供出錯代碼片段跳轉鏈接的同時,還通過Cause部分進一步確定了該Crash是由heap-buffer-overflow導致的。根據Cause原因,在使用HWAsan檢測內存錯誤文章中找到HWasan異常檢測類型中對應的類型,可明確該錯誤是由運行程序訪問堆內存越界導致的。通過穩定性中該章節的指導,大大降低了我們對CppCrash日志的解讀難度與相關內存問題定位的門檻,同時也節省了排查可疑問題類型的時間。
此外,專欄還提供了穩定性分析的內容,該部分列舉了常見場景中問題的排查方法與案例分析,如果我們開發過程中可以確定穩定性問題的具體場景,就可以參考相應場景的排查方法來對問題進行定位,如上述CppCrash的例子就是地址越界的場景,可以看到地址越界問題排查方法部分也可以開啟HWAsan檢測。而關于案例分析部分,則是以實際案例,來幫助我們開發者更好的理解并應用不同場景下的問題排查方法。
除了上述解決應用致命穩定性問題的穩定性檢測與分析章節,該專欄還包含了如何持續建設應用穩定性的內容,即穩定性優化與穩定性運維兩個部分,穩定性優化主要從規范性的角度出發,介紹了如何通過良好的編碼習慣和有效的日志維護方案來提升應用的健壯性和定位效率;穩定性運維則是從應用上線并長期使用/運行的角度的出發,概述如何構建管理平臺,幫助我們開發者監控應用的運行狀態,從而及時發現并解決應用潛在問題。
更多詳細內容可在鴻蒙開發者官網->開發-> 開發文檔->最佳實踐下進入“穩定性”專欄,希望無論是初學者還是資深開發者,都能在這里有所收獲,開發出更穩定流暢的鴻蒙原生應用。
評論