国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法及裝置的制作方法

      文檔序號:6469998閱讀:269來源:國知局
      專利名稱:一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及性能測試領(lǐng)域,特別是涉及一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方 法及裝置。
      背景技術(shù)
      應(yīng)用程序本身對于對象從創(chuàng)建到釋放以及方法從開始到結(jié)束的性能 跟蹤缺少筒單快捷的性能跟蹤工具,同時對過程具體對象和方法出錯也 缺少快捷的跟蹤工具,對象創(chuàng)建出錯一般用自動生成對象創(chuàng)建失敗或錯 誤的方法進(jìn)行提示。但是這種自動生成的提示無法明確指出具體哪個組 件或方法出現(xiàn)問題,因此給實際應(yīng)用帶來很大的不便。
      為解決上述問題,目前一般采用跟蹤內(nèi)存命令的方法來實現(xiàn),例如, 可以使用調(diào)試工具來跟蹤內(nèi)存命令。但是使用這種方法進(jìn)行調(diào)試時,需 要程序編譯時生成符號文件,但是一般應(yīng)用程序大多不生成符號文件,
      使得該方法無法實現(xiàn)。同時,即使能夠通過安裝符號文件工具或其他方 式來生成符號文件,還需要獲得操作系統(tǒng)的內(nèi)存指令,并結(jié)合符號函數(shù) 進(jìn)行分析,但由于符號文件直接顯示的是系統(tǒng)指令(通常為二進(jìn)制指令), 因此需要直接分析系統(tǒng)二進(jìn)制指令,并對照符號文件分析其對應(yīng)執(zhí)行的 代碼。可見,此過程要求需要較高的技術(shù)能力并熟悉工具指令,才能夠 完成,并從中解析出具體是哪些組件或方法發(fā)生了錯誤。因此,這種方 法的易用性及可用性差,無法為用戶提供便利。
      因此,需要本領(lǐng)域技術(shù)人員迫切解決的一個技術(shù)問題就是如何在應(yīng)用 程序運行環(huán)境中,方便快捷地實現(xiàn)對應(yīng)用程序的性能監(jiān)控及跟蹤,明確找到出 錯的對象,使得性能數(shù)據(jù)能夠以直觀的方式展現(xiàn)給用戶。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明的目的在于提供一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法及
      裝置,以解決現(xiàn)有技術(shù)進(jìn)行性能監(jiān)控時,需要較高的專業(yè)技術(shù)才能找到出錯對 象的問題。
      為實現(xiàn)上述目的,本發(fā)明提供了如下方案
      一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法,包括 截獲程序運行庫中的對象創(chuàng)建過程及對象中的方法調(diào)用函數(shù); 當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建時刻的性能數(shù)據(jù),創(chuàng)建并返回代理 對象指針;
      當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所述代理對象記錄方法調(diào)用的 性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序;
      當(dāng)應(yīng)用程序釋放對象時,通過所述代理對象記錄釋放對象時刻的性能數(shù) 據(jù),并將所述代理對象指針返回所述應(yīng)用程序。
      優(yōu)選的,還包括
      統(tǒng)計對象及具體方法調(diào)用過程性能數(shù)據(jù)、出錯信息及對象調(diào)用的嵌套關(guān) 系,并才艮據(jù)所述嵌套關(guān)系將處理后的信息分層顯示。 優(yōu)選的,還包括
      所述對象創(chuàng)建是否成功信息、創(chuàng)建對象、釋放對象時刻的性能數(shù)據(jù)、方法 調(diào)用的性能數(shù)據(jù)通過通信協(xié)議進(jìn)行傳遞。 優(yōu)選的,還包括
      將對象創(chuàng)建函數(shù)與方法調(diào)用函數(shù)設(shè)置為不同的顏色;并將沒有嵌套的方法 調(diào)用使用 一行顯示。 優(yōu)選的,還包括
      設(shè)置跟蹤條件,過濾掉不需要跟蹤的對象創(chuàng)建和/或方法調(diào)用函數(shù),并將 調(diào)用時間大于預(yù)置時間的對象創(chuàng)建和/或方法調(diào)用函數(shù)突出顯示。 一種對應(yīng)用程序進(jìn)行性能監(jiān)控的裝置,包括
      函數(shù)截獲單元,用于截獲程序運行庫中的對象創(chuàng)建過程及對象中的方法調(diào) 用函數(shù);
      第一記錄單元,用于當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建對象時刻的性 能數(shù)據(jù);
      代理對象創(chuàng)建單元,用于當(dāng)應(yīng)用程序創(chuàng)建對象成功時,創(chuàng)建并返回代理對 象指針;
      第二記錄單元,用于當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所述代理
      對象記錄方法調(diào)用的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序;當(dāng)
      應(yīng)用程序釋放對象時,通過所述代理對象記錄釋放對象時刻的性能數(shù)據(jù),并將 所述代理對象指針返回所述應(yīng)用程序。
      優(yōu)選的,還包括
      統(tǒng)計單元,用于統(tǒng)計對象及具體方法調(diào)用過程性能數(shù)據(jù)、出錯信息及對象 調(diào)用的嵌套關(guān)系;
      顯示單元,用于才艮據(jù)所述嵌套關(guān)系將統(tǒng)計后的信息分層顯示。 優(yōu)選的,還包括
      通信單元,用于所述對象創(chuàng)建是否成功信息、創(chuàng)建對象、釋放對象時刻的 性能數(shù)據(jù)、方法調(diào)用的性能數(shù)據(jù)通過通信協(xié)議進(jìn)行傳遞。 優(yōu)選的,還包括
      設(shè)置單元,用于將對象創(chuàng)建函數(shù)與方法調(diào)用函數(shù)設(shè)置為不同的顏色;并將 沒有嵌套的方法調(diào)用使用 一行顯示。 優(yōu)選的,還包括
      過濾單元,用于過濾掉不需要跟蹤的對象創(chuàng)建和/或方法調(diào)用函數(shù),并將 調(diào)用時間大于預(yù)置時間的對象創(chuàng)建和/或方法調(diào)用函數(shù)突出顯示。
      根據(jù)本發(fā)明提供的具體實施例,本發(fā)明公開了以下技術(shù)效果
      第一,本發(fā)明通過截獲程序運行庫內(nèi)存中的對象創(chuàng)建及方法的調(diào)用函數(shù), 可以跟蹤到應(yīng)用程序?qū)ο髣?chuàng)建及釋放調(diào)用的時間及占用內(nèi)存情況;通過COM 代理對象,可以跟蹤對象中具體方法的調(diào)用過程,包括查詢接口、加載接口及 釋放接口 ,從而獲得對象以及方法調(diào)用過程的性能數(shù)據(jù)并顯示具體方法的對應(yīng) 關(guān)系,以此達(dá)到對應(yīng)用程序進(jìn)行性能監(jiān)控的目的。該方法能夠在應(yīng)用程序運行 時簡便地進(jìn)行性能監(jiān)控,并顯示出性能數(shù)據(jù)及對應(yīng)的組件名稱,因此用戶直接 看到的不再是二進(jìn)制的系統(tǒng)指令,使得用戶不需要進(jìn)行再解析便可以明確找到 出錯的對象,及創(chuàng)建失敗的組件名稱,從而方便定位程序性能問題,降低了對 用戶專業(yè)技術(shù)、技能的要求。
      第二,通過從對象創(chuàng)建到釋放過程中其他對象的創(chuàng)建到釋放的分析,可以
      獲得某一指定應(yīng)用程序過程對象調(diào)用的嵌套關(guān)系以及過程性能數(shù)據(jù),并分層顯 示使得用戶可以更加方便快捷地發(fā)現(xiàn)到應(yīng)用程序的錯誤及性能問題。
      第三,跟蹤過程記錄的信息通過通信協(xié)議進(jìn)行傳遞,通訊和解析的工作可 以由工作線程來完成,因此對應(yīng)用程序自身的性能影響非常小,保證了性能監(jiān)
      控數(shù)據(jù)的準(zhǔn)確、有效性;另外使用通信協(xié)議還可以將跟蹤信息發(fā)送到網(wǎng)絡(luò)上的
      另一臺計算機(jī)上,從而實現(xiàn)遠(yuǎn)程監(jiān)控與數(shù)據(jù)收集功能。
      第四,通過將對象創(chuàng)建函數(shù)與方法調(diào)用函數(shù)分別用不同的顏色顯示,并將 調(diào)用時間較長的函數(shù)突出顯示,更加便于用戶識別。
      第五,通過設(shè)置跟蹤條件,將調(diào)用時間很小的函數(shù)及用戶不關(guān)心的函數(shù)過 濾掉,從而能夠使跟蹤程序只聚焦在需要跟蹤的信息上,減少了跟蹤信息量, 增強(qiáng)了易用性。


      圖l是本發(fā)明實施例提供的方法的流程圖2是本發(fā)明實施例中展現(xiàn)性能監(jiān)控數(shù)據(jù)的界面示意圖3是本發(fā)明實施例提供的另一方法的流程圖4是本發(fā)明實施例提供的第一裝置的示意圖5是本發(fā)明實施例提供的第二裝置的示意圖6是本發(fā)明實施例提供的第三裝置的示意圖。
      具體實施例方式
      為了使本發(fā)明的上述目的、特征及優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖 和具體實施方式
      對本發(fā)明作進(jìn)一步詳細(xì)地說明。
      參見圖1,本發(fā)明實施例提供的對應(yīng)用程序進(jìn)行性能跟蹤的方法包括以下 步驟
      S101:截獲程序運行庫中的對象創(chuàng)建過程及對象中的方法調(diào)用函數(shù);
      需要說明的是,所述程序運行庫是一種虛擬相關(guān)模塊, 一些用VB、 VC + +等語言編寫的程序需要程序運行庫才能運行。例如,對于VB程序庫而言, 該程序庫是VB內(nèi)部函數(shù)和底層處理的封裝,包含許多執(zhí)行用VB設(shè)計的軟件時必要的執(zhí)行文件以及動態(tài)連結(jié)文件。
      本發(fā)明實施例中,可以在應(yīng)用程序啟動時,使用注射(Injection)方式 截獲程序運行庫中的對象創(chuàng)建、對象釋放函數(shù),使指針指向本發(fā)明增加的對象 創(chuàng)建函數(shù)指針,以進(jìn)行對象創(chuàng)建及釋放過程中性能數(shù)據(jù)的獲?。煌瑯涌梢允褂?Injection方式截獲對象中的方法調(diào)用函數(shù),使指針指向本發(fā)明增加的方法調(diào) 用函數(shù)指針,以進(jìn)行方法調(diào)用過程的性能數(shù)據(jù)的獲取。值得注意的是,這樣截 獲的是全部的對象創(chuàng)建函數(shù)、對象釋放函數(shù)及方法調(diào)用函數(shù),其中并不涉及對 象與方法的對應(yīng)關(guān)系。也就是說,這樣截獲了對象創(chuàng)建、釋放函數(shù)后,跟蹤程 序就能記錄對象創(chuàng)建時刻以及釋放時刻的時間及被分配的內(nèi)存,但是跟蹤程序 跟蹤到方法調(diào)用函數(shù)時還無法知悉是哪個對象調(diào)用了該方法,為解決這一問 題,本發(fā)明采用了創(chuàng)建代理對象的方法,步驟S102中會對此方法進(jìn)行詳細(xì)介 紹。
      S102:當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建時刻的性能數(shù)據(jù),創(chuàng)建并返 回代理對象指針;
      由于截獲了程序運行庫中的對象創(chuàng)建過程,因此,應(yīng)用程序調(diào)用對象創(chuàng)建 函數(shù)創(chuàng)建對象時,跟蹤程序就可以直接獲取創(chuàng)建時刻的性能數(shù)據(jù),包括時間以 及被分配的內(nèi)存,同時還可以獲取該對象的名稱,這樣便可以將獲得的性能數(shù) 據(jù)及創(chuàng)建的對象的名稱記錄下來并顯示給用戶。
      如前文所述,對象創(chuàng)建成功后,本發(fā)明采用COM代理對象跟蹤方法的調(diào)用 過程,用于記錄程序運行時刻的調(diào)用信息,然后將調(diào)用直接轉(zhuǎn)給系統(tǒng)庫函數(shù)的 相應(yīng)調(diào)用。需要說明的是,COM對象包括三個接口查詢接口、加載接口及釋 放接口,所述代理對象中同樣設(shè)置了這些接口的指針,只是代理對象中的函數(shù) 不執(zhí)行具體的方法,而只是完成信息的記錄,再將代理對象指針返回應(yīng)用程序。
      S103:當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所述代理對象記錄方法 調(diào)用的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序;
      由于所述代理對象中同樣設(shè)置了這些接口的指針,因此當(dāng)應(yīng)用程序調(diào)用具 體方法時,跟蹤程序就可以調(diào)用所述代理對象的指針,使代理對象將各接口的 請求轉(zhuǎn)發(fā)到跟蹤程序,這樣跟蹤程序便可以通過代理對象獲得方法調(diào)用過程的
      詳細(xì)性能數(shù)據(jù),可以包括從查詢接口獲得的方法調(diào)用是否成功信息,從加載接 口及釋放接口獲得的調(diào)用開始及結(jié)束時刻的時間、被分配的內(nèi)存,同時可以獲 得該方法的名稱。然后跟蹤程序?qū)⑦@些性能數(shù)據(jù)及方法的名稱記錄下來,同時 可以顯示給用戶。
      S104:當(dāng)應(yīng)用程序釋放對象時,通過所述代理對象記錄釋放對象時刻的性 能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序。
      每個對象的調(diào)用過程都包括創(chuàng)建和釋放兩個必備的事件,與對象創(chuàng)建時相 同,應(yīng)用程序釋放對象時,跟蹤程序可以獲取到釋放時刻的性能數(shù)據(jù),包括釋 放時刻的時間及被分配的內(nèi)存,然后將這些性能數(shù)據(jù)及對于的對象的名稱記錄 下來,并進(jìn)行顯示。
      從上述可見,本發(fā)明通過截獲程序運行庫內(nèi)存中的對象創(chuàng)建及方法的調(diào)用 函數(shù),可以跟蹤到應(yīng)用程序?qū)ο髣?chuàng)建及釋放調(diào)用的時間及占用內(nèi)存情況;通過 創(chuàng)建代理對象,可以跟蹤對象中具體方法的調(diào)用過程,包括查詢接口、加載接 口及釋放接口 ,從而獲得對象與具體方法的對應(yīng)關(guān)系以及方法調(diào)用過程的性能 數(shù)據(jù),以此達(dá)到對應(yīng)用程序進(jìn)行性能監(jiān)控的目的。該方法能夠在應(yīng)用程序運行 時簡便地進(jìn)行性能監(jiān)控,并顯示出性能數(shù)據(jù)及對應(yīng)的組件名稱,因此用戶直接 看到的不再是二進(jìn)制的系統(tǒng)指令,使得用戶不需要進(jìn)行再解析便可以明確找到 出錯的對象,及創(chuàng)建失敗的組件名稱,從而方便定位程序性能問題,降低了對 用戶專業(yè)技術(shù)、技能的要求。
      上述介紹的方法中,記錄并顯示的是各個時刻(包括對象創(chuàng)建、對象釋放、 調(diào)用方法開始、調(diào)用方法結(jié)束)的時間、被分配的內(nèi)存等性能數(shù)據(jù)。但可能存 在以下兩個問題首先,多數(shù)時候用戶更加需要的是對象調(diào)用及方法調(diào)用的過 程耗時及內(nèi)存變化,而不是某時刻的時間及分配的內(nèi)存。其次,如果一個對象 的創(chuàng)建和釋放過程中,包括了另一個或多個對象的創(chuàng)建和釋放,那么對象之間
      就會存在嵌套關(guān)系,忽略嵌套關(guān)系進(jìn)行性能數(shù)據(jù)的顯示時,會顯得比較混亂。 因此,基于以上兩點原因,為了使顯示出來的性能數(shù)據(jù)更加直觀得顯示,使用 戶能夠一目了然,在本發(fā)明得優(yōu)選實施例中,還可以包括對獲得的性能數(shù)據(jù)進(jìn) 行處理的步驟。該處理過程可以包括通過對象調(diào)用過程中調(diào)用自身方法及對
      象間的函數(shù)關(guān)系,分析出對象調(diào)用的嵌套關(guān)系;并計算同一對象從創(chuàng)建到釋放
      的過程耗時及內(nèi)存變化,以及方法調(diào)用從開始到結(jié)束的過程耗時及內(nèi)存變化, 得到相關(guān)的過程性能數(shù)據(jù),并根據(jù)分析出的嵌套關(guān)系,將分析處理后的信息進(jìn)
      行分層顯示,例如,可以簡單展示如下 對象A創(chuàng)建
      調(diào)用對象A方法X開始 對象B創(chuàng)建
      調(diào)用對象B方法X開始
      調(diào)用對象B方法X結(jié)束統(tǒng)計對象B方法X#1行的過程 性能數(shù)據(jù)(耗時\內(nèi)存)
      對象B釋放統(tǒng)計對象b從創(chuàng)建到釋放的過程性能數(shù)據(jù)(耗時\
      內(nèi)存)
      調(diào)用對象A方法X結(jié)束統(tǒng)計對象A方法X執(zhí)行的過程性能數(shù)據(jù) (耗時\內(nèi)存)
      對象A釋放 統(tǒng)計對象A從創(chuàng)建到釋放的過程性能數(shù)據(jù)(耗時\內(nèi)存) 實際應(yīng)用中顯示界面參見圖2。
      但是對性能數(shù)據(jù)進(jìn)行處理的過程可能會影響到應(yīng)用程序的性能,使得獲取 到的性能數(shù)據(jù)不夠準(zhǔn)確,因此在本發(fā)明的優(yōu)選實施例中,可以將獲得的對象創(chuàng) 建是否成功信息、創(chuàng)建對象、釋放對象時刻的性能數(shù)據(jù)、方法調(diào)用是否成功信 息及方法調(diào)用加載、釋放時刻的性能數(shù)據(jù)通過通信協(xié)議(如UDP)傳遞到工作 線程,使得所述處理的步驟在工作線程中來完成,該工作線程與原應(yīng)用程序相 獨立,因此使得處理的過程對應(yīng)用程序自身的性能影響非常小,保證了獲得的 性能數(shù)據(jù)的準(zhǔn)確性及有效性。
      另外,為了使顯示的結(jié)構(gòu)更清晰,便于識別,本發(fā)明實施例還可以將對象 創(chuàng)建函數(shù)與方法調(diào)用函數(shù)分別用不同的顏色來顯示,同時將沒有嵌套的方法調(diào) 用使用一行顯示,可以參見圖2,這樣可以更加方便用戶定位程序性能問題。 同時由于一些調(diào)用時間很小的函數(shù)在分析過程中可以忽略不計,還有一些函數(shù) 可能是用戶不關(guān)心的,則可以不進(jìn)行跟蹤,因此本發(fā)明實施例還可以設(shè)置過濾 條件,將這些函數(shù)過濾掉,使得跟蹤過程能夠聚焦在需要的跟蹤信息上,可以 達(dá)到減少跟蹤信息量的目的,同時設(shè)置一個閾值,對調(diào)用時間大于該闊值的函 數(shù)用特殊字體突出顯示,從而增強(qiáng)了跟蹤程序的易用性。
      為了更好地理解本發(fā)明的方法,下面通過舉例進(jìn)行詳細(xì)描述。
      參見圖3,本發(fā)明實施例提供的方法包括以下步驟
      S301:啟動應(yīng)用程序時使用Injection方式截獲程序進(jìn)程創(chuàng)建的 OLE32.DLL中的CoGetClassOb ject調(diào)用,使指針指向自己增加的函數(shù)指針 MyGetClassObject;
      其中,CoGetClassObject即為程序運行庫中的方法調(diào)用函數(shù), MyGetClassObject即為本發(fā)明增加的方法調(diào)用函凄史。
      S302:啟動應(yīng)用程序時使用Injection方式截獲MSVBVM60. DLL中的 rtcCreate0bject2調(diào)用,^f吏指針指向自己增加的函lt指針CreateObjectImpl, 這樣應(yīng)用程序每次調(diào)用CreateObject創(chuàng)建對象時都會同時調(diào)用 CreateObjectlmpl,利用CreateObjectImpl進(jìn)行對象創(chuàng)建的捕獲跟蹤;
      S303:當(dāng)應(yīng)用程序每次調(diào)用CreateObject創(chuàng)建對象時,跟蹤自定義的 CreateObjectlmpl函數(shù),在該函數(shù)中進(jìn)行步驟S304至S305的工作;
      S304:記錄對象是否創(chuàng)建成功及其相關(guān)錯誤信息,通過UDP通訊協(xié)議傳遞 給工作線程進(jìn)行跟蹤信息的解析處理和顯示;
      S305:創(chuàng)建代理對象CDispatchProxy用于跟蹤對象中具體方法的調(diào)用過 程,包括查詢接口 ( Querylnterface )、加載接口 ( AddRef )和釋放接口 (Release),用于跟蹤方法的調(diào)用是否成功,調(diào)用哪個接口以及調(diào)用開始及結(jié) 束的時間和分配的內(nèi)存;
      S306:記錄代理對象是否創(chuàng)建成功并返回代碼對象指針,用于對象方法的 請求轉(zhuǎn)發(fā)和跟蹤;
      S307:當(dāng)應(yīng)用程序調(diào)用已創(chuàng)建對象的某一具體方法時,直接調(diào)用到代理對 象指針并記錄方法調(diào)用是否成功以及出錯信息,通過UDP通訊協(xié)議傳遞給工作 線程進(jìn)行跟蹤信息的解析處理和顯示;
      S308:通過代理對象CDispatchProxy對方法調(diào)用和釋放過程進(jìn)行請求轉(zhuǎn) 發(fā),以便步驟S309返回對象方法調(diào)用和釋放結(jié)果,統(tǒng)計過程性能數(shù)據(jù);
      S309:通過代理對象返回對象方法調(diào)用和釋放過程數(shù)據(jù);
      S310:記錄對象方法調(diào)用和釋放的信息,通過UDP通訊協(xié)議傳遞給工作線 程進(jìn)行跟蹤信息的解析處理,進(jìn)行對象方法調(diào)用性能數(shù)據(jù)的統(tǒng)計和顯示;
      S311:對跟蹤信息進(jìn)行解析處理,記錄對象調(diào)用過程信息、出錯信息、嵌 套關(guān)系和統(tǒng)計性能數(shù)據(jù)用于步驟S312進(jìn)行展現(xiàn);
      S312:進(jìn)行跟蹤信息的展現(xiàn),結(jié)果參見圖2。
      以上介紹了本發(fā)明實施例提供的對應(yīng)用程序進(jìn)行性能監(jiān)控的方法,與以上 方法相對應(yīng),本發(fā)明實施例還提供了一種對應(yīng)用程序進(jìn)行性能監(jiān)控的裝置,下 面只于i亥裝置進(jìn)4亍i羊細(xì);tik4笛述。
      參見圖4,本發(fā)明實施例提供的對應(yīng)用程序進(jìn)行性能監(jiān)控的裝置包括
      函數(shù)截獲單元U401,用于截獲程序運行庫中的對象創(chuàng)建過程及對象中的 方法調(diào)用函數(shù);
      第一記錄單元U402,用于當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建對象時 刻的性能數(shù)據(jù);
      代理對象創(chuàng)建單元U403,用于當(dāng)應(yīng)用程序創(chuàng)建對象成功時,創(chuàng)建并返回 代理對象指針;
      第二記錄單元U404,用于當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所 述代理對象記錄方法調(diào)用的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程 序;當(dāng)應(yīng)用程序釋放對象時,通過所述代理對象記錄釋放對象時刻的性能數(shù)據(jù), 并將所述代理對象指針返回所述應(yīng)用程序。
      在應(yīng)用程序啟動時,函數(shù)截獲單元U401截獲程序運行庫中的對象創(chuàng)建、 對象釋放函數(shù)及對象中的方法調(diào)用函數(shù);當(dāng)應(yīng)用程序創(chuàng)建對象時,第一記錄單 元U402就可以獲取并記錄對象創(chuàng)建是否成功信息、對象名稱及創(chuàng)建對象時刻 的性能數(shù)據(jù);當(dāng)對象創(chuàng)建成功時,代理對象創(chuàng)建單元U403創(chuàng)建代理對象,當(dāng) 應(yīng)用程序調(diào)用已經(jīng)創(chuàng)建的對象中某一具體方法時,調(diào)用所述代理對象指針,第 二記錄單元U404獲取方法調(diào)用是否成功信息及方法名稱,記錄方法調(diào)用加載、
      釋放時刻的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序。當(dāng)應(yīng)用程序
      釋放對象時,第二記錄單元U404通過所述代理對象記錄釋放對象時刻的性能
      數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序。
      為了使獲取到的性能數(shù)據(jù)能夠直觀地展現(xiàn),參見圖5,該裝置還包括
      統(tǒng)計單元U505,用于統(tǒng)計對象及具體方法調(diào)用過程性能數(shù)據(jù)、出錯信息 及對象調(diào)用的嵌套關(guān)系;
      其中,可以通過對象調(diào)用過程中調(diào)用自身方法及對象間的函數(shù)關(guān)系,分析 出對象調(diào)用的嵌套關(guān)系;并計算同 一對象從創(chuàng)建到釋放的過程耗時及內(nèi)存變 化,以及方法調(diào)用從開始到結(jié)束的過程耗時及內(nèi)存變化,得到相關(guān)的過程性能 數(shù)據(jù)。
      顯示單元U506,用于根據(jù)所述嵌套關(guān)系將統(tǒng)計后的信息分層顯示。
      圖5中函數(shù)截獲單元U501、第一記錄單元U502、代理對象創(chuàng)建單元U503、 第二記錄單元U504,與圖4中函數(shù)截獲單元U401、第一記錄單元U402、代理 對象創(chuàng)建單元U403、第二記錄單元U404相同。
      但是對性能數(shù)據(jù)進(jìn)行處理的過程可能會影響到原應(yīng)用程序的性能,使得獲 取到的性能數(shù)據(jù)不夠準(zhǔn)確,因此在本發(fā)明的優(yōu)選實施例中,對數(shù)據(jù)進(jìn)行統(tǒng)計及 顯示的過程在獨立的工作線程中來完成,因此,參見圖6,該裝置還包括
      通信單元U607,用于所述對象創(chuàng)建是否成功信息、創(chuàng)建對象、釋放對象 時刻的性能數(shù)據(jù)、方法調(diào)用的性能數(shù)據(jù)通過通信協(xié)議傳遞,在其他計算機(jī)上統(tǒng) 計對象及具體方法調(diào)用過程性能數(shù)據(jù)、出錯信息及對象調(diào)用的嵌套關(guān)系,并根 據(jù)所述嵌套關(guān)系將處理后的信息分層顯示。
      為了使顯示的結(jié)構(gòu)更清晰,便于識別,方便用戶定位程序性能問題,該裝 置還可以包括
      設(shè)置單元U608,用于顯示時,將對象創(chuàng)建函數(shù)與方法調(diào)用函數(shù)設(shè)置為不 同的顏色;并將沒有嵌套的方法調(diào)用使用一行顯示。
      為了使得跟蹤過程能夠聚焦在需要的跟蹤信息上,達(dá)到減少跟蹤信息量的 目的,該裝置還可以包括
      過濾單元U609,用于過濾掉不需要跟蹤的對象創(chuàng)建和/或方法調(diào)用函數(shù), 并將調(diào)用時間大于預(yù)置時間的對象創(chuàng)建和/或方法調(diào)用函數(shù)突出顯示。
      圖6中函數(shù)截獲單元U601、第一記錄單元U602、代理對象創(chuàng)建單元U603、 第二記錄單元U604,與圖4中函數(shù)截獲單元U401、第一記錄單元U402、代理 對象創(chuàng)建單元U403、第二記錄單元U404相同
      以上對本發(fā)明所提供的 一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法及裝置,進(jìn)行
      以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于 本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
      及應(yīng)用范圍上均 會有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
      權(quán)利要求
      1、一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法,其特征在于,包括截獲程序運行庫中的對象創(chuàng)建過程及對象中的方法調(diào)用函數(shù);當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建時刻的性能數(shù)據(jù),創(chuàng)建并返回代理對象指針;當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所述代理對象記錄方法調(diào)用的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序;當(dāng)應(yīng)用程序釋放對象時,通過所述代理對象記錄釋放對象時刻的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序。
      2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括統(tǒng)計對象及具體方法調(diào)用過程性能數(shù)據(jù)、出錯信息及對象調(diào)用的嵌套關(guān) 系,并才艮據(jù)所述嵌套關(guān)系將處理后的信息分層顯示。
      3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括 所述對象創(chuàng)建是否成功信息、創(chuàng)建對象、釋放對象時刻的性能數(shù)據(jù)、方法調(diào)用的性能數(shù)據(jù)通過通信協(xié)議進(jìn)行傳遞。
      4、 才艮據(jù)權(quán)利要求2或3所述的方法,其特征在于,還包括將對象創(chuàng)建函數(shù)與方法調(diào)用函數(shù)設(shè)置為不同的顏色;并將沒有嵌套的方法 調(diào)用使用一行顯示。
      5、 根據(jù)權(quán)利要求2或3所述的方法,其特征在于,還包括 設(shè)置跟蹤條件,過濾掉不需要跟蹤的對象創(chuàng)建和/或方法調(diào)用函數(shù),并將調(diào)用時間大于預(yù)置時間的對象創(chuàng)建和/或方法調(diào)用函數(shù)突出顯示。
      6、 一種對應(yīng)用程序進(jìn)行性能監(jiān)控的裝置,其特征在于,包括 函數(shù)截獲單元,用于截獲程序運行庫中的對象創(chuàng)建過程及對象中的方法調(diào)用函數(shù);第一記錄單元,用于當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建對象時刻的性 能數(shù)據(jù);代理對象創(chuàng)建單元,用于當(dāng)應(yīng)用程序創(chuàng)建對象成功時,創(chuàng)建并返回代理對 象指針;第二記錄單元,用于當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所述代理對象記錄方法調(diào)用的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序;當(dāng)應(yīng)用程序釋放對象時,通過所述代理對象記錄釋放對象時刻的性能數(shù)據(jù),并將 所述代理對象指針返回所述應(yīng)用程序。
      7、 根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括統(tǒng)計單元,用于統(tǒng)計對象及具體方法調(diào)用過程性能數(shù)據(jù)、出錯信息及對象 調(diào)用的嵌套關(guān)系;顯示單元,用于根據(jù)所述嵌套關(guān)系將統(tǒng)計后的信息分層顯示。
      8、 根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括通信單元,用于所述對象創(chuàng)建是否成功信息、創(chuàng)建對象、釋放對象時刻的 性能數(shù)據(jù)、方法調(diào)用的性能凄i:據(jù)通過通信協(xié)議進(jìn)行傳遞。
      9、 根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,還包括 設(shè)置單元,用于將對象創(chuàng)建函數(shù)與方法調(diào)用函數(shù)設(shè)置為不同的顏色;并將沒有嵌套的方法調(diào)用使用 一行顯示。
      10、 根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,還包括過濾單元,用于過濾掉不需要跟蹤的對象創(chuàng)建和/或方法調(diào)用函數(shù),并將 調(diào)用時間大于預(yù)置時間的對象創(chuàng)建和/或方法調(diào)用函數(shù)突出顯示。
      全文摘要
      本發(fā)明公開了一種對應(yīng)用程序進(jìn)行性能監(jiān)控的方法,包括截獲程序運行庫中的對象創(chuàng)建過程及對象中的方法調(diào)用函數(shù);當(dāng)應(yīng)用程序創(chuàng)建對象成功時,記錄創(chuàng)建時刻的性能數(shù)據(jù),創(chuàng)建代理對象并返回代理對象指針;當(dāng)應(yīng)用程序調(diào)用所述對象中的方法時,通過所述代理對象記錄方法調(diào)用的性能數(shù)據(jù),并將所述代理對象指針返回所述應(yīng)用程序;當(dāng)應(yīng)用程序釋放對象時,記錄釋放對象時刻的性能數(shù)據(jù)。使得用戶可以跟蹤獲得各個對象從創(chuàng)建到釋放以及其方法從開始到結(jié)束的性能信息,同時對于過程出現(xiàn)的錯誤也可以明確找到出錯的對象,及創(chuàng)建失敗的組件名稱,從而方便定位程序性能問題,降低了對用戶專業(yè)技術(shù)的要求。
      文檔編號G06F11/36GK101339535SQ20081021304
      公開日2009年1月7日 申請日期2008年8月21日 優(yōu)先權(quán)日2008年8月21日
      發(fā)明者英 徐, 林錳杰 申請人:金蝶軟件(中國)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1