作者:yangjianwei 華為高級工程師
HarmonyOS致力于提供1+8+N智慧全場景解決方案,打造設備流轉、多端協同的分布式體驗,實現一次開發、多端部署,讓分布式應用的開發更加簡單。
針對分布式應用的調試問題,DevEco Studio提供了分布式調試、調優能力解決方案,解決開發者面臨的調試不連續、操作繁瑣、功能和性能異常難定位等眾多痛點問題。下面讓我們先來一睹為快。
注:本文涉及的DevEco Studio分布式調試和調優的部分能力依賴于OS接口,計劃將在HarmonyOS 3.0 Beta版本系統發布后才能支持。
一、分布式調試能力
DevEco Studio將為開發者提供分布式調試能力解決方案。通過在各個設備上的Debug Agent代理統一對接不同語言的調試器,調試代理負責將DevEco Studio中的調試插件中的調試命令轉換為對不同調試器的請求,包括單步調試Step Into/Step Out/Step Over、跨模塊步入,恢復程序等調試功能,Debugger插件負責將所有的調試信息以符合開發者需求的方式展示出來。
下面,我們將對DevEco Studio新增的分布式調試能力進行介紹。
1. 分布式跨設備跨語言調試
DevEco Studio將支持開發者選擇多個設備進行調試,并能在多個設備、多種語言的調試間流暢切換。在跨設備、跨語言調用接口處,通過點擊“Step Into”,能激活被調用設備的調試,中斷在調用接口的響應處,并繼續調試。同時,在IDE中還展示了多設備多語言調試的堆棧列表,實現斷點統一管理、變量統一查看,使開發者定位問題更加高效便捷。
2. 分布式異常故障自動捕獲
在分布式應用開發過程中,開發人員最依賴的就是日志,日志數量過大容易錯過關鍵信息。HiTrace新增的自動異常捕獲與輔助診斷的能力,可將應用運行異常自動上報到Events視圖中,包括Java/C++/JS的崩潰異常。可通過異常事件中的堆棧信息,直接定位到源代碼。同時可以查看普通業務事件信息,并關聯出與此事件相關聯的日志。這些功能大大減少分布式場景下收集、查看、分析日志的時間。
圖2 異常故障自動捕獲
3. 跨設備狀態流轉、分布式堆棧可視化
當前開發者通常是通過查看調試的堆棧列表來定位跟蹤代碼問題,且分布式應用的堆棧列表往往是割裂不連續的,給開發者跟蹤分布式調度的代碼造成了阻礙。因此DevEco Studio將推出跨設備流轉、分布式堆棧可視化功能。
(1)跨設備狀態流轉
Device Transfer視圖以生動簡潔的形式呈現了設備間的組網關系和連接狀態,將設備以不同組網的分類形式進行分組,組內之間的設備可以顯示它們的具體信息和原子化服務的動態流轉關系。如圖所示,每個球狀圖形表示一臺設備,藍色表示與IDE相連接,黃色表示該組網內未與IDE連接的設備,它們之間的箭頭代表設備間原子化服務能力的調用,有助于開發者快速理解設備間的流轉及互動關系。
圖3 Device Transfer視圖
(2)分布式堆棧可視化
分布式堆棧可視化功能打破陳規,將函數之間的調用關系以直觀的可視化結構圖形呈現出來,并保留了歷史調用,克服了跨設備跨語言堆棧列表分割不連續的弊端,如圖中,Call Stack view呈現了不同設備調試的模塊,它們使用不同的顏色表示,點擊圖中的函數節點能自動定位到代碼中的函數處。使開發者溯源代碼更加輕松快捷。
圖4 Call Stack視圖
4. 時光調試:在JS上支持逆向調試
調試過程中,開發者錯過查看關鍵性變量值,或者想調試函數已經走完的分支,此時往往需要重新啟動調試,定位一個bug,往往需要調試很多次才能解決,費時費力。如何時光穿梭,回到執行需要調試的代碼位置處?
DevEco Studio將提供時光調試功能,幫助你回退到關鍵代碼位置,調試一次即可找出代碼問題。時光調試支持在函數體內自由前進或回退,支持回退到上一行(Step Back)、回退到上一個斷點(Run Back To Breakpoint),回退到鼠標位置(Run Back To Active Line),回退到上一個函數的最后一行(Step Back Into),回退到方法的調用處(Step Back Out)。一切變量值、一切調試狀態都恢復至你未執行后續代碼的狀態,幫助你調試一次即可找出代碼問題。
圖5 JS調試基礎上增加逆向調試
二、分布式調優能力
分布式協同場景中跨設備業務性能瓶頸如何定位? JS應用的性能分析與內存分析如何來做? 性能采集過程中的數據是否合理?這些性能調優的問題,同樣也困擾著很多的開發者。
DevEco Studio中也將新增HarmonyOS分布式性能Profiler的整體方案,在每個設備上會自動部署一個Profiler的代理,這個代理將通過與JS執行引擎,Java執行引擎,C++性能采集器等模塊進行交互,獲取代碼執行過程中的性能數據,經過時鐘同步,生成面向開發者的多種運行性能和內存分析視圖。下面我們將對DevEco Studio中新增的多設備協同的性能跟蹤、基于JS的應用的運行性能和對內存分析,針對性能數據自動輔助分析方進行闡述。
1. 多設備協同性能跟蹤
DevEco Studio將提供跨設備協同的系統跟蹤能力。主要包括:丟幀統計統計調試過程中丟幀情況,顯示丟幀的序號以及丟幀率;分布式時延一次分布式業務運行過程中,同時完成跨設備的系統調用跟蹤;提供跨設備調用棧的時延,不同設備上各系統調用使用不同顏色區分,各調用過程的耗時以及調用間的時延分別顯示,并且高亮此次業務中高耗時的階段,可以協助開發者快速定位耗時的流程。同時Timeline和調用棧視圖可雙向聯動,提升調試效率。
圖7 系統跟蹤能力
2. JS應用運行性能分析
JS作為HarmonyOS應用開發的主要語言。我們開發網頁時對JS性能分析往往都是在Chrome開發工具中來完成,現在在DevEco Studio中,增加了對JS應用運行性能分析的支持。用戶可通過Call Chart、Flame Chat、Top Down和Bottomup等視圖查看方法間調用關系和調用消耗時長,便于識別長耗時方法。
圖8 Call Chart和Flame Chat視圖
3. JS應用堆內存分析
針對JavaScript內存無法回的收情況,DevEco Studio將新增對JS應用堆內存分析的支持。開發者可通過實時查看應用內存占用和變化趨勢,快速發現可能存在的內存抖動和內存泄漏等問題。通過抓取/導入/導出JS堆內存快照,可進一步查看JS對象內存分配、調用、引用情況。開發者還可以比對分析多個內存快照,觀察各對象的內存詳細變化情況,便于快速定位可能造成內存性能瓶頸或者內存泄漏的對象。
4. 性能數據自動輔助分析
在性能分析過程中,一般的性能分析工具只給出了對性能數據的基礎統計。針對啟動和UI方面的體驗問題,DevEco Studio自動對可能存在的問題給出提示與修改建議,開發者可根據建議進一步確認并進行優化。
用戶從下拉列表中選取已安裝的應用包名,IDE工具會自動啟動選取的應用并抓取應用啟動過程中的CPU占用率,IO讀寫量,使用內存等資源信息和該進程的函數調用信息。抓取結束后點擊記錄圖標會自動分析獲取信息,如果資源占用過多或函數調用時長偏長,會在性能分析報告頁具體展示詳細信息,同時部分常見問題會有優化建議的提示,助力開發者快速發現性能短板,提升應用性能體驗。
圖10 性能數據自動輔助分析
DevEco Studio還為開發者提供應用功耗問題分析以及功耗調優的能力,主要包括:
整機耗電分解提供了整機的耗電情況,并對TOP耗電器件CPU、屏幕、GPU、Modem、WIFI、Audio、BT、GPS等器件進行了功耗分解,并記錄了影響器件耗電的各器件的狀態詳情,同時支持系統維度的影響功耗狀態的信息展示,方便開發者對整機的耗電情況有整體把握,并進行耗電分析。
應用分解將單個應用的耗電情況按照器件維度分解,后續可支持應用線程維度的拆解,方便識別到應用功耗問題時,快速的鎖定問題線程。同時對應用CPU負載率實時展示,開發者可方便看到應用的CPU的負載情況。
至此,本期內容就結束了,隨著時代的發展,分布式應用的發展已成趨勢,那些曾讓開發者抓狂的分布式調優及調試問題,DevEco Studio中新增的功能定能幫你解決。
編輯:jq
-
cpu
+關注
關注
68文章
10901瀏覽量
212631 -
gpu
+關注
關注
28文章
4767瀏覽量
129202 -
分布式
+關注
關注
1文章
920瀏覽量
74573 -
HarmonyOS
+關注
關注
79文章
1980瀏覽量
30405
原文標題:HDC技術分論壇:分布式調試、調優能力解決方案
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論