作者:zhaowenguang,dinglu, 華為高級工程師
Huawei LiteOS是輕量級的開源物聯(lián)網(wǎng)操作系統(tǒng)、智能硬件使能平臺,可廣泛應(yīng)用于智能家居、穿戴式、車聯(lián)網(wǎng)、制造業(yè)等領(lǐng)域,使物聯(lián)網(wǎng)終端開發(fā)更簡單、互聯(lián)更加容易、業(yè)務(wù)更加智能、體驗更加順暢、數(shù)據(jù)更加安全。
它具有入門簡單、開發(fā)便捷,輕量級、低功耗、廣聯(lián)接,生態(tài)體系完善等優(yōu)點。提供了若干高效硬件維測能力,通過集成到DevEco Device Tool中,形成了可供開發(fā)者使用的調(diào)試調(diào)優(yōu)工具,助力開發(fā)者在鴻蒙智聯(lián)設(shè)備調(diào)試調(diào)優(yōu)過程中更加精準的分析、定位問題。
接下來,我們將重點介紹DevEco Device Tool中集成的一系列調(diào)試調(diào)優(yōu)工具。
一、鴻蒙智聯(lián)設(shè)備調(diào)試調(diào)優(yōu)面臨的挑戰(zhàn)
開發(fā)者在鴻蒙智聯(lián)設(shè)備調(diào)試調(diào)優(yōu)過程中面臨如下挑戰(zhàn):
系統(tǒng)鏡像文件太大,分析和優(yōu)化難度較大。
運行態(tài)內(nèi)存緊缺,系統(tǒng)各任務(wù)棧大小無法設(shè)置。
性能瓶頸無法定位,不能針對性的進行優(yōu)化。
僅僅靠添加打印和人工分析日志來定位問題效率低下。
內(nèi)存問題最難定位,缺少檢測工具。
如何應(yīng)對這些挑戰(zhàn),讓開發(fā)者能高效且準確的完成鴻蒙智聯(lián)設(shè)備調(diào)試調(diào)優(yōu)?
二、高效調(diào)試調(diào)優(yōu)五大法寶
針對以上挑戰(zhàn),HUAWEI DevEco Device Tool版本中提供了鴻蒙智聯(lián)設(shè)備調(diào)試調(diào)優(yōu)五大法寶:鏡像分析工具、棧估算分析工具、性能分析工具、可視化Trace工具、輕量級內(nèi)存檢測工具,下面我們將逐一介紹。注:鏡像分析工具和棧估算分析工具已集成于HUAWEI DevEco Device Tool 3.0 Beta1版本中,目前只支持GCC編譯的鏡像,Clang暫不支持。性能分析工具、可視化Trace工具及輕量級內(nèi)存檢測工具將盡快上線,具體上線時間待官方通知。
1. 鏡像分析工具
鏡像分析工具,主要解決“資源受限情況下鏡像的分析及優(yōu)化”。通過對編譯生成的map文件進行內(nèi)存占用分析,獲取鏡像中各模塊對ROM、RAM的占用大小。
該工具支持查看內(nèi)存區(qū)域總覽、內(nèi)存詳細信息、文件大小及模塊大小。同時支持一些統(tǒng)計功能,包括排序、過濾、導(dǎo)出表格等操作以及按文件或模塊篩選查看的功能。鏡像分析結(jié)果按照內(nèi)存區(qū)域、詳細信息、文件大小和模塊大小4個界面進行展示。
Memory Regions:內(nèi)存區(qū)域界面以表格的形式展示了每個區(qū)域的內(nèi)存使用情況。如圖1所示,Memory Regions包含了起始地址、結(jié)束地址、大小、可用內(nèi)存以及內(nèi)存占用。
圖1 Memory Regions
Memory Details:內(nèi)存詳細信息里顯示了Section和Symbol的信息。如圖2所示,Memory Details通過樹狀表格展示層級關(guān)系、名稱、VMA、LMA以及Size。
圖2 Memory Details
File Size:文件大小里展示了.a文件和.o文件的層級關(guān)系以及不同section的內(nèi)存占用。
Module Size:模塊大小里展示了模塊和組件的層級關(guān)系以及不同section的內(nèi)存占用。
使用該工具可幫助開發(fā)者快速評估并優(yōu)化鏡像的ROM、RAM使用情況。
2. 棧估算分析工具
棧估算分析工具,主要解決“運行態(tài)內(nèi)存緊缺情況下系統(tǒng)各任務(wù)棧的設(shè)置”。通過遍歷反匯編文件,計算函數(shù)的局部棧開銷并分析函數(shù)之間的調(diào)用關(guān)系,從而估算出任務(wù)的棧大小,為棧溢出分析、棧空間優(yōu)化提供基礎(chǔ)的數(shù)據(jù)參考。
該工具提供函數(shù)調(diào)用關(guān)系圖、函數(shù)總的最大棧開銷、內(nèi)部開銷,并提供展示函數(shù)所在具體位置。棧分析結(jié)果按照函數(shù)列表和調(diào)用關(guān)系進行展示。
Function List:函數(shù)列表界面顯示每個函數(shù)的函數(shù)名稱和函數(shù)內(nèi)部棧開銷,如圖3所示。
圖3 Function List
Call Graph:調(diào)用關(guān)系界面顯示每個函數(shù)的調(diào)用關(guān)系,包括函數(shù)名稱、調(diào)用深度、函數(shù)最大棧開銷。
使用該工具可幫助開發(fā)者減少爆棧風(fēng)險,節(jié)省內(nèi)存優(yōu)化棧空間。
3. 性能分析工具
性能分析工具,主要解決“性能瓶頸的定位及優(yōu)化”。基于事件采樣統(tǒng)計的原理,實現(xiàn)熱點函數(shù)、熱點路徑的分析,助力識別性能瓶頸。
該工具提供計數(shù)模式及采樣模式兩種工作模式,采集事件發(fā)生的次數(shù)及執(zhí)行時間以及上下文如PC,回溯棧等,用于解析出熱點函數(shù)與熱點路徑等信息。同時,該工具還支持3種類型的采樣事件:
硬件PMU事件:如cycle,cache等。
軟件打點采樣:如中斷、內(nèi)存申請等。
高精度周期事件:即按固定周期采樣,精度us級。支持熱點函數(shù)及熱點路徑的查看。
圖4 性能分析工具界面
使用該工具可幫助開發(fā)者快速有效識別性能瓶頸,輔助系統(tǒng)性能優(yōu)化。
4. 可視化Trace工具
可視化Trace工具,主要解決“程序運行不符合預(yù)期情況下的問題定位”。通過采用靜態(tài)代碼樁和緩沖區(qū)記錄的方式,在樁被執(zhí)行時,獲取事件發(fā)生的上下文、系統(tǒng)任務(wù)等信息,并記錄到緩沖區(qū),幫助開發(fā)者了解何時何處發(fā)生的什么事件。
該工具以圖形界面展示事件詳情、CPU占比、內(nèi)存趨勢圖、任務(wù)切換軌跡等信息。下面是Trace 可視化的4個界面:
事件信息視圖:如圖5所示。使用自然語言解釋系統(tǒng)何時(時間戳)何處(在哪個CPU的那個任務(wù)中)發(fā)生的具體事件。
圖5 時間信息視圖
任務(wù)軌跡視圖:如圖6所示。以系統(tǒng)時間為縱坐標,展示任務(wù)切換的軌跡,如圖,不同顏色表示不同的任務(wù),不同色塊的遷移對應(yīng)一次任務(wù)切換,點擊色塊會顯示導(dǎo)致任務(wù)切換的原因,色塊的長度對應(yīng)其運行的時長。
圖6 任務(wù)軌跡視圖
CPU負載視圖:如圖7所示。統(tǒng)計任意時間段內(nèi)的任務(wù)執(zhí)行cpu占比,不同顏色對應(yīng)不同的任務(wù)。
圖7 CPU負載視圖
內(nèi)存監(jiān)控視圖:如圖8所示。以系統(tǒng)時間為橫坐標,展示隨時間變化的系統(tǒng)內(nèi)存使用情況。
圖8 內(nèi)存監(jiān)控視圖
使用該工具可幫助開發(fā)者清晰的了解系統(tǒng)運行的軌跡,更好的理解系統(tǒng)、輔助定位死機死鎖問題。
5. 輕量級內(nèi)存檢測工具
輕量級內(nèi)存檢測工具,主要解決“一鍵定位內(nèi)存問題”。該工具基于影子內(nèi)存映射和標記的原理,可快速解決內(nèi)存越界訪問、釋放后訪問、多重釋放等疑難雜癥,并且在檢測到錯誤后實時打印回溯棧。如圖9所示,輕量級內(nèi)存檢測工具結(jié)合backtrace,快速一鍵式定位問題代碼段。
圖9 定位到出錯的代碼行號
使用該工具可幫助開發(fā)者根據(jù)回溯棧一鍵定位到出錯的代碼行號。
以上就是本期全部內(nèi)容,相信五大法寶定能讓你在鴻蒙智聯(lián)設(shè)備開發(fā)的道路上披荊斬棘,趕快點擊下方鏈接下載試用吧!
原文標題:鴻蒙智聯(lián)設(shè)備開發(fā),這五大法寶你應(yīng)該擁有
文章出處:【微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2928文章
46030瀏覽量
389663 -
智能硬件
+關(guān)注
關(guān)注
205文章
2383瀏覽量
109046 -
鴻蒙
+關(guān)注
關(guān)注
59文章
2549瀏覽量
43848 -
鴻蒙智聯(lián)
+關(guān)注
關(guān)注
0文章
29瀏覽量
579
原文標題:鴻蒙智聯(lián)設(shè)備開發(fā),這五大法寶你應(yīng)該擁有
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
xgboost超參數(shù)調(diào)優(yōu)技巧 xgboost在圖像分類中的應(yīng)用
MCF8316A調(diào)優(yōu)指南

MCT8316A調(diào)優(yōu)指南

MCT8315A調(diào)優(yōu)指南

鴻蒙Flutter實戰(zhàn):08-如何調(diào)試代碼
TDA3xx ISS調(diào)優(yōu)和調(diào)試基礎(chǔ)設(shè)施

大數(shù)據(jù)從業(yè)者必知必會的Hive SQL調(diào)優(yōu)技巧
智能調(diào)優(yōu),使步進電機安靜而高效地運行

MMC SW調(diào)優(yōu)算法

如何調(diào)優(yōu)DS160PR410實現(xiàn)出色的信號完整性

TAS58xx系列通用調(diào)優(yōu)指南

AM6xA ISP調(diào)優(yōu)指南

如何進行TI PCIe Gen5轉(zhuǎn)接驅(qū)動器調(diào)優(yōu)

OSPI控制器PHY調(diào)優(yōu)算法

評論