SylixOS實(shí)現(xiàn)了一個(gè)功能強(qiáng)大的調(diào)試stub(樁),可在設(shè)備或模擬器上在線調(diào)試應(yīng)用程序,RealEvo-IDE也提供配套的調(diào)試插件。目前RealEvo-IDE既支持自動(dòng)推送調(diào)試、也支持傳統(tǒng)的手動(dòng)啟動(dòng)gdbserver的調(diào)試方式。在官方公布的使用手冊(cè)中沒有詳細(xì)寫出在日常開發(fā)中非常實(shí)用的幾種調(diào)試方式,本文主要介紹性能分析的調(diào)試方法。
成都創(chuàng)新互聯(lián)于2013年開始,先為蕭山等服務(wù)建站,蕭山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為蕭山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在日常開發(fā)過程中經(jīng)常會(huì)遇到程序不夠快的情況,但是不知道到底慢在哪里,往往是隨意尋找函數(shù)優(yōu)化,并沒有沒有真正定位到程序哪里慢,存在很大的偶然性。性能分析工具就是用動(dòng)態(tài)采樣的方式定位真正慢的位置,定位之后再在這個(gè)點(diǎn)上進(jìn)行優(yōu)化,最終程序運(yùn)行時(shí)間對(duì)比是非常明顯的。
SylixOS的性能分析主要是通過加載性能分析模塊(sperfs.ko)來查看各個(gè)函數(shù)消耗的CPU時(shí)間,能夠準(zhǔn)確找到需要優(yōu)化的點(diǎn)。下面通過建立一個(gè)“perfoms_check_app”來做性能分析調(diào)試的演示,代碼如程序清單 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性能分析檢查提供一種調(diào)試工具)
點(diǎn)擊IDE界面右上角“Device”;選擇目標(biāo)機(jī)器IP地址,這里使用的是虛擬機(jī)的IP地址:192.168.7.32,右擊IP號(hào)打開“Launch FTP”進(jìn)行傳輸;然后在本地文件夾中找到sperfs.ko模塊,傳輸路徑選擇在“/lib/modules”目錄下;最后雙擊sperfs.ko即可完成模塊加載的準(zhǔn)備工作,具體步驟如圖 21所示。
圖 21 加載sperfs.ko模塊方法一
除上述方法外還可以通過“cp”指令將性能分析模塊的拷貝在“/lib/modules”目錄下,如圖 22所示。
圖 22 加載sperfs.ko模塊方法二
完成后在“cd /lib/modules”目錄下用“l(fā)s”查看是否完成拷貝,結(jié)果如圖 22所示。
圖 23 查看是否完成加載
然后通過“chmod”改變文件的權(quán)限,再用“modulereg”命令注冊(cè)性能分析模塊,如圖 23所示。
圖 24 注冊(cè)內(nèi)核模塊
最后通過“sperfstart”命令開啟性能分析的功能,再用“sperfs”命令查看性能分析結(jié)果,如圖 24所示。
圖 25 開啟性能分析模塊
除此之外我們通過Talnet再打開一個(gè)調(diào)試窗口,運(yùn)行演示程序“perfoms_check_app”,性能分析結(jié)果如圖 25所示,除空閑線程t_idleo和sperfs.ko外消耗CPU時(shí)間最多的函數(shù)是程序是performs_check中的main函數(shù),在這里只需要優(yōu)化該函數(shù)就可以減少程序運(yùn)行時(shí)間。
圖 26 性能分析結(jié)果
對(duì)該函數(shù)進(jìn)行優(yōu)化,優(yōu)化結(jié)果如程序清單 22所示。
程序清單 22 main函數(shù)優(yōu)化結(jié)果
int main (int argc, char **argv) { while (1){ do_something(); } return (0); } |
再次進(jìn)行性能分析,結(jié)果如圖 26所示,main函數(shù)消耗的CPU時(shí)間已經(jīng)大大減少。
圖 27 優(yōu)化后性能分析結(jié)果
在SylixOS中可以使用多種調(diào)試方式進(jìn)行相關(guān)調(diào)試,根據(jù)實(shí)際情況對(duì)程序進(jìn)行調(diào)試,本節(jié)主要介紹性能分析檢查工具。下一篇文檔將通過一個(gè)完整的工程文件來描述多種調(diào)試方式。
《SylixOS應(yīng)用程序開發(fā)手冊(cè)》
《RealEvo-IDE使用手冊(cè)》
當(dāng)前名稱:SylixOS調(diào)試方法詳解——性能分析
網(wǎng)頁(yè)網(wǎng)址:http://www.muchs.cn/article28/ghosjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站制作、小程序開發(fā)、做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)