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