專利名稱::運(yùn)行日志取得方法及程序、存儲(chǔ)介質(zhì)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及用來取得分成為多個(gè)模塊的軟件的處理運(yùn)行日志的技術(shù)。
背景技術(shù):
:歷來,對于重現(xiàn)率低的軟件故障,是通過取得軟件的處理運(yùn)行日志,分析該處理LOG,查清故障的原因而采取對策。然而,在取得上述現(xiàn)有的處理運(yùn)行日志方面存在在以下的問題。(1)為了在用戶的操作環(huán)境也能繼續(xù)不斷地取得運(yùn)行日志,必須對軟件的模塊本身進(jìn)行加工增加處理運(yùn)行日志取得例程不可,這將加大為取得處理運(yùn)行日志的作業(yè)負(fù)擔(dān)。(2)由于處理運(yùn)行日志的取得是針對每個(gè)模塊進(jìn)行,生成的運(yùn)行日志是以模塊為單位的,很難取得整個(gè)軟件的處理的完全按照時(shí)間順序的運(yùn)行日志。因此,作為對整個(gè)處理運(yùn)行日志的洞察不佳,分析運(yùn)行日志一直到發(fā)現(xiàn)故障原因的過程極其耗費(fèi)工時(shí)。
發(fā)明內(nèi)容本發(fā)明系有鑒于上述問題而完成的發(fā)明,其目的在于提供一種容易取得分成為多個(gè)模塊的軟件的處理運(yùn)行日志,并且可以削減用來分析軟件故障原因的工時(shí)的運(yùn)行日志的取得方法,以及用于藉助計(jì)算機(jī)實(shí)現(xiàn)該方法的程序及存放該程序的存儲(chǔ)介質(zhì)。為達(dá)到上述目的,本發(fā)明的運(yùn)行日志取得方法具有如下的構(gòu)成。即是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;對在調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)之際的規(guī)定信息進(jìn)行記錄的過程;以及對在接受上述執(zhí)行結(jié)果之際的規(guī)定信息進(jìn)行記錄的過程。為達(dá)到上述目的,本發(fā)明的另一運(yùn)行日志取得方法具有如下的構(gòu)成。即是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程;用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將接收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;判斷在上述程序的函數(shù)定義中,參數(shù)或返回值是否作為結(jié)構(gòu)定義的過程;在作為結(jié)構(gòu)定義的場合,根據(jù)該結(jié)構(gòu)的組裝選項(xiàng)(packingoption),將該結(jié)構(gòu)的內(nèi)容配置于存儲(chǔ)器中的過程;以及將配置于上述存儲(chǔ)器上的結(jié)構(gòu)的內(nèi)容作為運(yùn)行日志記錄于盤裝置的過程。本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)可從參考下面的附圖的描述而了解,對附圖各圖中同樣或類似的部件賦予同樣的標(biāo)號(hào)。包括在本說明書中并構(gòu)成其一個(gè)組成部分的附圖示出本發(fā)明的各個(gè)具體實(shí)施方式,并且與描述一起用來說明本發(fā)明的原理。圖1為示出實(shí)現(xiàn)實(shí)施形態(tài)1的運(yùn)行日志取得方法的計(jì)算機(jī)(軟件評(píng)價(jià)系統(tǒng))的構(gòu)成的示圖。圖2為示出函數(shù)加載時(shí)的通常的存儲(chǔ)器構(gòu)成的示圖。圖3為示出使用實(shí)施形態(tài)1的IATPatch時(shí)的存儲(chǔ)器構(gòu)成的示圖。圖4A為示出使用實(shí)施形態(tài)1的IATPatch時(shí)的狀態(tài)的示圖。圖4B為示出實(shí)施形態(tài)1的運(yùn)行日志取得處理的流程圖。圖5為示出使用實(shí)施形態(tài)1的軟件評(píng)價(jià)系統(tǒng)的IATPatch時(shí)的內(nèi)部構(gòu)成的示圖。圖6為示出COM服務(wù)器的接口的實(shí)例生成時(shí)的通常的存儲(chǔ)器構(gòu)成的示圖。圖7為示出使用實(shí)施形態(tài)1的VTablePatch時(shí)的存儲(chǔ)器構(gòu)成的示圖。圖8A為示出使用實(shí)施形態(tài)1的VTablePatch時(shí)的狀態(tài)的示圖。圖8B為示出本發(fā)明的實(shí)施形態(tài)1的運(yùn)行日志取得處理的流程圖。圖9為示出實(shí)施形態(tài)1的軟件評(píng)價(jià)系統(tǒng)的內(nèi)部構(gòu)成的示圖。圖10為示出實(shí)施形態(tài)1的函數(shù)定義文件的例子的示圖。圖11為示出藉助實(shí)現(xiàn)本發(fā)明的實(shí)施形態(tài)1的運(yùn)行日志取得方法軟件評(píng)價(jià)系統(tǒng)取得的運(yùn)行日志的一例的示圖。圖12為示出在實(shí)施形態(tài)2中在生成接口的實(shí)例時(shí)如何向存儲(chǔ)器加載的例子的示圖。圖13為示出在實(shí)施形態(tài)2中運(yùn)行日志取得代碼采用何種存儲(chǔ)器配置放置的示圖。圖14為示出實(shí)施形態(tài)2的處理的流程的示圖。圖15為示出實(shí)施形態(tài)2的函數(shù)定義的例子的示圖。圖16為示出在實(shí)施形態(tài)2中取得的運(yùn)行日志的一例的示圖。圖17為示出實(shí)施形態(tài)3的存儲(chǔ)器加載時(shí)的處理流程圖。圖18為示出實(shí)施形態(tài)4的函數(shù)定義文件的例子的示圖。圖19為示出在實(shí)施形態(tài)4中取得的運(yùn)行日志的一例的示圖。圖20為示出實(shí)施形態(tài)4的處理流程的示圖。圖21為示出實(shí)施形態(tài)5的處理流程的示圖。圖22為示出實(shí)施形態(tài)6的函數(shù)定義文件的例子的示圖。圖23為示出在實(shí)施形態(tài)6中取得的運(yùn)行日志的一例的示圖。圖24為示出關(guān)于結(jié)構(gòu)的組裝選項(xiàng)的具體示例的示圖。圖25為示出關(guān)于結(jié)構(gòu)的組裝選項(xiàng)的另一具體示例的示圖。圖26為示出關(guān)于結(jié)構(gòu)的組裝選項(xiàng)的另一具體示例的示圖。圖27為示出實(shí)施形態(tài)6的處理流程的示圖。圖28為示出實(shí)施形態(tài)7的函數(shù)定義文件的例子的示圖。圖29為示出利用圖28所示的函數(shù)定義取得的運(yùn)行日志的一例的示圖。圖30為示出在將圖29所示的運(yùn)行日志進(jìn)行保存之際的存儲(chǔ)器結(jié)構(gòu)的示31為示出實(shí)施形態(tài)7的處理流程的示圖。圖32為示出實(shí)施形態(tài)8的處理流程的示圖。圖33為用來設(shè)定在實(shí)施形態(tài)7和8中示出的功能的用戶接口的例子的示圖。圖34為示出實(shí)施形態(tài)10的函數(shù)定義文件的例子的示圖。圖35為示出利用圖24所示的函數(shù)定義取得的運(yùn)行日志的一例的示圖。圖36為示出與圖35所示的運(yùn)行日志一起保存的二進(jìn)制運(yùn)行日志文件的內(nèi)容的示圖。圖37為示出實(shí)施形態(tài)10的處理流程的示圖。圖38為示出實(shí)施形態(tài)11的處理流程的示圖。圖39為示出實(shí)施形態(tài)11的處理流程的示圖。圖40為示出用來設(shè)定在實(shí)施形態(tài)10及11示出的功能的用戶接口的例子的示圖。圖41為示出使在基本運(yùn)行日志描述的DataID和二進(jìn)制運(yùn)行日志的該DataID的數(shù)據(jù)互相關(guān)聯(lián)的用戶接口的示圖。具體實(shí)施例方式下面參照附圖對本發(fā)明的優(yōu)選實(shí)施方式予以詳細(xì)說明。本實(shí)施形態(tài),是從某一模塊調(diào)用存在于別的模塊內(nèi)的函數(shù)之際的結(jié)構(gòu),利用保存于存儲(chǔ)器中的輸入函數(shù)地址或虛擬函數(shù)地址表(VirtualAddressTable),通過掛接模塊間的函數(shù)調(diào)用記錄在運(yùn)行日志中,可不對軟件的模塊本身進(jìn)行加工而將整個(gè)軟件的處理作為時(shí)間順序的運(yùn)行日志取得。下面具體說明之。<系統(tǒng)構(gòu)成>圖1為示出實(shí)現(xiàn)本發(fā)明的實(shí)施形態(tài)的運(yùn)行日志取得方法的計(jì)算機(jī)(軟件評(píng)價(jià)系統(tǒng))的構(gòu)成的示圖。為簡化說明起見,假設(shè)在本實(shí)施形態(tài)中,本軟件評(píng)價(jià)系統(tǒng)是構(gòu)筑在一臺(tái)PC的內(nèi)部,本發(fā)明的運(yùn)行日志取得方法的特征是不管是構(gòu)筑于一臺(tái)PC的內(nèi)部還是由多個(gè)PC構(gòu)筑的網(wǎng)絡(luò)系統(tǒng),都有效。在加載本軟件評(píng)價(jià)系統(tǒng)的計(jì)算機(jī)中安裝有CPU1、芯片組2、RAM3、硬盤控制器4、顯示控制器5、硬盤驅(qū)動(dòng)器6、CD-ROM驅(qū)動(dòng)器7及顯示器8。另外,設(shè)置有連接CPU1和芯片組2的信號(hào)線11、連接芯片組2和RAM3的信號(hào)線12、連接芯片組2和各種外圍設(shè)備的外圍設(shè)備總線13、連接硬盤控制器4和硬盤驅(qū)動(dòng)器6的信號(hào)線14、連接硬盤控制器4和CD-ROM驅(qū)動(dòng)器7的信號(hào)線15以及連接顯示控制器5和顯示器8的信號(hào)線16。<對函數(shù)處理的處理運(yùn)行日志的取得>為了說明實(shí)現(xiàn)本發(fā)明的實(shí)施形態(tài)1的運(yùn)行日志取得方法的軟件評(píng)價(jià)系統(tǒng),首先利用圖2,對分成為多個(gè)模塊的軟件在通常的狀態(tài)下如何加載到存儲(chǔ)器予以說明。通常,分成為多個(gè)模塊的軟件,分成為進(jìn)行整體控制的執(zhí)行文件EXE(23)和作為模塊存在擔(dān)負(fù)補(bǔ)充EXE的任務(wù)的動(dòng)態(tài)鏈接庫DLL(27),EXE和DLL兩者都加載在存儲(chǔ)器中。EXE由代碼段(28)和數(shù)據(jù)段(29),由輸入函數(shù)地址表(22)構(gòu)成。此外,輸入函數(shù)地址表,由函數(shù)所屬的DLL分開(21、24),在每個(gè)DLL中寫有加載各個(gè)函數(shù)的地址(30~35)。DLL函數(shù)的實(shí)體,對每個(gè)DLL分開(25、26)加載,各個(gè)函數(shù)作為各該DLL的一部分加載(36~41)。在此圖中,示出的示例是一個(gè)EXE使用A.DLL及B.DLL兩個(gè)動(dòng)態(tài)鏈接庫內(nèi)的函數(shù),實(shí)際使用的函數(shù)為FuncAA、FuncAB、FuncAC、FuncBA、FuncBB、FuncBC六個(gè)。在位于EXE的代碼段內(nèi)的代碼調(diào)用函數(shù)FuncAA的場合,首先讀取寫在輸入函數(shù)地址表內(nèi)的FuncAA的地址(30)。此處實(shí)際上寫入作為A.DLL的一部分讀取的FuncAA代碼(36)的地址,通過調(diào)用該地址,EXE的代碼可以調(diào)用A.DLL的FuncAA。圖3為示出實(shí)施形態(tài)1的存儲(chǔ)器構(gòu)成的示圖,與圖2的不同之處在于對運(yùn)行日志取得用的代碼采用所謂的IATPatch(ImportAddressTablePatch)的方法,對函數(shù)調(diào)用重定向這一點(diǎn)。如運(yùn)行日志的取得開始,就在存儲(chǔ)器內(nèi)加載作為IATPatch用的DLL的C.DLL(58)。C.DLL,將引人函數(shù)地址表(52)內(nèi)寫入的函數(shù)的地址改寫為作為C.DLL內(nèi)的運(yùn)行日志取得代碼的FuncCAA、FuncCAB、FuncCAC、FuncCBA、FuncCBB、FuncCBC的地址(61~66)。C.DLL內(nèi)的FuncCAA、FuncCAB、FuncCAC、FuncCBA、FuncCBB、FuncCBC的代碼(73~78),在記錄運(yùn)行日志的同時(shí),調(diào)用加載到應(yīng)該接受原來的函數(shù)調(diào)用的存儲(chǔ)器中的作為該函數(shù)的FuncAA、FuncAB、FuncAC、FuncBA、FuncBB、FuncBC(67~72)。圖4A為示出圖3的IATPatch的處理的示圖,而圖4B為示出運(yùn)行日志取得處理的流程的流程圖。為了簡化說明起見,在此圖中,示出在EXE調(diào)用A.DLL內(nèi)的FuncAA之際,IATPatch產(chǎn)生的運(yùn)行日志取得代碼是如何操作的示例。如EXE(91)調(diào)用FuncAA(94),位于C.DLL內(nèi)的運(yùn)行日志取得代碼將DLL名/函數(shù)名保存到存儲(chǔ)器中(步驟S402)、將調(diào)用時(shí)刻保存于存儲(chǔ)器中、將調(diào)用時(shí)的參數(shù)保存于存儲(chǔ)器中、將調(diào)用時(shí)的指針參數(shù)指示的存儲(chǔ)器內(nèi)容保存于別個(gè)存儲(chǔ)器中(95、步驟S403)。其后,C.DLL,調(diào)用本來應(yīng)該調(diào)用的A.DLL(93)內(nèi)的FuncAA(99、步驟S404)。如A.DLL的FuncAA處理(97)結(jié)束,將控制返回C.DLL(98),C.DLL就將返回時(shí)的時(shí)刻保存于存儲(chǔ)器中,將返回值保存于存儲(chǔ)器中,并將返回時(shí)的指針參數(shù)指示的存儲(chǔ)器內(nèi)容保存于別個(gè)存儲(chǔ)器中(99)。其后,C.DLL,將保存的運(yùn)行日志信息寫入文件(100、步驟S405),將是否是恰好像A.DLL的FuncAA通常那樣結(jié)束這一點(diǎn)返回(101)給EXE。圖5為示出實(shí)現(xiàn)實(shí)施形態(tài)1的運(yùn)行日志取得方法的軟件評(píng)價(jià)系統(tǒng)的內(nèi)部構(gòu)成的示圖。通常,執(zhí)行形式的EXE(113),調(diào)用DLL-1(116)及DLL-2(117)內(nèi)的函數(shù),此處,嵌入稱為API追蹤程序(114)的運(yùn)行日志取得代碼,生成處理運(yùn)行日志(115)。API追蹤程序(114),根據(jù)描述DLL-1及DLL-2的函數(shù)定義文件(111)和改寫哪一個(gè)DLL的什么函數(shù)的引人函數(shù)地址表取得運(yùn)行日志的設(shè)定情景(追蹤情景112)而操作。<對方法處理的處理運(yùn)行日志的取得>下面,為了說明在實(shí)現(xiàn)實(shí)施形態(tài)1的運(yùn)行日志取得方法的軟件評(píng)價(jià)系統(tǒng)中,在執(zhí)行文件EXE(113)在COM(構(gòu)件對象模型)服務(wù)器中生成輸出的接口的實(shí)例時(shí),如何加載到存儲(chǔ)器,首先參照圖6對在通常的狀態(tài)下如何加載到存儲(chǔ)器予以說明。通常,如進(jìn)行接口的實(shí)例生成,在COM服務(wù)器內(nèi),生成要求的接口(121、122)和該方法(在面向?qū)ο缶幊讨?,描述了對象?zhí)行的過程的程序130~135)),這兩者都加載到存儲(chǔ)器中。此處,virtualaddresstable(虛擬地址表118、120)送往對生成的每一個(gè)實(shí)例作成的、提出生成要求的EXE。在此virtualaddresstable中寫有各個(gè)方法的生成地址(124~129)。EXE利用這些信息對各個(gè)接口進(jìn)行調(diào)用。在此圖中,示出的是一個(gè)EXE(119)生成InterfaceA(121)和InterfaceB(122)兩個(gè)接口的實(shí)例,使用該接口內(nèi)部的方法的示例,實(shí)際使用的方法為MethodAA、MethodAB、MethodAC、MethodBA、MethodBB、MethodBC(130~135)。在EXE的代碼調(diào)用函數(shù)MethodAA的場合,首先讀出寫在virtualaddresstable內(nèi)的MethodAA的地址(124)。此處實(shí)際上寫有作為COM服務(wù)器的InterfaceA的一部分生成的MethodAA代碼(130)的地址,通過調(diào)用該地址,EXE的代碼可以調(diào)用InterfaceA的MethodAA。圖7為示出使用實(shí)施形態(tài)1的軟件評(píng)價(jià)系統(tǒng)的存儲(chǔ)器構(gòu)成的示圖,與圖6的不同之處在于對運(yùn)行日志取得用的代碼采用所謂的VTablePatch(virtualaddresstablePatch)的方法,對方法調(diào)用重定向這一點(diǎn)。如運(yùn)行日志的取得開始,就在存儲(chǔ)器內(nèi)加載作為VTablePatch用的DLL(143)。此DLL,將virtualaddresstable(136、138)內(nèi)寫入的方法的地址改寫為作為DLL內(nèi)的運(yùn)行日志取得代碼的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C的地址(145~150)。DLL(143)內(nèi)的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C的代碼(157~162),在記錄運(yùn)行日志的同時(shí),調(diào)用加載到應(yīng)該接受原來的函數(shù)調(diào)用的存儲(chǔ)器中的作為該函數(shù)的MethodAA、MethodAB、MethodAC、MethodBA、MethodBB、MethodBC(157~162)。圖8A為示出圖7的VTablePatch處理的示圖,圖8B為示出運(yùn)行日志取得處理的流程的流程圖。為了簡化說明起見,在此圖中,示出在EXE調(diào)用COM服務(wù)器內(nèi)的InterfaceA的MethodAA之際,VTablePatch產(chǎn)生的運(yùn)行日志取得代碼是如何操作的示例。如EXE(163)調(diào)用MethodAA(166),位于DLL內(nèi)的運(yùn)行日志取得代碼將模塊名/接口名/方法名保存到存儲(chǔ)器中(步驟S802)、將調(diào)用時(shí)刻保存于存儲(chǔ)器中、將調(diào)用時(shí)的參數(shù)保存于存儲(chǔ)器中、將調(diào)用時(shí)的指針參數(shù)指示的存儲(chǔ)器內(nèi)容保存于別個(gè)存儲(chǔ)器中(167、步驟S802)。其后,DLL(164),調(diào)用本來應(yīng)該調(diào)用的COM服務(wù)器(165)內(nèi)的MethodAA(168、步驟S804)。如COM服務(wù)器(165)的MethodAA處理(169)結(jié)束,將控制返回DLL(164),DLL(164)就將返回時(shí)的時(shí)刻保存于存儲(chǔ)器中,將返回值保存于存儲(chǔ)器中,并將返回時(shí)的指針參數(shù)指示的存儲(chǔ)器內(nèi)容保存于別個(gè)存儲(chǔ)器中(171)。其后,DLL,將保存的運(yùn)行日志信息寫入文件(172、步驟S805),將是否是恰好像COM服務(wù)器(165)的MethodAA通常那樣結(jié)束這一點(diǎn)返回(173)給EXE(163)。圖9為示出實(shí)施形態(tài)1的軟件評(píng)價(jià)系統(tǒng)的內(nèi)部構(gòu)成的示圖。通常,執(zhí)行形式的EXE(176),調(diào)用COM服務(wù)器1(179)及COM服務(wù)器2(180)內(nèi)的方法,此處,嵌入稱為API追蹤程序(177)的運(yùn)行日志取得代碼,生成處理運(yùn)行日志(178)。API追蹤程序(177),根據(jù)描述COM服務(wù)器1(179)及COM服務(wù)器2(180)的函數(shù)定義文件(174)和改寫哪一個(gè)COM服務(wù)器的什么方法的virtualaddresstable取得運(yùn)行日志的設(shè)定情景(175)而操作。<實(shí)施例>圖10為示出對實(shí)施形態(tài)1的軟件評(píng)價(jià)系統(tǒng),指示各個(gè)函數(shù)及方法的參數(shù)的形式及返回值的形式的函數(shù)定義文件的示例圖。描述DLL/接口名及函數(shù)/方法名(所謂的“函數(shù)/方法”是指“函數(shù)或方法”之意,下同此),對該函數(shù)/方法示出參數(shù)及返回值的類型。本實(shí)施形態(tài)的軟件評(píng)價(jià)系統(tǒng),根據(jù)由此函數(shù)定義文件指示的內(nèi)容,判斷各個(gè)函數(shù)/方法具有何種參數(shù)/返回值,取得其內(nèi)容作為運(yùn)行日志。圖11為示出利用圖10所示的函數(shù)定義文件取得的運(yùn)行日志的一個(gè)示例。針對各個(gè)調(diào)用,生成調(diào)用函數(shù)/方法的時(shí)刻以及該時(shí)刻的參數(shù)/返回值作為運(yùn)行日志。從以上的說明可知,根據(jù)本實(shí)施形態(tài)的運(yùn)行日志取得方法,在取得分成為多個(gè)模塊的軟件的處理運(yùn)行日志中,可不對軟件的模塊本身進(jìn)行改變而將模塊內(nèi)準(zhǔn)備的函數(shù)/方法的調(diào)用作為運(yùn)行日志進(jìn)行記錄,可以減少用于取得處理運(yùn)行日志的作業(yè)負(fù)擔(dān)。另外,生成的運(yùn)行日志,可以取得按照時(shí)間順序的運(yùn)行日志,由于對運(yùn)行日志的分析變得容易,可以削減用來分析軟件故障原因的工時(shí)。在本實(shí)施形態(tài)中,進(jìn)一步對在virtualaddresstable(虛擬地址表)中存在位置間隙(placegap)的場合的處理予以說明。圖12為示出對實(shí)現(xiàn)實(shí)施形態(tài)2的運(yùn)行日志取得方法的軟件評(píng)價(jià)系統(tǒng),在virtualaddresstable(虛擬地址表)中存在位置間隙(placegap)的場合,在生成接口的實(shí)例時(shí)如何向存儲(chǔ)器加載的例子的示圖。下面連系圖6對圖12進(jìn)行說明。與圖6的示例的不同之處在于有關(guān)MethodBB和MethodBC的部分。在針對InterfaceB的VTable(203)中,在應(yīng)該放置MethodBB的部分,放置指向稱為位置間隙的虛例程的地址(211),在派生此InterfaceB安裝MethodBB之際,指向VTable上的MethodBC的地址(212)的偏移值也不改變。就是說,所謂的位置間隙,對持有虛擬函數(shù)接口,指示為派生類的預(yù)約的VTable上的區(qū)域。在派生前的InterfaceB中,由于沒有安裝MethodBB,實(shí)際的代碼,在MethodBA(216)和MethodBC(217)之間不存在間隙。圖13為示出針對實(shí)施形態(tài)2的軟件評(píng)價(jià)系統(tǒng),在virtualaddresstable的內(nèi)部存在位置間隙的場合運(yùn)行日志取得代碼采用何種存儲(chǔ)器配置放置的示圖,是表示本實(shí)施形態(tài)最好的示圖。下面連系圖77對圖13進(jìn)行說明。如運(yùn)行日志取得開始,在存儲(chǔ)器內(nèi)加載VTablePatch用的DLL(228)。此DLL,將寫在virtualaddresstable(221、223)內(nèi)的地址改寫為DLL內(nèi)運(yùn)行日志取得代碼的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C的地址(230~233、235)。與圖7不同之處在于自動(dòng)檢測位置間隙(234),關(guān)于該部分不進(jìn)行改寫,此外,MethodB′B的代碼不配置于存儲(chǔ)器上。DLL內(nèi)的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C的代碼(241~245),在記錄運(yùn)行日志的同時(shí),調(diào)用加載到應(yīng)該接受原來的方法調(diào)用的存儲(chǔ)器中的作為該方法的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C(236~240)。圖14為示出實(shí)施形態(tài)2的軟件評(píng)價(jià)系統(tǒng)存儲(chǔ)器加載時(shí)的處理的流程的示圖,與圖13一起,可以最清楚地表現(xiàn)本實(shí)施形態(tài)的特征。如處理開始(步驟S1401),自己將作為Index參照的存儲(chǔ)器區(qū)初始化為零(步驟S1402)。此Index表示在函數(shù)定義文件中記載的方法的順序。其次,由操作系統(tǒng)讀出寫在函數(shù)定義文件中的Indexn的方法的屬性(步驟S1403),從屬性信息判斷該函數(shù)是否是虛擬函數(shù)(步驟S1404)。在是虛擬函數(shù)的場合,由操作系統(tǒng)(OS),讀取針對Indexn的方法位置間隙的偏置值p(步驟S1405),判斷p是否是真值,即判斷是否是零指針(步驟S1406)。此處,根據(jù)p是否是真值,判斷是否存在位置間隙,比如對于將0xFFFFFFFF這樣的規(guī)定值定義為“位置間隙不存在”的意思的操作系統(tǒng),同樣判斷是否是0xFFFFFFFF。在不存在位置間隙的場合,或在步驟S1404中判斷不是虛擬函數(shù)的場合,如圖7所示生成運(yùn)行日志取得代碼。具體說,將運(yùn)行日志取得代碼置于存儲(chǔ)器上(步驟S1407),由操作系統(tǒng)讀取針對Indexn的方法的VTable上的偏置值m(步驟S1408),在步驟S1409中將偏置值m的地址改寫為運(yùn)行日志取得代碼的地址。在步驟S1409結(jié)束的場合或在步驟S1406中判斷存在位置間隙的場合,使Indexn增1(步驟S1410)。就是說,在后一場合存儲(chǔ)器內(nèi)的位置間隙的區(qū)域,不改寫為運(yùn)行日志取得代碼的地址。此處理,一直繼續(xù)進(jìn)行到存儲(chǔ)器加載終止為止(步驟S1411)。圖15為示出對實(shí)施形態(tài)2的軟件評(píng)價(jià)系統(tǒng),指示各個(gè)函數(shù)及方法的參數(shù)的形式及返回值的形式的函數(shù)定義文件的示例圖。另外,關(guān)于位置間隙的定義,由于通常的操作系統(tǒng)提供的功能,在此函數(shù)定義文件中不描述。因此,圖15和圖10一樣。圖16為示出利用圖15示出的函數(shù)定義文件,對保持圖12所示的位置間隙的接口,在實(shí)施形態(tài)2的軟件評(píng)價(jià)系統(tǒng)中取得的運(yùn)行日志的一例的示圖。對于各個(gè)調(diào)用,函數(shù)/方法生成調(diào)用時(shí)刻以及該時(shí)刻的參數(shù)/返回值作為運(yùn)行日志。另外,盡管在vTable上有位置間隙,可以取得對于在位置間隙后配置的MethodBC的調(diào)用的運(yùn)行日志的是圖14所示的流程,即實(shí)施本實(shí)施形態(tài),只要不進(jìn)行位置間隙檢測,關(guān)于像MethodBC那樣配置于位置間隙后的方法,不能取得運(yùn)行日志。從以上的說明可知,根據(jù)本發(fā)明,通過由操作系統(tǒng)返回的信息自動(dòng)判斷virtualaddresstable的位置間隙,即使是在virtualaddresstable中存在位置間隙,也能取得運(yùn)行日志。通常,位置間隙,如上述實(shí)施形態(tài)2,為解決伴隨類的派生的虛擬函數(shù)而使用,但在那以外也存在使用的情況。圖17為示出實(shí)現(xiàn)實(shí)施形態(tài)3的運(yùn)行日志取得方法的軟件評(píng)價(jià)系統(tǒng)的存儲(chǔ)器加載時(shí)的處理流程的流程圖,是與圖14不同的另一示例。如處理開始(步驟S1701),自己將作為Index參照的存儲(chǔ)器區(qū)初始化為零(步驟S1702)。此Index表示在函數(shù)定義文件中記載的方法的順序。其次,由操作系統(tǒng)讀取針對Indexn的方法的位置間隙的偏置值p(步驟S1703),判斷p是否是真值,即判斷是否是零指針(步驟S1704)。此處,根據(jù)p是否是真值,判斷是否存在位置間隙,比如對于將0xFFFFFFFF這樣的規(guī)定值定義為“位置間隙不存在”的意思的操作系統(tǒng),同樣判斷是否是0xFFFFFFFF。在不存在位置間隙的場合,如圖7所示生成運(yùn)行日志取得代碼。具體說,將運(yùn)行日志取得代碼置于存儲(chǔ)器上(步驟S1705),由操作系統(tǒng)讀取針對Indexn的方法的VTable上的偏置值m(步驟S1706),將偏置值m的地址改寫為運(yùn)行日志取得代碼的地址(步驟S1707)。在步驟S1707結(jié)束的場合或在步驟S1704中判斷存在位置間隙的場合,使Indexn遞增1(步驟S1708)。就是說,在后一場合存儲(chǔ)器內(nèi)的位置間隙的區(qū)域,不改寫為運(yùn)行日志取得代碼的地址。此處理,一直繼續(xù)進(jìn)行到存儲(chǔ)器加載終止為止(步驟S1709)。通過此處理,即使是在位置間隙用于虛擬函數(shù)以外的場合,也能取得針對圖16所示那樣的在位置間隙后配置的方法的調(diào)用的運(yùn)行日志。在本實(shí)施形態(tài)中,對在方法內(nèi)部生成接口實(shí)例的場合的處理予以說明。在本實(shí)施形態(tài)中,對于全部方法調(diào)用的參數(shù)及返回值,判斷是否是運(yùn)行日志取得對象的接口的參數(shù)或返回值,判斷的結(jié)果、是運(yùn)行日志取得對象的接口的場合,通過以另外途徑將運(yùn)行日志取得代碼加載到存儲(chǔ)器中而將參數(shù)或返回值改寫為該運(yùn)行日志取得代碼的地址而是函數(shù)返回,即使是在方法內(nèi)部生成接口的實(shí)例的場合,也可以自動(dòng)記錄關(guān)于對該實(shí)例內(nèi)部的方法的調(diào)用的運(yùn)行日志。下面予以詳細(xì)敘述。圖18為示出對實(shí)施形態(tài)4的運(yùn)行日志取得方法的軟件評(píng)價(jià)系統(tǒng),指示各個(gè)函數(shù)及方法的參數(shù)的形式及返回值的形式的函數(shù)定義文件的示例圖。描述DLL名及函數(shù)/方法名,對該函數(shù)/方法示出參數(shù)及返回值的類型。本發(fā)明的實(shí)施形態(tài)的軟件評(píng)價(jià)系統(tǒng),根據(jù)由此函數(shù)定義文件指示的內(nèi)容,判斷各個(gè)函數(shù)/方法具有何種參數(shù)/返回值,取得其內(nèi)容作為運(yùn)行日志。另外,在本實(shí)施形態(tài)中,InterfaceA的MethodAB,返回指向在MethodAB內(nèi)部生成的InterfaceB的實(shí)例的指針,作為輸出參數(shù)。另外,InterfaceA的MethodAC,返回指向在MethodAB內(nèi)部生成的InterfaceB的實(shí)例的指針,作為返回值。為了EXE調(diào)用在DLL內(nèi)作為代碼描述的InterfaceB內(nèi)的方法,首先利用MethodAB或MethodAC,生成InterfaceB的實(shí)例,必須了解該實(shí)例的存儲(chǔ)器地址。圖19為利用圖18所示的函數(shù)定義文件取得的運(yùn)行日志的一例的示圖。對于各個(gè)調(diào)用,生成調(diào)用函數(shù)/方法的時(shí)刻及在該時(shí)刻的參數(shù)/返回值作為運(yùn)行日志。圖20為示出實(shí)施形態(tài)4的處理流程的示圖。如處理開始(步驟S2001),每當(dāng)調(diào)用設(shè)定的函數(shù)/方法時(shí),都將DLL名/接口名/方法名/調(diào)用時(shí)的時(shí)刻保存于HDD中(步驟S2002),將針對該調(diào)用的參數(shù)保存于HDD中(步驟S2003)。調(diào)用原來的方法(步驟S2004)。如方法內(nèi)部的處理開始,將DLL名/接口名/方法名/終止時(shí)的時(shí)刻保存于HDD中(步驟S2005),將針對該調(diào)用的參數(shù)及返回值保存于HDD中(步驟S2006)。其次,根據(jù)圖18所示的函數(shù)定義文件,判斷參數(shù)或返回值是否定義為指向接口的指針(步驟S2007),在定義的場合,在存儲(chǔ)器上生成對該指針的運(yùn)行日志取得代碼(步驟S2008),將該參數(shù)或返回值改寫為運(yùn)行日志取得代碼的存儲(chǔ)器地址(步驟S2009)。在判斷步驟S2009的處理是否結(jié)束或在步驟S2007中未作為接口指針定義的場合,進(jìn)行函數(shù)的返回處理(步驟S2010)。此處理,一直繼續(xù)進(jìn)行到成為評(píng)價(jià)對象的程序結(jié)束為止(步驟S2011)。通過將方法作為參數(shù)或返回值返回EXE、指向接口的實(shí)例的指針重新指向運(yùn)行日志取得代碼,對以后利用該指針調(diào)用的方法的調(diào)用,比如圖18的InterfaceB的MethodBA的系數(shù)的調(diào)用,也可以如圖19記錄參數(shù)/返回值/時(shí)刻等。圖21為示出實(shí)施形態(tài)5的處理流程的示圖,與圖20所示的實(shí)施形態(tài)4的不同之處在于加上了步驟S2128~2129。就是說,在判斷參數(shù)或返回值作為指向接口的指針定義的場合,判斷該接口是否是寫在追蹤情景中的追蹤對象(步驟S2128、S2129)。在判斷是追蹤對象的場合,在存儲(chǔ)器上生成對該指針的運(yùn)行日志取得代碼(步驟S2130),將該參數(shù)或返回值改寫為運(yùn)行日志取得代碼的存儲(chǔ)器地址(步驟S2131)。在步驟S2131的處理結(jié)束、或判斷在步驟S2127中未作為接口指針定義的場合、或在步驟S2129中判斷不是追蹤對象的場合,進(jìn)行函數(shù)的返回處理(步驟S2132)。此處理,一直繼續(xù)進(jìn)行到成為評(píng)價(jià)對象的程序結(jié)束為止(步驟S2133)。與上述實(shí)施形態(tài)4不同,在實(shí)施形態(tài)5中,由于只在參數(shù)或返回值是追蹤對象的場合生成運(yùn)行日志取得代碼和地址的重新定向,可以獲得節(jié)約使用存儲(chǔ)器和防止想要取得運(yùn)行日志的EXE及DLL的處理速度低下的效果。在本實(shí)施形態(tài)中,對與上述實(shí)施形態(tài)不同的函數(shù)定義文件進(jìn)行定義的場合的處理予以說明。圖22為示出對實(shí)施形態(tài)6的軟件評(píng)價(jià)系統(tǒng),指示各個(gè)函數(shù)及方法的參數(shù)的形式及返回值的形式的函數(shù)定義文件的示例圖。在同圖中示出的PO(PackingOption)的字節(jié)數(shù)是作為本實(shí)施形態(tài)的特征的定義部分。圖23為示出利用圖22示出的函數(shù)定義文件,在實(shí)施形態(tài)6的軟件評(píng)價(jià)系統(tǒng)中取得的運(yùn)行日志的一例的示圖。對各個(gè)調(diào)用,生成調(diào)用函數(shù)/方法的時(shí)刻以及該時(shí)刻的參數(shù)/返回值作為運(yùn)行日志。在進(jìn)入對圖24的說明之前,對廣泛使用的結(jié)構(gòu)的PO予以說明。所謂的結(jié)構(gòu)的PO,是在將結(jié)構(gòu)的實(shí)體配置于存儲(chǔ)器之際,關(guān)于以何種調(diào)整在存儲(chǔ)器上配置的決定,在模塊間交接結(jié)構(gòu)的之際使用。在通常的CPU中,結(jié)構(gòu)的項(xiàng)在存儲(chǔ)器上的配置方式使得可以不降低CPU的速度將內(nèi)容讀取到寄存器中。比如,在數(shù)據(jù)總線寬度為64bit的CPU中,通過在以下這樣的存儲(chǔ)器邊界配置項(xiàng),就可以不降低CPU的速度將存儲(chǔ)器內(nèi)容讀取到寄存器中。1字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,2字節(jié)數(shù)據(jù)->0x00000000,0x00000002,0x00000004,,,(最小1位為零)4字節(jié)數(shù)據(jù)->0x00000000,0x00000004,0x00000008,,,(最小2位為零)8字節(jié)數(shù)據(jù)->0x00000000,0x00000008,0x00000010,,,(最小3位為零)這取決于如下的特性,即在通常的CPU計(jì)算存儲(chǔ)器地址之際,從以數(shù)據(jù)大小分割的存儲(chǔ)器地址讀取數(shù)據(jù)比較從不是那樣的存儲(chǔ)器地址讀取數(shù)據(jù)更快。但是,如這樣配置數(shù)據(jù),由于在存儲(chǔ)器內(nèi)殘留大量未使用的空間,即使是可以關(guān)于速度進(jìn)行最優(yōu)化,對于使用存儲(chǔ)器量也會(huì)產(chǎn)生惡劣影響。為回避該惡劣影響,在通常的編譯程序中,備有稱為結(jié)構(gòu)PO的選項(xiàng)。比如,由于8字節(jié)的數(shù)據(jù)計(jì)算即使是慢也沒有關(guān)系,降低使用的存儲(chǔ)器量優(yōu)先,而在關(guān)于4字節(jié)以下的數(shù)據(jù),與存儲(chǔ)器量相比速度優(yōu)先的場合,通過使結(jié)構(gòu)的PO為4對程序(在本實(shí)施形態(tài)中EXE和DLL兩者)進(jìn)行編譯可以在如下的存儲(chǔ)器邊界上配置結(jié)構(gòu)的各項(xiàng)。1字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,2字節(jié)數(shù)據(jù)->0x00000000,0x00000002,0x00000004,,,(最小1位為零)4字節(jié)數(shù)據(jù)->0x00000000,0x00000004,0x00000008,,,(最小2位為零)8字節(jié)數(shù)據(jù)->0x00000000,0x00000004,0x00000008,,,(最小2位為零)這一場合,只有4字節(jié)以下的數(shù)據(jù)配置于以數(shù)據(jù)大小分割的存儲(chǔ)器地址。在意欲只將1字節(jié)以下的數(shù)據(jù)配置于以數(shù)據(jù)大小分割的存儲(chǔ)器地址的場合,通過將結(jié)構(gòu)的PO取為1對程序進(jìn)行編譯,可以在如下的存儲(chǔ)器邊界上配置結(jié)構(gòu)的各項(xiàng)。1字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,2字節(jié)數(shù)據(jù)->0x00000000,0x00000002,0x00000004,,,(最小1位為零)4字節(jié)數(shù)據(jù)->0x00000000,0x00000002,0x00000004,,,(最小1位為零)8字節(jié)數(shù)據(jù)->0x00000000,0x00000002,0x00000004,,,(最小1位為零)在意欲只將2字節(jié)以下的數(shù)據(jù)配置于以數(shù)據(jù)大小分割的存儲(chǔ)器地址的場合,通過將結(jié)構(gòu)的PO取為2對程序進(jìn)行編譯,可以在如下的存儲(chǔ)器邊界上配置結(jié)構(gòu)的各項(xiàng)。1字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,2字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,4字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,8字節(jié)數(shù)據(jù)->0x00000000,0x00000001,0x00000002,,,圖24為示出關(guān)于以上說明的結(jié)構(gòu)的PO的更具體的示例的示圖。在結(jié)構(gòu)的項(xiàng)為1字節(jié)的數(shù)據(jù)和8字節(jié)的數(shù)據(jù)2種的場合,相應(yīng)于結(jié)構(gòu)的PO,在EXE和DLL之間作為參數(shù)或返回值進(jìn)行交接的結(jié)構(gòu),在存儲(chǔ)器上的配置如圖所示。圖25為示出關(guān)于結(jié)構(gòu)的PO的另一具體示例的示圖。在結(jié)構(gòu)的項(xiàng)為1字節(jié)的數(shù)據(jù)和4字節(jié)的數(shù)據(jù)2種的場合,相應(yīng)于結(jié)構(gòu)的PO,在EXE和DLL之間作為參數(shù)或返回值進(jìn)行交接的結(jié)構(gòu),在存儲(chǔ)器上的配置如圖所示。圖26為示出關(guān)于結(jié)構(gòu)的PO的另一具體示例的示圖。在結(jié)構(gòu)的項(xiàng)為1字節(jié)的數(shù)據(jù)和2字節(jié)的數(shù)據(jù)2種的場合,相應(yīng)于結(jié)構(gòu)的PO,在EXE和DLL之間作為參數(shù)或返回值進(jìn)行交接的結(jié)構(gòu),在存儲(chǔ)器上的配置如圖所示。這些示例完全是用來說明結(jié)構(gòu)的PO的示例,本實(shí)施形態(tài),不管結(jié)構(gòu)的種類為何都有效。本實(shí)施形態(tài)的特征在于,在結(jié)構(gòu)進(jìn)入追蹤函數(shù)/方法的參數(shù)或返回值的場合,相應(yīng)于預(yù)先在函數(shù)定義文件中指定的結(jié)構(gòu)PO,自動(dòng)展開結(jié)構(gòu)的內(nèi)容。圖27為示出實(shí)施形態(tài)6的處理流程的示圖。如通過調(diào)用設(shè)定的函數(shù)/方法開始處理(步驟S2701),就從函數(shù)定義文件讀取結(jié)構(gòu)的PO(步驟S2702),將DLL名/函數(shù)名/調(diào)用時(shí)的時(shí)刻保存于HDD上(步驟S2703)。其次,根據(jù)圖22所示的函數(shù)定義文件,判斷參數(shù)是否定義為結(jié)構(gòu)(步驟S2704),在未定義為結(jié)構(gòu)的場合,將針對該調(diào)用的參數(shù)保存于HDD上(步驟S2705)。在定義為結(jié)構(gòu)的場合,在步驟S2702中,根據(jù)讀取的結(jié)構(gòu)的PO將結(jié)構(gòu)的內(nèi)容從存儲(chǔ)器展開(步驟S2706),將各個(gè)項(xiàng)保存于HDD上(步驟S2707)。如函數(shù)內(nèi)部處理結(jié)束(步驟S2708),就將DLL名/函數(shù)名/終止時(shí)的時(shí)刻保存于HDD中(步驟S2709)。其次,根據(jù)圖22所示的函數(shù)定義文件判斷參數(shù)及返回值是否定義為結(jié)構(gòu)(步驟S2710),在未作為結(jié)構(gòu)定義的場合,將針對該調(diào)用的參數(shù)及返回值保存于HDD中(步驟S2711)。在作為結(jié)構(gòu)定義的場合,在步驟S2702中根據(jù)讀取的結(jié)構(gòu)的組裝選項(xiàng)將結(jié)構(gòu)的內(nèi)容從存儲(chǔ)器展開(步驟S2712),將針對該調(diào)用的參數(shù)及返回值保存于HDD中(步驟S2713)。此處理,一直繼續(xù)進(jìn)行到作為評(píng)價(jià)對象的程序結(jié)束為止(步驟S2714)。從以上的說明可知,根據(jù)本實(shí)施形態(tài)的運(yùn)行日志取得方法,通過在函數(shù)定義中采用組裝選項(xiàng),可以削減運(yùn)行日志取得時(shí)使用的存儲(chǔ)器量。在上述實(shí)施形態(tài)6中對通過采用組裝選項(xiàng)削減運(yùn)行日志取得時(shí)使用的存儲(chǔ)器量的場合進(jìn)行了說明,但也可以通過限制存儲(chǔ)器中緩沖的運(yùn)行日志數(shù)據(jù)的數(shù)目,將運(yùn)行日志取得時(shí)使用的存儲(chǔ)器量限制到一定值以下。圖28為示出實(shí)施形態(tài)7的函數(shù)定義文件的例子的示圖。描述了DLL名及函數(shù)/方法名,示出針對該函數(shù)/方法的參數(shù)及返回值的類型。本實(shí)施形態(tài)的軟件評(píng)價(jià)系統(tǒng),根據(jù)利用此函數(shù)定義文件指示的內(nèi)容,判斷各個(gè)函數(shù)/方法具有何種參數(shù)/返回值,取得其內(nèi)容作為運(yùn)行日志。圖29為示出利用圖28所示的函數(shù)定義取得的運(yùn)行日志的一例的示圖。針對各個(gè)調(diào)用生成調(diào)用函數(shù)/方法的調(diào)用時(shí)刻以及在該時(shí)刻的參數(shù)/返回值作為運(yùn)行日志。圖30為示出在將圖29所示的運(yùn)行日志進(jìn)行保存之際的存儲(chǔ)器結(jié)構(gòu)的示圖。針對各個(gè)函數(shù)調(diào)用對某一存儲(chǔ)器偏置值保存數(shù)據(jù)及Index。圖31為示出實(shí)施形態(tài)7的處理流程的示圖。如通過調(diào)用設(shè)定的函數(shù)/方法開始處理(步驟S3101),將指定用于Index計(jì)數(shù)的寄存器或存儲(chǔ)器區(qū)清零(步驟S3102),將緩沖Index數(shù)的設(shè)定讀取到存儲(chǔ)器(步驟S3103)。其次,將Index保存到圖30中所示的Index區(qū)(步驟S3104),將DLL名/函數(shù)名/調(diào)用時(shí)的時(shí)刻保存到HDD(步驟S3105),將針對該調(diào)用的參數(shù)保存到存儲(chǔ)器(步驟S3106),調(diào)用函數(shù)/方法(步驟S3107)。如函數(shù)內(nèi)部處理結(jié)束,就將DLL名/函數(shù)名/終止時(shí)的時(shí)刻保存于存儲(chǔ)器中(步驟S3108),將針對該調(diào)用的參數(shù)及返回值保存到存儲(chǔ)器(步驟S3109)。其次,將利用步驟S3103中讀出的設(shè)定和現(xiàn)在的Index進(jìn)行比較(步驟S3110),在設(shè)定值比Index大或相同時(shí),就不將運(yùn)行日志數(shù)據(jù)移動(dòng)到HDD,只將Index加1(步驟S3111),返回到步驟S3104的處理。在Index值比設(shè)定大時(shí),就保持于存儲(chǔ)器中的數(shù)據(jù)移動(dòng)到HDD,將存儲(chǔ)器中的內(nèi)容清除(步驟S3112)。此處理,一直繼續(xù)進(jìn)行到成為評(píng)價(jià)對象的程序結(jié)束為止(步驟S3113)。在上述實(shí)施形態(tài)7中,必須將運(yùn)行日志取得時(shí)使用的存儲(chǔ)器量限制到一定值以下,要對Index進(jìn)行計(jì)數(shù),但也可利用運(yùn)行日志數(shù)據(jù)的大小進(jìn)行限制。圖32為示出實(shí)施形態(tài)8的處理流程的示圖。與實(shí)施形態(tài)7的不同之處是設(shè)置步驟S3203、3210、3212代替步驟S3103、3110、3112。就是說,將緩沖大小的設(shè)定讀取到存儲(chǔ)器(步驟S3203),將利用步驟S3203讀如的設(shè)定和到現(xiàn)在的Index為止保存于存儲(chǔ)器中的數(shù)據(jù)的大小進(jìn)行比較(步驟S3210),在保存于存儲(chǔ)器中的數(shù)據(jù)的大小比設(shè)定的大小大時(shí),就將保存于存儲(chǔ)器中的數(shù)據(jù)在HDD上向前移動(dòng)一個(gè)Index,將直到前一個(gè)Index為止的量的存儲(chǔ)器的內(nèi)容清零(步驟S3212)。通過將直到前一個(gè)的數(shù)據(jù)從存儲(chǔ)器移動(dòng)到HDD,可以使存儲(chǔ)器使用量保持為不超過指定大小的狀態(tài)。圖33為用來設(shè)定在上述實(shí)施形態(tài)7和8中示出的功能的用戶接口的例子的示圖。通過選中復(fù)選框可以設(shè)定是否進(jìn)行運(yùn)行日志的存儲(chǔ)器緩沖,在進(jìn)行的場合,可以選擇基于記錄數(shù)的指定即利用實(shí)施形態(tài)7的指定和基于運(yùn)行日志大小的指定即利用實(shí)施形態(tài)8的指定。在上述實(shí)施形態(tài)中,敘述的是減少運(yùn)行日志取得時(shí)使用的存儲(chǔ)器量的場合,也可以使保存于HDD上的運(yùn)行日志文件的數(shù)據(jù)量減少。圖34為示出實(shí)施形態(tài)10的函數(shù)定義文件的例子的示圖。描述了DLL名及函數(shù)/方法名,示出針對該函數(shù)/方法的參數(shù)及返回值的類型。本實(shí)施形態(tài)的軟件評(píng)價(jià)系統(tǒng),根據(jù)利用此函數(shù)定義文件指示的內(nèi)容,判斷各個(gè)函數(shù)/方法具有何種參數(shù)/返回值,取得其內(nèi)容作為運(yùn)行日志。在圖34中示出的針對A.DLL內(nèi)的函數(shù)FuncAB的函數(shù)定義,是表示本實(shí)施形態(tài)的最佳者。在變量中,定義的是作為數(shù)據(jù)存放目標(biāo)示出的指針pBuf和作為其數(shù)據(jù)的大小示出的dwBufSize,定義的是pBuf和dwBufSize的相關(guān),即存放于pBuf中的數(shù)據(jù)的大小由dwBufSize指示的這一相關(guān)。圖35為示出利用圖24所示的函數(shù)定義取得的運(yùn)行日志的一例的示圖。針對各個(gè)調(diào)用生成調(diào)用函數(shù)/方法的調(diào)用時(shí)刻以及在該時(shí)刻的參數(shù)/返回值作為運(yùn)行日志。在圖35中示出的針對A.DLL內(nèi)的函數(shù)FuncAB的調(diào)用的運(yùn)行日志,與圖34的函數(shù)定義文件一起,是表示本實(shí)施形態(tài)的特征的最佳者。根據(jù)圖34示出的函數(shù)定義,在針對FuncAB的調(diào)用之際,不僅作為變量的pBuf的值,該值指示的地址上的dwBufSize量即24字節(jié)量的數(shù)據(jù)作為與通常的運(yùn)行日志分開的二進(jìn)制運(yùn)行日志進(jìn)行保存,保存于該二進(jìn)制運(yùn)行日志文件中的該FuncAB的調(diào)用的ID即DataID,作為追加信息保存于運(yùn)行日志中。圖36為示出與圖35所示的運(yùn)行日志一起保存的二進(jìn)制運(yùn)行日志文件的內(nèi)容的示例圖。DataID作為標(biāo)志保存,對該DataID每個(gè)都保存二進(jìn)制數(shù)據(jù)。在圖34~36示出的函數(shù)定義文件、運(yùn)行日志、二進(jìn)制運(yùn)行日志中示出的實(shí)施形態(tài),指示的數(shù)據(jù),不管是輸入數(shù)據(jù)、輸出數(shù)據(jù)或返回值,都有效。比如,作為來自函數(shù)的輸出參數(shù)返回?cái)?shù)據(jù)地址,還作為來自函數(shù)的返回值輸出數(shù)據(jù)大小的場合,也同樣可以取得數(shù)據(jù)本體的運(yùn)行日志。圖37為示出本實(shí)施形態(tài)的處理流程的示圖。如通過調(diào)用設(shè)定的函數(shù)/方法開始處理(步驟S3701),將DLL名/接口名/函數(shù)名/調(diào)用時(shí)的時(shí)刻保存于HDD中(步驟S3702),將針對該調(diào)用的參數(shù)保存于HDD中(步驟S3703)。其次,根據(jù)圖34所示的函數(shù)定義文件,判斷參數(shù)是否定義為存儲(chǔ)器地址(步驟S3704),在定義的場合,從表示大小的變量取得數(shù)據(jù)大小(步驟S3705),將該大小量的數(shù)據(jù)從存儲(chǔ)器讀取(步驟S3706),附加DataID后將數(shù)據(jù)保存到HDD的二進(jìn)制文件中(步驟S3707)。在參數(shù)未定義為存儲(chǔ)器地址的場合,不從步驟3705進(jìn)行步驟3707的處理。如函數(shù)內(nèi)部處理結(jié)束(步驟S3708),就將DLL名/函數(shù)名/終止時(shí)的時(shí)刻保存到HDD中(步驟S3709),將針對該調(diào)用的參數(shù)及返回值保存到HDD(步驟S3710)。其次,根據(jù)圖34所示的函數(shù)定義文件判斷參數(shù)是否定義為存儲(chǔ)器地址(步驟S3711),在定義的場合,將從表示大小的變量取得數(shù)據(jù)大小(步驟S3712),從存儲(chǔ)器讀取該大小量的數(shù)據(jù)(步驟S3713),附加DataID后將數(shù)據(jù)保存到HDD的二進(jìn)制文件中(步驟S3714)。在參數(shù)未定義為存儲(chǔ)器地址的場合,不從步驟3712進(jìn)行步驟3714的處理。此處理,一直繼續(xù)進(jìn)行到成為評(píng)價(jià)對象的程序結(jié)束為止(步驟S3715)。從以上的說明可知,在函數(shù)定義文件中,在參數(shù)定義為存儲(chǔ)器地址并且將該二進(jìn)制數(shù)據(jù)作為運(yùn)行日志文件保存到該存儲(chǔ)器地址的場合,通過只將在函數(shù)定義文件中大小量的二進(jìn)制數(shù)據(jù)進(jìn)行保存,可以削減保存在HDD中的運(yùn)行日志文件的數(shù)據(jù)量。在上述實(shí)施形態(tài)10中,當(dāng)保存二進(jìn)制數(shù)據(jù)(參數(shù)定義為存儲(chǔ)器地址,存放在該存儲(chǔ)器地址上的二進(jìn)制數(shù)據(jù))時(shí),將由大小變量取得的數(shù)據(jù)大小量的數(shù)據(jù)進(jìn)行保存,對指定大小以上的數(shù)據(jù)也可以不保存。圖38及圖39為示出實(shí)施形態(tài)11的處理流程的示圖。步驟S3801~3805,與上述的步驟S3701~3705同樣執(zhí)行。其次,判斷對二進(jìn)制數(shù)據(jù)的取得是否是設(shè)定有上限(步驟S3806),在未設(shè)定上限的場合,從存儲(chǔ)器讀出由表示大小的變量示出的整個(gè)大小量的數(shù)據(jù)(步驟S3807),附加DataID后將數(shù)據(jù)保存到HDD的二進(jìn)制文件中(步驟S3810)。在參數(shù)未定義為存儲(chǔ)器地址的場合,不從步驟3805進(jìn)行步驟3810的處理。步驟S3811~3815,與上述的步驟S3708~3712同樣執(zhí)行。并且,步驟S3816~3820,與上述的步驟S3816~3810同樣執(zhí)行。此處理,一直繼續(xù)進(jìn)行到成為評(píng)價(jià)對象的程序結(jié)束為止(步驟S3821)。圖40為示出用來設(shè)定在實(shí)施形態(tài)10及11示出的功能的用戶接口的例子的示圖。在存在設(shè)定是否是分別保存輸入?yún)?shù)、輸出參數(shù)、二進(jìn)制數(shù)據(jù)作為保存在運(yùn)行日志中的對象,進(jìn)行保存二進(jìn)制參數(shù)的設(shè)定的場合,進(jìn)行實(shí)施形態(tài)10所示的處理。另外,進(jìn)行保存二進(jìn)制參數(shù)的設(shè)定,并且在進(jìn)行不保存指定大小以上的數(shù)據(jù)的設(shè)定,指定大小的場合,進(jìn)行實(shí)施形態(tài)11所示的處理。圖41為示出使圖34所示的基本運(yùn)行日志內(nèi)描述的DataID和二進(jìn)制運(yùn)行日志的該DataID的數(shù)據(jù)互相關(guān)聯(lián)的用戶接口的示圖。利用這種用戶接口,可以很容易參照DataID的數(shù)據(jù)。在通常的運(yùn)行日志表示中,明確示出該參數(shù)是表示存儲(chǔ)器地址的參數(shù),通過用戶利用鼠標(biāo)點(diǎn)擊等對該部分進(jìn)行選擇,顯示與該DataID相對應(yīng)的數(shù)據(jù)。另外,本發(fā)明,既適用于由多個(gè)設(shè)備(比如,主計(jì)算機(jī)、接口裝置、讀取器、打印機(jī)等)構(gòu)成的系統(tǒng),也適用于由一臺(tái)設(shè)備組成的裝置(比如,復(fù)印機(jī)、傳真裝置等)。另外,本發(fā)明目的也可以通過將記錄執(zhí)行上述實(shí)施形態(tài)的功能的軟件的程序代碼的存儲(chǔ)介質(zhì)供給系統(tǒng)或裝置,該系統(tǒng)或裝置的計(jì)算機(jī)(或CPU及MPU)讀出并執(zhí)行存放于存儲(chǔ)介質(zhì)上的程序代碼而達(dá)到,這是自不待言的。在此場合,由于從存儲(chǔ)介質(zhì)讀出的程序代碼本身實(shí)現(xiàn)上述實(shí)施形態(tài)的功能,所以存儲(chǔ)該程序代碼的存儲(chǔ)介質(zhì)構(gòu)成本發(fā)明。作為用來供給程序代碼的存儲(chǔ)介質(zhì),比如,可以使用軟盤(注冊商標(biāo))、硬盤、光盤、磁光盤、CD-ROM、CD-R、磁帶、非易失性存儲(chǔ)卡以及ROM等。另外,通過執(zhí)行計(jì)算機(jī)讀出的程序代碼,不僅可以實(shí)現(xiàn)上述實(shí)施形態(tài)的功能,而且根據(jù)該程序代碼的指示,在計(jì)算機(jī)上運(yùn)行的OS(操作系統(tǒng))等進(jìn)行實(shí)際處理的一部分或全部,通過該處理實(shí)現(xiàn)上述實(shí)施形態(tài)的功能的場合也包括在內(nèi)是自不待言的。此外,從存儲(chǔ)介質(zhì)讀出的程序代碼,在寫入到插入計(jì)算機(jī)的功能擴(kuò)展板或與計(jì)算機(jī)相連接的功能擴(kuò)展裝置中設(shè)置的存儲(chǔ)器后,根據(jù)該程序代碼的指示,設(shè)置于該功能擴(kuò)展板或功能擴(kuò)展裝置上的CPU等進(jìn)行實(shí)際處理的一部分或全部,通過該處理實(shí)現(xiàn)上述實(shí)施形態(tài)的功能的場合也包括在內(nèi)是自不待言的。如上所述,根據(jù)本發(fā)明,容易取得分成為多個(gè)模塊的軟件的處理運(yùn)行日志,并且可以削減用來分析軟件故障的原因的工時(shí)。本發(fā)明不限于上述具體實(shí)施例,并且在不脫離本發(fā)明的精神和范圍的情況下可以實(shí)現(xiàn)本發(fā)明的多種改變和變型。因此,為使廣大群眾了解本發(fā)明的范圍,下面提出本發(fā)明的權(quán)利要求。權(quán)利要求1.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;對在調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)之際的規(guī)定信息進(jìn)行記錄的過程;以及對在接受上述執(zhí)行結(jié)果之際的規(guī)定信息進(jìn)行記錄的過程。2.如權(quán)利要求1所述的運(yùn)行日志取得方法,其特征在于在調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)之際的規(guī)定信息,至少包括調(diào)用函數(shù)的函數(shù)名、調(diào)用之際的時(shí)刻、調(diào)用之際的參數(shù)、調(diào)用之際的指針參數(shù)指示的存儲(chǔ)器內(nèi)容的任何一個(gè)。3.如權(quán)利要求1所述的運(yùn)行日志取得方法,其特征在于在接受上述執(zhí)行結(jié)果之際的規(guī)定信息,至少包括接受之際的時(shí)刻、接收之際的參數(shù)、接收之際的返回值或接受之際的指針參數(shù)指示的存儲(chǔ)器內(nèi)容的至少一個(gè)。4.如權(quán)利要求1所述的運(yùn)行日志取得方法,其特征在于進(jìn)行上述規(guī)定處理的函數(shù)的地址,為提供該函數(shù)的動(dòng)態(tài)鏈接庫的每一個(gè),記載于輸入函數(shù)地址表中。5.如權(quán)利要求1所述的運(yùn)行日志取得方法,其構(gòu)成還包括在進(jìn)行上述規(guī)定處理的函數(shù)的地址之中,選擇改寫為取得上述運(yùn)行日志的函數(shù)的地址的地址的過程,上述改寫過程,改寫通過上述選擇過程選擇的函數(shù)的地址。6.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的方法的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的方法的地址改寫為用來取得運(yùn)行日志的方法的地址的過程;用來取得上述運(yùn)行日志的方法,包含調(diào)用進(jìn)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;對在調(diào)用進(jìn)行上述規(guī)定處理的方法之際的規(guī)定信息進(jìn)行記錄的過程;以及對在接受上述執(zhí)行結(jié)果之際的規(guī)定信息進(jìn)行記錄的過程。7.如權(quán)利要求6所述的運(yùn)行日志取得方法,其特征在于在調(diào)用進(jìn)行上述規(guī)定處理的方法之際的規(guī)定信息,至少包括調(diào)用方法的方法名、調(diào)用之際的時(shí)刻、調(diào)用之際的參數(shù)或調(diào)用之際的指針參數(shù)指示的存儲(chǔ)器內(nèi)容的至少一個(gè)。8.如權(quán)利要求6所述的運(yùn)行日志取得方法,其特征在于在接受上述執(zhí)行結(jié)果之際的規(guī)定信息,至少包括接受之際的時(shí)刻、接收之際的參數(shù)、接收之際的返回值或接受之際的指針參數(shù)指示的存儲(chǔ)器內(nèi)容的至少一個(gè)。9.如權(quán)利要求6所述的運(yùn)行日志取得方法,其特征在于進(jìn)行上述規(guī)定處理的方法的地址,為提供該方法的接口的每一個(gè),記載于虛擬地址表中。10.如權(quán)利要求6所述的運(yùn)行日志取得方法,其構(gòu)成還包括在進(jìn)行上述規(guī)定處理的方法的地址之中,選擇改寫為取得上述運(yùn)行日志的方法的地址的地址的過程,上述改寫過程,改寫通過上述選擇過程選擇的方法的地址。11.如權(quán)利要求9所述的運(yùn)行日志取得方法,其構(gòu)成還包括檢測在上述虛擬地址表中有無位置間隙,在有該位置間隙的場合,從操作系統(tǒng)取得該位置間隙的偏置值的過程,上述改寫過程,根據(jù)由該取得過程取得的偏置值,不將上述位置間隙區(qū)改寫為用來取得上述運(yùn)行日志的方法的地址。12.一種存放用來藉助計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求1所述的運(yùn)行日志取得方法的控制程序的存儲(chǔ)介質(zhì)。13.一種用來藉助計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求1所述的運(yùn)行日志取得方法的控制程序。14.一種存放用來藉助計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求6所述的運(yùn)行日志取得方法的控制程序的存儲(chǔ)介質(zhì)。15.一種用來藉助計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求6所述的運(yùn)行日志取得方法的控制程序。16.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;判斷在上述程序的函數(shù)定義中,是否定義參數(shù)或返回值作為結(jié)構(gòu)的過程;以及在定義為結(jié)構(gòu)的場合,根據(jù)該結(jié)構(gòu)的組裝選項(xiàng)在存儲(chǔ)器中配置該結(jié)構(gòu)的內(nèi)容的過程;以及將配置于上述存儲(chǔ)器中的結(jié)構(gòu)的內(nèi)容記錄于盤裝置作為運(yùn)行日志的過程。17.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;將在調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)之際的規(guī)定信息和接受上述執(zhí)行結(jié)果之際的規(guī)定信息作為運(yùn)行日志存放于存儲(chǔ)器的過程;指定調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)的次數(shù)的過程;以及將上述指定的調(diào)用次數(shù)量的規(guī)定信息作為運(yùn)行日志存放于上述存儲(chǔ)器,以及將存放于該存儲(chǔ)器中的規(guī)定信息移動(dòng)到盤裝置進(jìn)行保存的過程。18.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;將在調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)之際的規(guī)定信息和接受上述執(zhí)行結(jié)果之際的規(guī)定信息作為運(yùn)行日志存放于存儲(chǔ)器的過程;指定在上述存儲(chǔ)器中存放信息的大小的過程;以及將上述指定的大小量的規(guī)定信息作為運(yùn)行日志存放于上述存儲(chǔ)器,以及將存放于該存儲(chǔ)器中的規(guī)定信息移動(dòng)到盤裝置進(jìn)行保存的過程。19.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;將在調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)之際的規(guī)定信息和接受上述執(zhí)行結(jié)果之際的規(guī)定信息作為運(yùn)行日志存放于存儲(chǔ)器的過程;識(shí)別在上述程序的函數(shù)定義中,參數(shù)或返回值是否定義為存儲(chǔ)器地址,在定義為存儲(chǔ)器地址的場合,讀取在上述程序的函數(shù)定義中定義的該參數(shù)或返回值的大小的過程;以及將上述存儲(chǔ)器地址上的二進(jìn)制數(shù)據(jù)按照上述讀取的大小量進(jìn)行記錄作為運(yùn)行日志的過程。20.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運(yùn)行日志的函數(shù)的地址的過程,用來取得上述運(yùn)行日志的函數(shù),包含調(diào)用進(jìn)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;識(shí)別在上述程序的函數(shù)定義中,參數(shù)或返回值是否定義為存儲(chǔ)器地址,在定義為存儲(chǔ)器地址的場合,讀取在上述程序的函數(shù)定義中定義的該參數(shù)或返回值的大小的過程;將上述存儲(chǔ)器地址上的二進(jìn)制數(shù)據(jù)按照上述讀取的大小量進(jìn)行存放作為運(yùn)行日志的過程;在存放于上述存儲(chǔ)器中的二進(jìn)制數(shù)據(jù)中,指定移動(dòng)到盤裝置的大小的過程;以及將上述讀取的大小和上述指定的大小相比較,將數(shù)量相當(dāng)于不大一方的大小量的二進(jìn)制數(shù)據(jù)從上述存儲(chǔ)器移動(dòng)到盤裝置進(jìn)行保存的過程。21.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的方法的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的方法的地址改寫為用來取得運(yùn)行日志的方法的地址的過程,用來取得上述運(yùn)行日志的方法,包含調(diào)用進(jìn)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;判斷在上述程序的函數(shù)定義中,參數(shù)或返回值是否定義為結(jié)構(gòu)的過程;在定義為結(jié)構(gòu)的場合,根據(jù)該結(jié)構(gòu)的組裝選項(xiàng),在存儲(chǔ)器上配置該結(jié)構(gòu)的內(nèi)容的過程;以及將配置于上述存儲(chǔ)器上的結(jié)構(gòu)的內(nèi)容記錄到盤裝置作為運(yùn)行日志的過程。22.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的方法的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的方法的地址改寫為用來取得運(yùn)行日志的方法的地址的過程,用來取得上述運(yùn)行日志的方法,包含調(diào)用進(jìn)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;將在調(diào)用進(jìn)行上述規(guī)定處理的方法之際的規(guī)定信息和接受上述執(zhí)行結(jié)果之際的規(guī)定信息作為運(yùn)行日志存放于存儲(chǔ)器的過程;指定調(diào)用進(jìn)行上述規(guī)定處理的方法的次數(shù)的過程;以及將上述指定的調(diào)用次數(shù)量的規(guī)定信息作為運(yùn)行日志存放于上述存儲(chǔ)器,以及將存放于該存儲(chǔ)器中的規(guī)定信息移動(dòng)到盤裝置進(jìn)行保存的過程。23.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的方法的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的方法的地址改寫為用來取得運(yùn)行日志的方法的地址的過程,用來取得上述運(yùn)行日志的方法,包含調(diào)用進(jìn)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;將在調(diào)用進(jìn)行上述規(guī)定處理的方法之際的規(guī)定信息和接受上述執(zhí)行結(jié)果之際的規(guī)定信息作為運(yùn)行日志存放于存儲(chǔ)器的過程;指定在上述存儲(chǔ)器中存放信息的大小的過程;以及將上述指定的大小量的規(guī)定信息作為運(yùn)行日志存放于上述存儲(chǔ)器,以及將存放于該存儲(chǔ)器中的規(guī)定信息移動(dòng)到盤裝置進(jìn)行保存的過程。24.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的方法的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的方法的地址改寫為用來取得運(yùn)行日志的方法的地址的過程,用來取得上述運(yùn)行日志的方法,包含調(diào)用進(jìn)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;將在調(diào)用進(jìn)行上述規(guī)定處理的方法之際的規(guī)定信息和接受上述執(zhí)行結(jié)果之際的規(guī)定信息作為運(yùn)行日志存放于存儲(chǔ)器的過程;識(shí)別在上述程序的函數(shù)定義中,參數(shù)或返回值是否定義為存儲(chǔ)器地址,在定義為存儲(chǔ)器地址的場合,讀取在上述程序的函數(shù)定義中定義的該參數(shù)或返回值的大小的過程;以及將上述存儲(chǔ)器地址上的二進(jìn)制數(shù)據(jù)按照上述讀取的大小量進(jìn)行記錄作為運(yùn)行日志的過程。25.一種運(yùn)行日志取得方法,其特征在于是一種取得具備進(jìn)行規(guī)定處理的方法的程序的執(zhí)行中的運(yùn)行日志的運(yùn)行日志取得方法,具有將加載的進(jìn)行上述規(guī)定的處理的方法的地址改寫為用來取得運(yùn)行日志的方法的地址的過程,用來取得上述運(yùn)行日志的方法,包含調(diào)用進(jìn)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結(jié)果轉(zhuǎn)送給上述程序的過程;識(shí)別在上述程序的函數(shù)定義中,參數(shù)或返回值是否定義為存儲(chǔ)器地址,在定義為存儲(chǔ)器地址的場合,讀取在上述程序的函數(shù)定義中定義的該參數(shù)或返回值的大小的過程;將上述存儲(chǔ)器地址上的二進(jìn)制數(shù)據(jù)按照上述讀取的大小量進(jìn)行存放作為運(yùn)行日志的過程;在存放于上述存儲(chǔ)器中的二進(jìn)制數(shù)據(jù)中,指定移動(dòng)到盤裝置的大小的過程;以及將上述讀取的大小和上述指定的大小相比較,將數(shù)量相當(dāng)于不大一方的大小量的二進(jìn)制數(shù)據(jù)從上述存儲(chǔ)器移動(dòng)到盤裝置進(jìn)行保存的過程。26.一種存放用來藉助計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求16-25所述的運(yùn)行日志取得方法的控制程序的存儲(chǔ)介質(zhì)。27.一種用來藉助計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求16-25所述的運(yùn)行日志取得方法的控制程序。全文摘要本發(fā)明提供一種可以容易取得軟件處理運(yùn)行日志并且可削減用于分析隱錯(cuò)的工時(shí)數(shù)的運(yùn)行日志取得方法及程序、存儲(chǔ)介質(zhì)。該運(yùn)行日志取得方法,在備有函數(shù)(FuncAA)的程序(91)中,為取得執(zhí)行中的運(yùn)行日志,具有將加載的進(jìn)行上述規(guī)定的處理的函數(shù)(FuncAA)的地址改寫為用來取得運(yùn)行日志的函數(shù)(92)的地址的過程。用來取得運(yùn)行日志的函數(shù)(92),包含調(diào)用(96)函數(shù)(FuncAA)的地址,執(zhí)行該規(guī)定處理(97),將收到的執(zhí)行結(jié)果(98)轉(zhuǎn)送給程序(91)的過程(101);記錄調(diào)用上述選擇的函數(shù)(FuncAA)的地址之際的規(guī)定信息的過程(95、100)以及記錄在接受上述執(zhí)行結(jié)果之際的規(guī)定信息的過程(99、100)。文檔編號(hào)H04B1/74GK1469248SQ0314933公開日2004年1月21日申請日期2003年6月27日優(yōu)先權(quán)日2002年6月28日發(fā)明者飯塚利明,利明申請人:佳能株式會(huì)社