两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法及組件與流程

文檔序號:11250775閱讀:372來源:國知局
一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法及組件與流程

本申請涉及視頻直播領(lǐng)域,尤其涉及一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法及組件。



背景技術(shù):

目前,隨著網(wǎng)絡(luò)通信技術(shù)的進(jìn)步和寬帶網(wǎng)絡(luò)的提速,網(wǎng)絡(luò)直播得到了越來越多的發(fā)展和應(yīng)用。尤其在游戲直播領(lǐng)域,越來越多的觀眾會觀看游戲主播的直播。對于游戲直播,主播是通過使用直播平臺提供的直播軟件進(jìn)行直播。對于客戶端軟件,通常需要統(tǒng)計其軟件的性能瓶頸,從而提升軟件的性能,提高用戶的體驗。如果是在軟件開發(fā)的時候,比較容易的可以加入對每個函數(shù)的調(diào)用時間和調(diào)用次數(shù)進(jìn)行統(tǒng)計,但是如果軟件已經(jīng)發(fā)布,則是沒有辦法來統(tǒng)計每個函數(shù)的調(diào)用時間和調(diào)用次數(shù)的。



技術(shù)實現(xiàn)要素:

本發(fā)明了提供了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法及組件,以解決目前面臨的如果軟件已經(jīng)發(fā)布,則沒有辦法來統(tǒng)計每個函數(shù)的調(diào)用時間和調(diào)用次數(shù)的技術(shù)問題。

為解決上述技術(shù)問題,本發(fā)明提供了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法,所述方法應(yīng)用在統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件中,所述方法包括:

在所述應(yīng)用程序運行時,利用所述組件中的鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻;其中,所述組件注入所述應(yīng)用程序的進(jìn)程中;

利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻;

基于所述map文件中的所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻以及所述所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,確定出所述所有函數(shù)在所述預(yù)設(shè)時間內(nèi)的調(diào)用時間。

為了避免發(fā)布之后的應(yīng)用程序無法監(jiān)控其函數(shù)調(diào)用情況(調(diào)用時間、調(diào)用次數(shù)等等),本發(fā)明通過上述方法在應(yīng)用程序運行時對其進(jìn)行監(jiān)控,然后將該組件注入到運行的應(yīng)用程序進(jìn)程中,該組件具有監(jiān)控應(yīng)用程序的所有函數(shù)調(diào)用情況的功能,并統(tǒng)計每個函數(shù)的調(diào)用次數(shù)和調(diào)用時間,最后將統(tǒng)計的結(jié)果輸出。

優(yōu)選的,所述map文件中至少記錄了所述所有函數(shù)的函數(shù)名稱、函數(shù)地址,函數(shù)長度、所有的全局變量、全局變量名的地址。有了map文件,本發(fā)明就可以直接調(diào)用map文件,進(jìn)而為對所有函數(shù)進(jìn)行監(jiān)控。

優(yōu)選的,所述利用所述組件中的鉤子函數(shù)庫鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻之前,還包括:利用所述鉤子函數(shù)庫的鉤子函數(shù)監(jiān)控所述所有函數(shù)的函數(shù)頭。鉤子函數(shù)庫可以將自身的代碼“融入”被監(jiān)控的程序的進(jìn)程中,成為目標(biāo)進(jìn)程的一個部分,從而可以對程序進(jìn)行監(jiān)控,還可以在目標(biāo)代碼中加入自己的邏輯。

優(yōu)選的,所述利用所述鉤子函數(shù)庫的鉤子函數(shù)監(jiān)控所述所有函數(shù)的函數(shù)頭,包括:獲取所述組件在終端設(shè)備的內(nèi)存中的起始地址;讀取所述map文件中的所有函數(shù)的函數(shù)名稱、函數(shù)地址;其中,所述所有函數(shù)的函數(shù)地址為各自相對于所述組件的函數(shù)地址;將所述所有函數(shù)的函數(shù)地址各自相對于所述組件的函數(shù)地址分別和所述組件在內(nèi)存中的起始地址求和,獲得所述所有函數(shù)各自的內(nèi)存地址;所述所有函數(shù)各自的內(nèi)存地址就是所述所有函數(shù)各自的函數(shù)頭;利用所述鉤子函數(shù)庫對所述所有函數(shù)各自的內(nèi)存地址進(jìn)行監(jiān)控。

優(yōu)選的,所述將所述所有函數(shù)的函數(shù)地址各自相對于所述組件的函數(shù)地址分別和所述組件在內(nèi)存中的起始地址求和,獲得所述所有函數(shù)各自的內(nèi)存地址;所述所有函數(shù)各自的內(nèi)存地址就是所述所有函數(shù)各自的函數(shù)頭,包括:利用所述鉤子函數(shù)庫監(jiān)控所述所有函數(shù)從各自的內(nèi)存地址調(diào)用的調(diào)用次數(shù)和調(diào)用時刻。

優(yōu)選的,所述利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,包括:讀取所述所有函數(shù)的函數(shù)名稱、函數(shù)地址、函數(shù)長度;將所述所有函數(shù)各自的函數(shù)地址和函數(shù)長度求和,獲得所述所有函數(shù)各自的尾地址;利用所述鉤子函數(shù)庫對所述所有函數(shù)各自的尾地址進(jìn)行監(jiān)控,獲得所述所有函數(shù)各自的尾地址的調(diào)用時刻。

本發(fā)明公開了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件,所述組件注入在所述應(yīng)用程序的進(jìn)程中,用以對所述應(yīng)用程序中的所有函數(shù)的調(diào)用時間和調(diào)用次數(shù)進(jìn)行監(jiān)控,包括:

第一監(jiān)控模塊,用于在所述應(yīng)用程序運行時,利用所述組件中的鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻;其中,所述組件注入所述應(yīng)用程序的進(jìn)程中;

第二監(jiān)控模塊,用于利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻;

確定模塊,用于基于所述map文件中的所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻以及所述所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,確定出所述所有函數(shù)在所述預(yù)設(shè)時間內(nèi)的調(diào)用時間。

優(yōu)選的,所述map文件中至少記錄了所述所有函數(shù)的函數(shù)名稱、函數(shù)地址,函數(shù)長度、所有的全局變量、全局變量名的地址。

優(yōu)選的,所述組件還包括:

第三監(jiān)控模塊,用于利用所述鉤子函數(shù)庫的鉤子函數(shù)監(jiān)控所述所有函數(shù)的函數(shù)頭。

優(yōu)選的,所述第三監(jiān)控模塊,包括:

獲取模塊,用于獲取所述組件在終端設(shè)備的內(nèi)存中的起始地址;

讀取模塊,用于讀取所述map文件中的所有函數(shù)的函數(shù)名稱、函數(shù)地址;其中,所述所有函數(shù)的函數(shù)地址為各自相對于所述組件的函數(shù)地址;

獲得模塊,用于將所述所有函數(shù)的函數(shù)地址各自相對于所述組件的函數(shù)地址分別和所述組件在內(nèi)存中的起始地址求和,獲得所述所有函數(shù)各自的內(nèi)存地址;所述所有函數(shù)各自的內(nèi)存地址就是所述所有函數(shù)各自的函數(shù)頭;

監(jiān)控子模塊,用于利用所述鉤子函數(shù)庫對所述所有函數(shù)各自的內(nèi)存地址進(jìn)行監(jiān)控。

通過本發(fā)明的一個或者多個技術(shù)方案,本發(fā)明具有以下有益效果或者優(yōu)點:

本發(fā)明公開了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法,為了避免發(fā)布之后的應(yīng)用程序無法監(jiān)控其函數(shù)調(diào)用情況,所述方法應(yīng)用在統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件中,用以監(jiān)控應(yīng)用程序的函數(shù)調(diào)用情況。在該應(yīng)用程序運行時,利用所述組件中的鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所有函數(shù)的函數(shù)頭各自的調(diào)用時刻;然后利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻;基于所述map文件中的所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻以及所述所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,確定出所述所有函數(shù)在所述預(yù)設(shè)時間內(nèi)的調(diào)用時間。進(jìn)而,本發(fā)明可以在應(yīng)用程序運行時,實時統(tǒng)計函數(shù)的調(diào)用情況。

附圖說明

圖1為本發(fā)明實施例中一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法的流程圖;

圖2為本發(fā)明實施例中一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件的示意圖。

具體實施方式

本發(fā)明了提供了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法及組件,為了避免發(fā)布之后的應(yīng)用程序無法監(jiān)控其函數(shù)調(diào)用情況(調(diào)用時間、調(diào)用次數(shù)等等),本發(fā)明編寫了一個可以用于在應(yīng)用程序運行時對其進(jìn)行監(jiān)控的組件,然后將該組件注入到運行的應(yīng)用程序進(jìn)程中,該組件具有監(jiān)控應(yīng)用程序的所有函數(shù)調(diào)用情況的功能,并統(tǒng)計每個函數(shù)的調(diào)用次數(shù)和調(diào)用時間,最后將統(tǒng)計的結(jié)果輸出。所以后續(xù)的hook(鉤子函數(shù),用來監(jiān)控函數(shù)的調(diào)用情況)功能代碼都編寫在這個組件中。組件注入的方式則有很多,可以是遠(yuǎn)程線程注入、消息鉤子注入等等。

本發(fā)明的應(yīng)用程序可為任意應(yīng)用程序,例如直播視頻軟件、語音聊天軟件等等,對此本發(fā)明不做限制。

為了使本申請所屬技術(shù)領(lǐng)域中的技術(shù)人員更清楚地理解本申請,下面結(jié)合附圖,通過具體實施例對本申請技術(shù)方案作詳細(xì)描述。

本發(fā)明公開了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法,所述方法應(yīng)用在統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件中。

參看圖1,是本發(fā)明提供的一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法的流程圖,該方法包括:

步驟11,在所述應(yīng)用程序運行時,利用所述組件中的鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻。

在具體的實施過程中,本發(fā)明的組件注入在所述應(yīng)用程序的進(jìn)程中。故而,在應(yīng)用程序運行時,該組件即可利用組件中的鉤子函數(shù)庫對該應(yīng)用程序中的所有函數(shù)進(jìn)行監(jiān)控,進(jìn)而避免無法對發(fā)布后的軟件中的函數(shù)的調(diào)用時間、調(diào)用次數(shù)進(jìn)行監(jiān)控的漏洞。后續(xù)本發(fā)明會介紹應(yīng)用在組件中的統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的具體實施過程,即如何對應(yīng)用程序的所有函數(shù)進(jìn)行監(jiān)控統(tǒng)計。在此,本發(fā)明先介紹map文件的創(chuàng)建。

map文件,是事先在使用編譯器生成軟件(即應(yīng)用程序)的執(zhí)行文件時加入生成的。在使用編譯器編譯軟件的代碼的時候,可以在編譯器選項中加入‘生成map文件’這一選項,進(jìn)而編譯器則會根據(jù)開發(fā)者的操作來生成map文件。

其中,map文件實際是一個調(diào)用信息文件,其包含有該應(yīng)用程序中所有函數(shù)的函數(shù)名稱、函數(shù)地址(即:函數(shù)的相對于模塊的地址),函數(shù)長度,所有的全局變量名,全局變量名的地址等。有了map文件,就具有了對應(yīng)于該模塊的所有函數(shù)的名稱,以及該函數(shù)在運行時的內(nèi)存地址,以及函數(shù)的代碼的長度信息。有了map文件,組件即可以調(diào)用map文件,進(jìn)而為對所有函數(shù)進(jìn)行監(jiān)控,通過使用鉤子函數(shù)將自身的代碼“融入”被監(jiān)控的程序的進(jìn)程中,成為目標(biāo)進(jìn)程的一個部分,從而可以對程序進(jìn)行監(jiān)控,還可以在目標(biāo)代碼中加入自己的邏輯。

作為一種可選的實施方式,鉤子函數(shù)庫可采用detours庫,detours庫是一個hook(監(jiān)控)工具庫,里面包含了各類鉤子函數(shù),可滿足對任一函數(shù)進(jìn)行監(jiān)控的可能。

下面介紹如何對應(yīng)用程序的所有函數(shù)進(jìn)行監(jiān)控統(tǒng)計。

在此之前,需要利用所述鉤子函數(shù)庫的鉤子函數(shù)監(jiān)控所述所有函數(shù)的函數(shù)頭。

在監(jiān)控所有函數(shù)的函數(shù)頭時,本發(fā)明使用內(nèi)聯(lián)監(jiān)控方式,其原理是在函數(shù)的開頭加入一個匯編的“jmp”指令,通過這個挑戰(zhàn)則可以跳轉(zhuǎn)到我們插入的代碼邏輯中,代碼邏輯是組件的組成代碼,運行代碼邏輯即執(zhí)行該組件的功能,然后等插入的代碼邏輯執(zhí)行完成后,再跳轉(zhuǎn)到hook的函數(shù)接著其邏輯繼續(xù)執(zhí)行。本發(fā)明在插入的代碼邏輯中,加入了對函數(shù)的調(diào)用次數(shù)統(tǒng)計信息,用以對函數(shù)的調(diào)用次數(shù)進(jìn)行統(tǒng)計。例如,可以加入一個變量來統(tǒng)計函數(shù)的調(diào)用次數(shù),并且沒執(zhí)行一次則計數(shù)加1,最終統(tǒng)計完成時,該變量的值則是該段統(tǒng)計時段內(nèi)函數(shù)的調(diào)用次數(shù)。

另外,本發(fā)明也可以記錄下當(dāng)前調(diào)用的時刻,后續(xù)在函數(shù)尾進(jìn)行監(jiān)控時也會加入當(dāng)前調(diào)用的時刻,通過函數(shù)尾的時刻減去函數(shù)頭的時刻則可以得到監(jiān)控的這個函數(shù)在執(zhí)行一次所花費的時間。

本文使用微軟提供的開源的內(nèi)聯(lián)監(jiān)控工具detours(detours是微軟開發(fā)的一個hook工具庫)來實現(xiàn)監(jiān)控功能。

下面介紹具體的實施過程。

第1步,獲取所述組件在終端設(shè)備的內(nèi)存中的起始地址。

對于組件在內(nèi)存的加載起始地址每次都是不一樣的,所以需要先獲取組件在終端設(shè)備的內(nèi)存的起始地址。

hmodulegetmodulehandle(lpctstrlpmodulename);

通過調(diào)用windowsapi函數(shù)getmodulehandle來獲取組件的內(nèi)存起始地址。

其中,參數(shù)pmodulename則傳入組件的名稱。

其中,返回值hmodule則是組件的內(nèi)存起始地址。

第2步,讀取所述map文件中的所有函數(shù)的函數(shù)名稱、函數(shù)地址。

其中,所述所有函數(shù)的函數(shù)地址為各自相對于組件的函數(shù)地址。在map文件中會有所有函數(shù)的名稱及函數(shù)地址,通過讀取map文件的內(nèi)容則可以獲取到所有函數(shù)的名稱和函數(shù)地址。

第3步,將所述所有函數(shù)的函數(shù)地址各自相對于所述組件的函數(shù)地址分別和所述組件在內(nèi)存中的起始地址求和,獲得所述所有函數(shù)各自的內(nèi)存地址。其中,所述所有函數(shù)各自的內(nèi)存地址就是所述所有函數(shù)各自的函數(shù)頭。

第4步,利用所述鉤子函數(shù)庫對所述所有函數(shù)各自的內(nèi)存地址進(jìn)行監(jiān)控。

故而,在調(diào)用時,利用所述鉤子函數(shù)庫監(jiān)控所述所有函數(shù)從各自的內(nèi)存地址調(diào)用的調(diào)用次數(shù)和調(diào)用時刻。

步驟12,利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻。

在具體的實施過程中,利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,包括:讀取所述所有函數(shù)的函數(shù)名稱、函數(shù)地址、函數(shù)長度;

將所述所有函數(shù)各自的函數(shù)地址和函數(shù)長度求和,獲得所述所有函數(shù)各自的尾地址;

利用所述鉤子函數(shù)庫對所述所有函數(shù)各自的尾地址進(jìn)行監(jiān)控,獲得所述所有函數(shù)各自的尾地址的調(diào)用時刻。

步驟13,基于所述map文件中的所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻以及所述所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,確定出所述所有函數(shù)在所述預(yù)設(shè)時間內(nèi)的調(diào)用時間。

在對map中的所有函數(shù)的函數(shù)頭和函數(shù)尾進(jìn)行監(jiān)控后,并且在函數(shù)頭有計算每個函數(shù)頭的調(diào)用次數(shù)統(tǒng)計,并且在函數(shù)頭和函數(shù)尾都有記錄當(dāng)前調(diào)用的時刻,通過對同一個函數(shù)的這2個時刻則可以計算出該函數(shù)執(zhí)行一次的時間。所以可以統(tǒng)計軟件在一段時間內(nèi)所有函數(shù)的執(zhí)行次數(shù)以及執(zhí)行時間,并且可以將統(tǒng)計結(jié)果輸出成文本的形式,從而可以方便的定位軟件的性能瓶頸等問題。

基于同一發(fā)明構(gòu)思,本發(fā)明還公開了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件,所述組件注入在所述應(yīng)用程序的進(jìn)程中,用以對所述應(yīng)用程序中的所有函數(shù)的調(diào)用時間和調(diào)用次數(shù)進(jìn)行監(jiān)控。

參看圖2,本發(fā)明還公開的一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件,包括:

第一監(jiān)控模塊21,用于在所述應(yīng)用程序運行時,利用所述組件中的鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻;其中,所述組件注入所述應(yīng)用程序的進(jìn)程中;

第二監(jiān)控模塊22,用于利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻;

確定模塊23,用于基于所述map文件中的所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻以及所述所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,確定出所述所有函數(shù)在所述預(yù)設(shè)時間內(nèi)的調(diào)用時間。

作為一種可選的實施例,所述map文件中至少記錄了所述所有函數(shù)的函數(shù)名稱、函數(shù)地址,函數(shù)長度、所有的全局變量、全局變量名的地址。

作為一種可選的實施例,所述組件還包括:

第三監(jiān)控模塊,用于利用所述鉤子函數(shù)庫的鉤子函數(shù)監(jiān)控所述所有函數(shù)的函數(shù)頭。

作為一種可選的實施例,所述第三監(jiān)控模塊,包括:

獲取模塊,用于獲取所述組件在終端設(shè)備的內(nèi)存中的起始地址;

讀取模塊,用于讀取所述map文件中的所有函數(shù)的函數(shù)名稱、函數(shù)地址;其中,所述所有函數(shù)的函數(shù)地址為各自相對于所述組件的函數(shù)地址;

獲得模塊,用于將所述所有函數(shù)的函數(shù)地址各自相對于所述組件的函數(shù)地址分別和所述組件在內(nèi)存中的起始地址求和,獲得所述所有函數(shù)各自的內(nèi)存地址;所述所有函數(shù)各自的內(nèi)存地址就是所述所有函數(shù)各自的函數(shù)頭;

監(jiān)控子模塊,用于利用所述鉤子函數(shù)庫對所述所有函數(shù)各自的內(nèi)存地址進(jìn)行監(jiān)控。

本文提供了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法及組件,來對已經(jīng)發(fā)布的客戶端軟件來統(tǒng)計每個函數(shù)的調(diào)用次數(shù)及每個函數(shù)的調(diào)用時間統(tǒng)計。從而無需在軟件開發(fā)的時候加入函數(shù)統(tǒng)計的功能。對于已經(jīng)發(fā)布的軟件通過使用本文的方法也可以進(jìn)行統(tǒng)計函數(shù)的調(diào)用次數(shù)及時間功能。

通過本發(fā)明的一個或者多個實施例,本發(fā)明具有以下有益效果或者優(yōu)點:

本發(fā)明公開了一種統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的方法,為了避免發(fā)布之后的應(yīng)用程序無法監(jiān)控其函數(shù)調(diào)用情況,所述方法應(yīng)用在統(tǒng)計應(yīng)用程序中的函數(shù)調(diào)用的組件中,用以監(jiān)控應(yīng)用程序的函數(shù)調(diào)用情況。在該應(yīng)用程序運行時,利用所述組件中的鉤子函數(shù)庫監(jiān)控統(tǒng)計調(diào)用信息文件map文件中的所有函數(shù)的函數(shù)頭在預(yù)設(shè)時間內(nèi)各自的調(diào)用次數(shù),和所有函數(shù)的函數(shù)頭各自的調(diào)用時刻;然后利用所述鉤子函數(shù)庫監(jiān)控統(tǒng)計所述map文件中的所有函數(shù)的函數(shù)尾各自的調(diào)用時刻;基于所述map文件中的所述所有函數(shù)的函數(shù)頭各自的調(diào)用時刻以及所述所有函數(shù)的函數(shù)尾各自的調(diào)用時刻,確定出所述所有函數(shù)在所述預(yù)設(shè)時間內(nèi)的調(diào)用時間。進(jìn)而,本發(fā)明可以在應(yīng)用程序運行時,實時統(tǒng)計函數(shù)的調(diào)用情況。

盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的普通技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
四子王旗| 元阳县| 襄城县| 黑山县| 永仁县| 沧源| 女性| 榆树市| 晋江市| 深水埗区| 乐至县| 枝江市| 科技| 松潘县| 鹿泉市| 岳阳县| 桐城市| 友谊县| 陵水| 壤塘县| 潼关县| 辽源市| 二连浩特市| 麟游县| 凤翔县| 博野县| 平武县| 南宁市| 乃东县| 电白县| 岗巴县| 绥德县| 平舆县| 万源市| 和林格尔县| 文水县| 伊金霍洛旗| 宜君县| 水富县| 社会| 施秉县|