SylixOS實現了一個功能強大的調試stub(樁),可在設備或模擬器上在線調試應用程序,RealEvo-IDE也提供配套的調試插件。目前RealEvo-IDE既支持自動推送調試、也支持傳統的手動啓動gdbserver的調試方式。在官方公佈的使用手冊中沒有詳細寫出在平常開發中很是實用的幾種調試方式,本文主要介紹性能分析的調試方法。app
在平常開發過程當中常常會遇到程序不夠快的狀況,可是不知道到底慢在哪裏,每每是隨意尋找函數優化,並無沒有真正定位到程序哪裏慢,存在很大的偶然性。性能分析工具就是用動態採樣的方式定位真正慢的位置,定位以後再在這個點上進行優化,最終程序運行時間對比是很是明顯的。函數
SylixOS的性能分析主要是經過加載性能分析模塊(sperfs.ko)來查看各個函數消耗的CPU時間,可以準確找到須要優化的點。下面經過創建一個「perfoms_check_app」來作性能分析調試的演示,代碼如程序清單 2‑1所示。工具
程序清單 2‑1 static_check_app代碼性能
//sperfstart sperfs優化 #include <stdio.h>spa
#define USE_SLEEP插件
void module_sleep(int iSecond)線程 {調試 #ifdef USE_SLEEPorm 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便可完成模塊加載的準備工做,具體步驟如圖 2‑1所示。
圖 2‑1 加載sperfs.ko模塊方法一
除上述方法外還能夠經過「cp」指令將性能分析模塊的拷貝在「/lib/modules」目錄下,如圖 2‑2所示。
圖 2‑2 加載sperfs.ko模塊方法二
完成後在「cd /lib/modules」目錄下用「ls」查看是否完成拷貝,結果如圖 2‑2所示。
圖 2‑3 查看是否完成加載
而後經過「chmod」改變文件的權限,再用「modulereg」命令註冊性能分析模塊,如圖 2‑3所示。
圖 2‑4 註冊內核模塊
最後經過「sperfstart」命令開啓性能分析的功能,再用「sperfs」命令查看性能分析結果,如圖 2‑4所示。
圖 2‑5 開啓性能分析模塊
除此以外咱們經過Talnet再打開一個調試窗口,運行演示程序「perfoms_check_app」,性能分析結果如圖 2‑5所示,除空閒線程t_idleo和sperfs.ko外消耗CPU時間最多的函數是程序是performs_check中的main函數,在這裏只須要優化該函數就能夠減小程序運行時間。
圖 2‑6 性能分析結果
對該函數進行優化,優化結果如程序清單 2‑2所示。
程序清單 2‑2 main函數優化結果
int main (int argc, char **argv) { while (1){ do_something(); } return (0); }
|
再次進行性能分析,結果如圖 2‑6所示,main函數消耗的CPU時間已經大大減小。
圖 2‑7 優化後性能分析結果
在SylixOS中可使用多種調試方式進行相關調試,根據實際狀況對程序進行調試,本節主要介紹性能分析檢查工具。下一篇文檔將經過一個完整的工程文件來描述多種調試方式。
《SylixOS應用程序開發手冊》
《RealEvo-IDE使用手冊》