
本期,我們将重點介紹DevEco Device Tool中內建的一系列調試調優工具。
作者:zhaowenguang,dinglu, 華為進階工程師
Huawei LiteOS是輕量級的開源物聯網作業系統、智能硬體使能平台,可廣泛應用于智能家居、穿戴式、車聯網、制造業等領域,使物聯網終端開發更簡單、互聯更加容易、業務更加智能、體驗更加順暢、資料更加安全。
它具有入門簡單、開發便捷,輕量級、低功耗、廣聯接,生态體系完善等優點。提供了若幹高效硬體維測能力,通過內建到DevEco Device Tool中,形成了可供開發者使用的調試調優工具,助力開發者在鴻蒙智聯裝置調試調優過程中更加精準的分析、定位問題。
接下來,我們将重點介紹DevEco Device Tool中內建的一系列調試調優工具。
一、鴻蒙智聯裝置調試調優面臨的挑戰
開發者在鴻蒙智聯裝置調試調優過程中面臨如下挑戰:
系統鏡像檔案太大,分析和優化難度較大。
運作态記憶體緊缺,系統各任務棧大小無法設定。
性能瓶頸無法定位,不能針對性的進行優化。
僅僅靠添加列印和人工分析日志來定位問題效率低下。
記憶體問題最難定位,缺少檢測工具。
如何應對這些挑戰,讓開發者能高效且準确的完成鴻蒙智聯裝置調試調優?
二、高效調試調優五大法寶
針對以上挑戰,HUAWEI DevEco Device Tool版本中提供了鴻蒙智聯裝置調試調優五大法寶:鏡像分析工具、棧估算分析工具、性能分析工具、可視化Trace工具、輕量級記憶體檢測工具,下面我們将逐一介紹。
注:鏡像分析工具和棧估算分析工具已內建于HUAWEI DevEco Device Tool 3.0 Beta1版本中,目前隻支援GCC編譯的鏡像,Clang暫不支援。性能分析工具、可視化Trace工具及輕量級記憶體檢測工具将盡快上線,具體上線時間待官方通知。
1. 鏡像分析工具
鏡像分析工具,主要解決“資源受限情況下鏡像的分析及優化”。通過對編譯生成的map檔案進行記憶體占用分析,擷取鏡像中各子產品對ROM、RAM的占用大小。
該工具支援檢視記憶體區域總覽、記憶體詳細資訊、檔案大小及子產品大小。同時支援一些統計功能,包括排序、過濾、導出表格等操作以及按檔案或子產品篩選檢視的功能。鏡像分析結果按照記憶體區域、詳細資訊、檔案大小和子產品大小4個界面進行展示。
Memory Regions:記憶體區域界面以表格的形式展示了每個區域的記憶體使用情況。如圖1所示,Memory Regions包含了起始位址、結束位址、大小、可用記憶體以及記憶體占用。
圖1 Memory Regions
Memory Details:記憶體詳細資訊裡顯示了Section和Symbol的資訊。如圖2所示,Memory Details通過樹狀表格展示層級關系、名稱、VMA、LMA以及Size。
圖2 Memory Details
File Size:檔案大小裡展示了.a檔案和.o檔案的層級關系以及不同section的記憶體占用。
Module Size:子產品大小裡展示了子產品群組件的層級關系以及不同section的記憶體占用。
使用該工具可幫助開發者快速評估并優化鏡像的ROM、RAM使用情況。
2. 棧估算分析工具
棧估算分析工具,主要解決“運作态記憶體緊缺情況下系統各任務棧的設定”。通過周遊反彙編檔案,計算函數的局部棧開銷并分析函數之間的調用關系,進而估算出任務的棧大小,為棧溢出分析、棧空間優化提供基礎的資料參考。
該工具提供函數調用關系圖、函數總的最大棧開銷、内部開銷,并提供展示函數所在具體位置。棧分析結果按照函數清單和調用關系進行展示。
Function List:函數清單界面顯示每個函數的函數名稱和函數内部棧開銷,如圖3所示。
圖3 Function List
Call Graph:調用關系界面顯示每個函數的調用關系,包括函數名稱、調用深度、函數最大棧開銷。
使用該工具可幫助開發者減少爆棧風險,節省記憶體優化棧空間。
3. 性能分析工具
性能分析工具,主要解決“性能瓶頸的定位及優化”。基于事件采樣統計的原理,實作熱點函數、熱點路徑的分析,助力識别性能瓶頸。
該工具提供計數模式及采樣模式兩種工作模式,采集事件發生的次數及執行時間以及上下文如PC,回溯棧等,用于解析出熱點函數與熱點路徑等資訊。同時,該工具還支援3種類型的采樣事件:
硬體PMU事件:如cycle,cache等。
軟體打點采樣:如中斷、記憶體申請等。
高精度周期事件:即按固定周期采樣,精度us級。支援熱點函數及熱點路徑的檢視。
圖4 性能分析工具界面
使用該工具可幫助開發者快速有效識别性能瓶頸,輔助系統性能優化。
4. 可視化Trace工具
可視化Trace工具,主要解決“程式運作不符合預期情況下的問題定位”。通過采用靜态代碼樁和緩沖區記錄的方式,在樁被執行時,擷取事件發生的上下文、系統任務等資訊,并記錄到緩沖區,幫助開發者了解何時何處發生的什麼事件。
該工具以圖形界面展示事件詳情、CPU占比、記憶體趨勢圖、任務切換軌迹等資訊。下面是Trace 可視化的4個界面:
事件資訊視圖:如圖5所示。使用自然語言解釋系統何時(時間戳)何處(在哪個CPU的那個任務中)發生的具體事件。
圖5 時間資訊視圖
任務軌迹視圖:如圖6所示。以系統時間為縱坐标,展示任務切換的軌迹,如圖,不同顔色表示不同的任務,不同色塊的遷移對應一次任務切換,點選色塊會顯示導緻任務切換的原因,色塊的長度對應其運作的時長。
圖6 任務軌迹視圖
CPU負載視圖:如圖7所示。統計任意時間段内的任務執行cpu占比,不同顔色對應不同的任務。
圖7 CPU負載視圖
記憶體監控視圖:如圖8所示。以系統時間為橫坐标,展示随時間變化的系統記憶體使用情況。
圖8 記憶體監控視圖
使用該工具可幫助開發者清晰的了解系統運作的軌迹,更好的了解系統、輔助定位當機死鎖問題。
5. 輕量級記憶體檢測工具
輕量級記憶體檢測工具,主要解決“一鍵定位記憶體問題”。該工具基于影子記憶體映射和标記的原理,可快速解決記憶體越界通路、釋放後通路、多重釋放等疑難雜症,并且在檢測到錯誤後實時列印回溯棧。如圖9所示,輕量級記憶體檢測工具結合backtrace,快速一鍵式定位問題代碼段。
圖9 定位到出錯的代碼行号
使用該工具可幫助開發者根據回溯棧一鍵定位到出錯的代碼行号。
以上就是本期全部内容,相信五大法寶定能讓你在鴻蒙智聯裝置開發的道路上披荊斬棘,趕快點選下方連結下載下傳試用吧!
HUAWEI DevEco Device Tool 3.0 Beta1下載下傳連結:
https://device.harmonyos.com/cn/develop/ide#download_beta
掃碼添加開發者小助手微信
擷取更多HarmonyOS開發資源和開發者活動資訊