您好,登錄后才能下訂單哦!
SylixOS實現了一個功能強大的調試stub(樁),可在設備或模擬器上在線調試應用程序,RealEvo-IDE也提供配套的調試插件。目前RealEvo-IDE既支持自動推送調試、也支持傳統的手動啟動gdbserver的調試方式。在官方公布的使用手冊中沒有詳細寫出在日常開發中非常實用的幾種調試方式,本文主要介紹性能分析的調試方法。
在日常開發過程中經常會遇到程序不夠快的情況,但是不知道到底慢在哪里,往往是隨意尋找函數優化,并沒有沒有真正定位到程序哪里慢,存在很大的偶然性。性能分析工具就是用動態采樣的方式定位真正慢的位置,定位之后再在這個點上進行優化,最終程序運行時間對比是非常明顯的。
SylixOS的性能分析主要是通過加載性能分析模塊(sperfs.ko)來查看各個函數消耗的CPU時間,能夠準確找到需要優化的點。下面通過建立一個“perfoms_check_app”來做性能分析調試的演示,代碼如程序清單 21所示。
程序清單 21 static_check_app代碼
//sperfstart sperfs #include <stdio.h> #define USE_SLEEP void module_sleep(int iSecond) { #ifdef USE_SLEEP sleep(1); #else bspDelayUs(iSecond*1000*1000); #endif } void calc_value(void) { static int i; i++; } void do_something(void) { /* * do something */ calc_value(); module_sleep(1); } int main (int argc, char **argv) { while (1){ // do_something(); } return (0); } |
(sperfs.ko模塊為SylixOS性能分析檢查提供一種調試工具)
點擊IDE界面右上角“Device”;選擇目標機器IP地址,這里使用的是虛擬機的IP地址:192.168.7.32,右擊IP號打開“Launch FTP”進行傳輸;然后在本地文件夾中找到sperfs.ko模塊,傳輸路徑選擇在“/lib/modules”目錄下;最后雙擊sperfs.ko即可完成模塊加載的準備工作,具體步驟如圖 21所示。
圖 21 加載sperfs.ko模塊方法一
除上述方法外還可以通過“cp”指令將性能分析模塊的拷貝在“/lib/modules”目錄下,如圖 22所示。
圖 22 加載sperfs.ko模塊方法二
完成后在“cd /lib/modules”目錄下用“ls”查看是否完成拷貝,結果如圖 22所示。
圖 23 查看是否完成加載
然后通過“chmod”改變文件的權限,再用“modulereg”命令注冊性能分析模塊,如圖 23所示。
圖 24 注冊內核模塊
最后通過“sperfstart”命令開啟性能分析的功能,再用“sperfs”命令查看性能分析結果,如圖 24所示。
圖 25 開啟性能分析模塊
除此之外我們通過Talnet再打開一個調試窗口,運行演示程序“perfoms_check_app”,性能分析結果如圖 25所示,除空閑線程t_idleo和sperfs.ko外消耗CPU時間最多的函數是程序是performs_check中的main函數,在這里只需要優化該函數就可以減少程序運行時間。
圖 26 性能分析結果
對該函數進行優化,優化結果如程序清單 22所示。
程序清單 22 main函數優化結果
int main (int argc, char **argv) { while (1){ do_something(); } return (0); } |
再次進行性能分析,結果如圖 26所示,main函數消耗的CPU時間已經大大減少。
圖 27 優化后性能分析結果
在SylixOS中可以使用多種調試方式進行相關調試,根據實際情況對程序進行調試,本節主要介紹性能分析檢查工具。下一篇文檔將通過一個完整的工程文件來描述多種調試方式。
《SylixOS應用程序開發手冊》
《RealEvo-IDE使用手冊》
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。