欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

日志獲取方法及其控制程序、存儲(chǔ)媒體的制作方法

文檔序號(hào):6397330閱讀:137來(lái)源:國(guó)知局

專利名稱::日志獲取方法及其控制程序、存儲(chǔ)媒體的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及用于獲取被分成多個(gè)模塊的軟件的處理日志的技術(shù)。
背景技術(shù)
:原來(lái),對(duì)于再現(xiàn)率低的軟件故障,往往是獲取軟件的處理日志,通過(guò)分析該處理日志找出故障原因,商議對(duì)策(例如參考特開(kāi)平11-296145號(hào)公報(bào))。但是,上述以往的處理日志的獲取中有如下問(wèn)題。(1)為了在用戶的操作環(huán)境中連續(xù)地獲取處理日志,必須對(duì)軟件的模塊本身加以修改,追加處理日志獲取例行程序,用于處理日志獲取的作業(yè)負(fù)荷增大了。(2)由于按每個(gè)模塊進(jìn)行處理日志獲取,故生成的處理日志是以模塊為單位的,難以獲得將軟件整體的處理作為完全按時(shí)間順序的處理日志來(lái)獲取。因此,整個(gè)處理日志的可參照性惡化,分析處理日志、發(fā)現(xiàn)故障原因之前的處理過(guò)程要花費(fèi)很多工時(shí)。
發(fā)明內(nèi)容本發(fā)明針對(duì)上述課題作出,目的是提供一種日志獲取方法以及使計(jì)算機(jī)執(zhí)行該方法的程序、以及存儲(chǔ)該程序的存儲(chǔ)媒體,其能夠容易地獲取分成多個(gè)模塊的軟件的處理日志,并且可減少用于軟件故障的原因分析的工時(shí)數(shù)。為達(dá)到上述目的,本發(fā)明的日志獲取方法具有如下結(jié)構(gòu)。即,一種用于取得在包含進(jìn)行規(guī)定處理的函數(shù)的程序執(zhí)行中的日志的日志獲取方法,包括識(shí)別上述程序執(zhí)行時(shí)調(diào)用的操作系統(tǒng)內(nèi)的函數(shù)中的指定函數(shù)的步驟;將進(jìn)行加載的上述規(guī)定處理的函數(shù)地址與上述指定的操作系統(tǒng)內(nèi)的函數(shù)的地址改寫(xiě)為用于日志獲取的函數(shù)的地址的步驟,其特征在于用于上述日志獲取的函數(shù)包括調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)和上述指定的操作系統(tǒng)內(nèi)的函數(shù),執(zhí)行該規(guī)定的處理,將接收的執(zhí)行結(jié)果傳遞到上述程序的步驟;記錄調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)和上述指定的從現(xiàn)在起內(nèi)的函數(shù)時(shí)的規(guī)定信息的步驟;和記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟。根據(jù)本發(fā)明,容易獲取分成多個(gè)模塊的軟件處理的處理日志,并且可減少用于軟件故障的原因分析的工時(shí)數(shù)。本發(fā)明的其他特征和優(yōu)點(diǎn)從下面聯(lián)系附圖的描述中變得明顯,在全部附圖中相同參考符號(hào)指代相同或相似的部件。圖1是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的計(jì)算機(jī)(軟件評(píng)價(jià)系統(tǒng))的結(jié)構(gòu)的圖;圖2是表現(xiàn)出函數(shù)加載時(shí)的通常的存儲(chǔ)器結(jié)構(gòu)的圖;圖3是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)在使用ITA補(bǔ)丁時(shí)的存儲(chǔ)器結(jié)構(gòu)的圖;圖4A是表示實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)在使用ITA補(bǔ)丁時(shí)的狀態(tài)的圖;圖4B是表示實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的日志獲取處理的流程圖;圖5是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)在使用ITA補(bǔ)丁時(shí)的內(nèi)部結(jié)構(gòu)的圖;圖6是表現(xiàn)出COM服務(wù)器的接口實(shí)例生成時(shí)的通常的存儲(chǔ)器結(jié)構(gòu)的圖;圖7是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)在使用VTable補(bǔ)丁時(shí)的存儲(chǔ)器結(jié)構(gòu)的圖;圖8A是表示實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)在使用VTable補(bǔ)丁時(shí)的狀態(tài)的圖;圖8B是表示實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的日志獲取處理的流程的圖;圖9是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的內(nèi)部結(jié)構(gòu)的圖;圖10是表示向軟件評(píng)價(jià)系統(tǒng)指示各個(gè)函數(shù)和方法的參數(shù)的形式和返回值的形式的函數(shù)定義文件的例子的圖;圖11是表示實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)所取得的日志的一個(gè)例子的圖;圖12是表示一般的軟件的模塊結(jié)構(gòu)的例子的圖;圖13是表示定義作為處理日志的收集對(duì)象的操作系統(tǒng)模塊的例子的圖;圖14是表示實(shí)現(xiàn)本發(fā)明的第二實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理流程的流程圖;圖15A是表示實(shí)現(xiàn)本發(fā)明的第二實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)所取得的處理日志的一個(gè)例子的圖;圖15B是表示在調(diào)用OS部分的DLL內(nèi)的函數(shù)時(shí)也取得處理日志的情況下的處理日志的例子的圖;圖16是表示定義作為處理日志的收集對(duì)象的操作系統(tǒng)的除外模塊的例子的圖;圖17是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖;圖18是表示軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義的一個(gè)例子的圖,是表示由一般廣泛應(yīng)用的IDL記述的文件的圖;圖19是表示軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件圖,是表示由IDL記述的文件的圖;圖20是表示圖19所示的函數(shù)定義的結(jié)構(gòu)如何配置在存儲(chǔ)器上的圖;圖21是表示如圖19所示定義函數(shù)時(shí)取得日志的情況下的處理流程的流程圖;圖22是表示由圖19的定義取得的日志數(shù)據(jù)的圖;圖23是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件的圖;圖24是表示圖18所示的函數(shù)定義的結(jié)構(gòu)如何配置在存儲(chǔ)器上的圖;圖25是表示如圖18所示定義函數(shù)時(shí)取得日志的情況下的處理的流程的流程圖;圖26是表示由圖18的定義取得的日志數(shù)據(jù)的圖;圖27是對(duì)軟件評(píng)價(jià)系統(tǒng)指示各個(gè)函數(shù)和方法的參數(shù)的形式和返回值的形式的函數(shù)定義文件的例子的圖;圖28是在軟件評(píng)價(jià)系統(tǒng)中定義指定給riid的接口型的函數(shù)定義文件的,例子的圖;圖29是表示實(shí)現(xiàn)本發(fā)明的第四實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖;圖30是表示由圖29的處理取得的處理日志的例子的圖;圖31是表示實(shí)現(xiàn)本發(fā)明的第四實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖;圖32是表示實(shí)現(xiàn)本發(fā)明的第四實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖;圖33是表示由圖31和圖32的處理取得的處理日志的例子的圖;圖34是表示實(shí)現(xiàn)本發(fā)明的第五實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義的一個(gè)例子的圖;圖35是表示對(duì)庫(kù)名定義模塊名的例子的圖;圖36是表示對(duì)接口名定義模塊名的例子的圖;圖37是表示實(shí)現(xiàn)本發(fā)明的第五實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖。具體實(shí)施例方式現(xiàn)在根據(jù)附圖詳細(xì)說(shuō)明本發(fā)明的優(yōu)選實(shí)施例。第一實(shí)施例本實(shí)施例是從某模塊調(diào)用另外的模塊內(nèi)存在的函數(shù)時(shí)的結(jié)構(gòu)。通過(guò)利用存儲(chǔ)器保持的導(dǎo)入函數(shù)地址、虛擬函數(shù)地址表(VirtualAddressTable)掛鉤(hook)模塊間的函數(shù)調(diào)用并記錄到處理日志中,不對(duì)軟件模塊自身加以修改,可將整個(gè)軟件的處理作為按時(shí)間順序的處理日志來(lái)獲取。下面具體說(shuō)明。<系統(tǒng)結(jié)構(gòu)>圖1是表現(xiàn)出實(shí)現(xiàn)本發(fā)明各實(shí)施例的日志獲取方法的計(jì)算機(jī)(軟件評(píng)價(jià)系統(tǒng))的結(jié)構(gòu)的圖。為簡(jiǎn)化說(shuō)明,本實(shí)施例中,該軟件評(píng)價(jià)系統(tǒng)在1臺(tái)PC內(nèi)部構(gòu)筑,但本發(fā)明的日志獲取方法可在1臺(tái)PC內(nèi)部構(gòu)筑或構(gòu)筑在作為網(wǎng)絡(luò)系統(tǒng)的多個(gè)PC上。實(shí)現(xiàn)本日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中包括CPU1、芯片組2、RAM3、硬盤(pán)控制器4、顯示器控制器5、硬盤(pán)驅(qū)動(dòng)器6、CD-ROM驅(qū)動(dòng)器7、顯示器8。還包括掛鉤CPU1和芯片組2的信號(hào)線11、掛鉤芯片組2和RAM3的信號(hào)線12、掛鉤芯片組2和各外圍設(shè)備的外圍設(shè)備總線13、掛鉤硬盤(pán)控制器4和硬盤(pán)驅(qū)動(dòng)器6的信號(hào)線14、掛鉤硬盤(pán)控制器4和CD-ROM驅(qū)動(dòng)器7的信號(hào)線15、掛鉤顯示器控制器5和顯示器8的信號(hào)線16。<對(duì)函數(shù)處理的處理日志獲取>為說(shuō)明實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中的處理,首先根據(jù)圖2說(shuō)明分為多個(gè)模塊的軟件在通常狀態(tài)下如何加載到存儲(chǔ)器中。通常分為多個(gè)模塊的軟件分為進(jìn)行整體控制的執(zhí)行文件EXE(23)、作為模塊存在并起到EXE的補(bǔ)充作用的動(dòng)態(tài)鏈接庫(kù)DLL(27),在存儲(chǔ)器中裝入EXE和DLL二者。EXE由代碼段(28)、數(shù)據(jù)段(29)以及導(dǎo)入函數(shù)地址表(22)構(gòu)成。而且,導(dǎo)入函數(shù)地址表(22)由函數(shù)所屬的DLL區(qū)分(21,24),按DLL寫(xiě)入加載各個(gè)函數(shù)的加載地址(30~35)。DLL的函數(shù)實(shí)例按DLL分開(kāi)(25,26)加載,各個(gè)函數(shù)作為該DLL的一部分被加載(36~41)。該圖中,表示出1個(gè)EXE使用A.DLL和B.DLL這2個(gè)動(dòng)態(tài)鏈接庫(kù)內(nèi)的函數(shù)的例子,實(shí)際使用的函數(shù)為FuncAA,F(xiàn)uncAB,F(xiàn)uncAC,F(xiàn)uncBA,F(xiàn)uncBB,F(xiàn)uncBC這6個(gè)。在EXE的代碼段內(nèi)的代碼調(diào)用FuncAA的情況下,首先,讀入導(dǎo)入函數(shù)地址表(22)內(nèi)寫(xiě)入的FuncAA的地址(30)。這里,實(shí)際上寫(xiě)入作為A.DLL的一部分被讀入的FuncAA代碼(36)的地址,通過(guò)調(diào)用該地址,EXE的代碼可調(diào)用A.DLL的FuncAA。圖3是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)的圖,與圖2不同的是,對(duì)日志獲取用的代碼使用ITA補(bǔ)丁(ImportAddressTablePatch)的方法再指示函數(shù)調(diào)用。開(kāi)始日志獲取時(shí),存儲(chǔ)器內(nèi)加載作為IATPatch用DLL的C.DLL(58)。C.DLL(58)將寫(xiě)入導(dǎo)入函數(shù)地址表(52)內(nèi)的函數(shù)地址改寫(xiě)為作為C.DLL(58)內(nèi)的日志獲取代碼的FuncCAA,F(xiàn)uncCAB,F(xiàn)uncCAC,F(xiàn)uncCBA,F(xiàn)uncCBB,F(xiàn)uncCBC的地址(61~66)。C.DLL(58)內(nèi)的FuncCAA,F(xiàn)uncCAB,F(xiàn)uncCAC,F(xiàn)uncCBA,F(xiàn)uncCBB,F(xiàn)uncCBC的代碼(73~78)在記錄日志的同時(shí),調(diào)用加載到原來(lái)的應(yīng)接受函數(shù)調(diào)用的存儲(chǔ)器中的、作為該函數(shù)的FuncAA,F(xiàn)uncAB,F(xiàn)uncAC,F(xiàn)uncBA,F(xiàn)uncBB,F(xiàn)uncBC(67~72)。圖4A是表示圖3的ITA補(bǔ)丁的處理的圖,圖4B是表示日志獲取處理的流程的流程圖。為了簡(jiǎn)化說(shuō)明,該圖中表現(xiàn)出EXE調(diào)用A.DLL(55)內(nèi)的FuncAA時(shí)由ITA補(bǔ)丁產(chǎn)生的日志獲取代碼如何動(dòng)作的例子。EXE(圖4A的91)調(diào)用FuncAA時(shí)(圖4A的94),C.DLL(58)內(nèi)的日志獲取代碼在存儲(chǔ)器中保存DLL名(C.DLL)/函數(shù)名(FuncAA)(圖4B的步驟S402),在存儲(chǔ)器中保存調(diào)用時(shí)刻,在存儲(chǔ)器中保存調(diào)用時(shí)的參數(shù),在其它存儲(chǔ)器中保存調(diào)用時(shí)的指針參數(shù)所指示的存儲(chǔ)器內(nèi)容(圖4A的95、圖4B的步驟S403)。之后,DLL調(diào)用本來(lái)應(yīng)調(diào)用的、A.DLL(圖4A的93)內(nèi)的FuncAA(圖4A的96、圖4B的步驟404)。在A.DLL的FuncAA處理(圖4A的97)結(jié)束、控制返回C.DLL時(shí)(圖4A的98),C.DLL在存儲(chǔ)器保存返回時(shí)刻,在存儲(chǔ)器保存返回值,在其它存儲(chǔ)器中保存返回時(shí)指針參數(shù)所指示的存儲(chǔ)器內(nèi)容(圖4A的99)。之后,返回EXE,以使得C.DLL將保存的日志信息寫(xiě)入文件(圖4A的100、圖4B的步驟S405)、而且A.DLL的FuncAA如通常那樣結(jié)束(101)。圖5是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的功能結(jié)構(gòu)的圖。通常執(zhí)行文件EXE(113)調(diào)用DLL-1(116)和DLL-2(117)內(nèi)的函數(shù),但這里,嵌入叫作API跟蹤器(tracer)的日志獲取代碼(114),以生成處理日志(115)。API跟蹤器根據(jù)記述DLL-1和DLL-2的函數(shù)定義的文件(111)和在改寫(xiě)哪個(gè)DLL的哪個(gè)函數(shù)的導(dǎo)入函數(shù)后獲取日志的設(shè)定方案(跟蹤方案)112來(lái)動(dòng)作。<用于方法處理的處理日志獲取>接著為說(shuō)明在實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中,在生成被COM(ComponentObjectModel)服務(wù)器導(dǎo)出的接口實(shí)例時(shí)執(zhí)行文件EXE如何加載到存儲(chǔ)器中,首先通過(guò)圖6說(shuō)明通常狀態(tài)下如何加載到存儲(chǔ)器中。通常,在生成接口實(shí)例時(shí),在COM服務(wù)器內(nèi),生成請(qǐng)求的接口(121,122)及其方法(在面向?qū)ο缶幊讨?,記述?duì)象的執(zhí)行順序的程序,130~135)。這些都加載在存儲(chǔ)器中。這里,virtualaddresstable(虛擬地址表)按生成的各接口生成(118,120),并被傳遞到發(fā)出請(qǐng)求的EXE。該virtualaddresstable中寫(xiě)入各方法生成的地址(124~129)。EXE利用這些信息對(duì)各接口進(jìn)行調(diào)用。該圖中,表示出1個(gè)EXE生成InterfaceA和InterfaceB的2個(gè)接口的實(shí)例并使用該接口內(nèi)部的方法的例子,實(shí)際使用的方法為MethodAA,MethodAB,MethodAC,MethodBA,MethodBB,MethodBC。在EXE的代碼調(diào)用函數(shù)MethodAA時(shí),首先,讀入寫(xiě)入virtualaddresstable內(nèi)的MethodAA的地址(124)。這里,寫(xiě)入實(shí)際上作為Com服務(wù)器的InterfaceA的一部分而生成的MethodAA代碼(130)的地址,通過(guò)調(diào)用該地址,EXE的代碼可調(diào)用InterfaceA的MethodAA。圖7是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)的圖。與圖6不同的是,對(duì)日志獲取用代碼使用VTable補(bǔ)丁(virtualaddresstablePatch)的方法再指示方法調(diào)用。開(kāi)始日志獲取時(shí),在存儲(chǔ)器內(nèi)加載VTable補(bǔ)丁用DLL(143)。該DLL將寫(xiě)入virtualaddresstable(136,138)內(nèi)的方法的地址改寫(xiě)為作為DLL內(nèi)的日志獲取代碼的MethodA’A,MethodA’B,MethodA’C,MethodB’A,MethodB’B,MethodB’C的地址(145~150)。DLL內(nèi)的MethodA’A,MethodA’B,MethodA’C,MethodB’A,MethodB’B,MethodB’C的代碼(157~162)在記錄日志的同時(shí),調(diào)用加載到原來(lái)的應(yīng)接受方法調(diào)用的存儲(chǔ)器中的、作為該方法的MethodAA,MethodAB,MethodAC,MethodBA,MethodBB,MethodBC(157~162)。圖8A是表現(xiàn)出圖7的VTable補(bǔ)丁的處理的圖,圖8B是表示日志獲取處理的流程的流程圖。為了簡(jiǎn)化說(shuō)明,該圖中表現(xiàn)出在EXE調(diào)用COM服務(wù)器內(nèi)的InterfaceA的MethodAA時(shí)由VTable補(bǔ)丁產(chǎn)生的日志獲取代碼如何動(dòng)作的例子。EXE(圖8A的163)調(diào)用MethodAA時(shí)(圖8A的166),DLL內(nèi)的日志獲取代碼在存儲(chǔ)器中保存模塊名/接口名/方法名(圖8B的步驟S802),在存儲(chǔ)器中保存調(diào)用時(shí)刻,在存儲(chǔ)器中保存調(diào)用時(shí)的參數(shù),在其它存儲(chǔ)器中保存調(diào)用時(shí)的指針參數(shù)所指示的存儲(chǔ)器內(nèi)容(圖8A的167、圖8B的步驟S803)。之后,DLL調(diào)用本來(lái)應(yīng)調(diào)用的、COM服務(wù)器(圖8A的165)內(nèi)的MethodAA(圖8A的168、圖8B的步驟804)。在COM服務(wù)器的MethodAA處理(圖8A的169)結(jié)束、控制返回DLL時(shí)(圖8A的170),DLL在存儲(chǔ)器中保存返回時(shí)刻,在存儲(chǔ)器保存返回值,在其它存儲(chǔ)器中保存返回時(shí)指針參數(shù)指示的存儲(chǔ)器內(nèi)容(圖8A的171)。之后,返回EXE,以使得DLL將保存的日志信息寫(xiě)入文件(圖8A的172、圖8B的步驟S805)、而且COM服務(wù)器的MethodAA如通常那樣結(jié)束(圖8A的173)。圖9是表現(xiàn)出實(shí)現(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的功能結(jié)構(gòu)的圖。通常是執(zhí)行文件EXE(176)調(diào)用COM服務(wù)器1(179)、COM服務(wù)器2(180)內(nèi)的方法,但這里,嵌入叫作API跟蹤器(tracer)的日志獲取代碼(177),以生成處理日志(178)。API跟蹤器根據(jù)記述COM服務(wù)器1(179)、COM服務(wù)器2的函數(shù)定義的文件(174)和在改寫(xiě)哪個(gè)COM服務(wù)器的哪個(gè)接口的哪個(gè)方法的virtualaddresstable后獲取日志的設(shè)定方案(175)來(lái)動(dòng)作。<實(shí)施例>圖10是表示向?qū)崿F(xiàn)本發(fā)明的第一實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)指示各個(gè)函數(shù)和方法的參數(shù)的形式和返回值的形式的函數(shù)定義文件的例子的圖。記述DLL/接口名和函數(shù)/方法名(函數(shù)/方法意為函數(shù)或方法,下面同樣)的文件還表示對(duì)應(yīng)于該函數(shù)/方法的參數(shù)和返回值的類型。實(shí)現(xiàn)本實(shí)施形式的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)根據(jù)由該函數(shù)定義文件指示的內(nèi)容,判斷各個(gè)函數(shù)/方法具有什么樣的參數(shù)/返回值,并將其內(nèi)容作為日志而取得。圖11是表示使用圖10所示的函數(shù)定義文件由本發(fā)明的實(shí)施例的軟件評(píng)價(jià)系統(tǒng)所取得的日志的一個(gè)例子的圖。對(duì)各個(gè)調(diào)用,作為日志生成調(diào)用函數(shù)/方法的時(shí)刻(In時(shí)刻、Out時(shí)刻)及此時(shí)的參數(shù)/返回值。如以上說(shuō)明所理解的那樣,根據(jù)本實(shí)施例的日志獲取方法,在分成多個(gè)模塊的軟件的處理日志的獲取中,不對(duì)模塊自身進(jìn)行變更,可將模塊內(nèi)準(zhǔn)備的函數(shù)/方法的調(diào)用記錄為處理日志,可降低用于處理日志獲取的作業(yè)負(fù)荷。生成的處理日志可作為按時(shí)間順序的處理日志被獲取,從而容易進(jìn)行處理日志的分析,因此可減少用于軟件故障原因分析的工時(shí)數(shù)。第二實(shí)施例(其一)上述第一實(shí)施例中,獲取由EXE調(diào)用的函數(shù)/方法的全部處理日志。但是,此時(shí)認(rèn)為獲取的處理日志的數(shù)量太龐大了。因此,本實(shí)施例中說(shuō)明在由EXE調(diào)用的函數(shù)/方法中限定處理日志的獲取對(duì)象的情況。一般地,軟件的模塊結(jié)構(gòu)通過(guò)OS表面分為OS部分的DLL和應(yīng)用部分的DLL。圖12是表示一般的軟件模塊結(jié)構(gòu)的例子的圖。該圖中,1200是APP.EXE,1201~1203分別為ModuleA.dll、ModuleB.dll、ModuleC.dll,是應(yīng)用部分的DLL。另一方面,1205~1210分別為User32.dll、GDI32.dll、Ntdll.dll、Ws232.dll、Unidrv.dll,是OS部分的DLL。因此,本實(shí)施例中,包括這種模塊結(jié)構(gòu)的軟件中,通過(guò)僅在調(diào)用應(yīng)用部分的DLL內(nèi)的函數(shù)時(shí)取得處理日志來(lái)限定處理日志的收集對(duì)象。圖13是表示定義操作系統(tǒng)的模塊的例子的圖。用該模塊定義進(jìn)行圖14所示處理。圖14是表示實(shí)現(xiàn)本發(fā)明的第二實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖。步驟S1400開(kāi)始處理,首先,取得圖13所示的操作系統(tǒng)的模塊定義1300,保持OS模塊列表(步驟S1401)。接著,判別函數(shù)/方法的調(diào)用源的模塊是否存在于該OS模塊列表中(步驟S1402、1403),僅在存在的情況下向OS模塊列表中追加調(diào)用目標(biāo)的模塊(步驟S1409),仍調(diào)用原來(lái)的函數(shù)/方法(步驟S1410)。通過(guò)該步驟S1409的處理,確立了即便調(diào)用該模塊中的函數(shù)/方法,也不取得該調(diào)用的處理日志的方式。另一方面,在步驟S1403中判斷出不存在于OS模塊列表中的情況下,在HDD中保存DLL名/接口名/函數(shù)名/方法名/調(diào)用時(shí)刻(步驟S1404),對(duì)應(yīng)于該調(diào)用的參數(shù)保存到HDD中(步驟S1405)。接著,調(diào)用一個(gè)實(shí)例的函數(shù)/方法(步驟S1406)。函數(shù)/方法內(nèi)部的處理結(jié)束后,在HDD中保存DLL名/接口名/函數(shù)名/方法名/結(jié)束時(shí)刻(步驟S1407),對(duì)應(yīng)于該調(diào)用的參數(shù)和返回值保存到HDD中(步驟S1408)。隨后,進(jìn)行函數(shù)/方法的返回處理(步驟S1411)。該處理持續(xù)進(jìn)行,直到作為評(píng)價(jià)對(duì)象的程序結(jié)束(步驟S1412)。圖15A是表示通過(guò)圖14的處理所取得的處理日志的一個(gè)例子。為進(jìn)行比較,圖15B中表示出調(diào)用OS部分的DLL內(nèi)的函數(shù)時(shí)取得的處理日志的例子。圖15A和圖15B相比可知,利用圖13的操作系統(tǒng)的模塊定義1300,圖15A中不能取得像從Kernel32.dll調(diào)用Ntdll.dll、或從User32.dll調(diào)用Ws232.dll這樣的也包含操作系統(tǒng)的內(nèi)部處理日志的處理日志,因此可用尺寸較小的處理日志進(jìn)行分析。從以上說(shuō)明可知,根據(jù)本實(shí)施例,函數(shù)定義文件中通過(guò)指定“操作系統(tǒng)的表面”,可取得對(duì)應(yīng)于軟件的適當(dāng)?shù)奶幚砣罩?,可進(jìn)行故障原因確定等的分析。第二實(shí)施例(其二)上述第二實(shí)施例(其一)中,表現(xiàn)出了沒(méi)有取得操作系統(tǒng)的表面以下的全部處理日志的例子,但實(shí)際上關(guān)于表面以下的一部分(OS部分的DLL),也存在要取得處理日志的情況。例如,考慮將實(shí)現(xiàn)上述第一實(shí)施例所示的日志獲取方法的程序(下面叫“日志獲取程序”)嵌入到驅(qū)動(dòng)器SDK(SDK=SoftwareDevelopmentKit)中來(lái)利用的情況。一般地,驅(qū)動(dòng)器SDK(例如打印機(jī)SDK)由外圍設(shè)備制造商(打印機(jī)制造商)提供,但使用驅(qū)動(dòng)器SDK的軟件(例如生成、編輯在打印機(jī)中打印的文件、圖像的軟件)多由其他制造商制作。因此,軟件在使用驅(qū)動(dòng)器SDK(打印機(jī)SDK)時(shí)不正常運(yùn)行時(shí),判別其原因是由于驅(qū)動(dòng)器SDK(打印機(jī)SDK)側(cè)的故障還是軟件側(cè)的故障所造成是很重要的。這種情況下,重要的是通過(guò)日志獲取程序,將打印機(jī)SDK的處理內(nèi)容作為處理日志獲取。這樣,需要將調(diào)用Unidrv.dll(1210)等OS部分的DLL內(nèi)的函數(shù)時(shí)的處理日志也作為收集對(duì)象。即,希望與限定處理日志的獲取對(duì)象不同地根據(jù)日志獲取程序的使用目的進(jìn)行任意選擇。本實(shí)施例中,說(shuō)明考慮這一點(diǎn)的日志獲取程序。圖16是表示根據(jù)這種需要定義操作系統(tǒng)的除外模塊(從定義為日志獲取對(duì)象以外的操作系統(tǒng)模塊中去除的模塊,即,作為日志獲取對(duì)象的模塊)的例子的圖。用該除外模塊定義和圖13所示的表面定義進(jìn)行圖17的處理。本實(shí)施例中,用戶進(jìn)行從表面除外的指定,以便在上述情況下,同時(shí)獲得驅(qū)動(dòng)器的處理日志和軟件的處理日志。圖17是表示實(shí)現(xiàn)本發(fā)明的第二實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理的流程的流程圖。步驟S1700開(kāi)始處理,首先,本日志獲取程序取得圖13所示的操作系統(tǒng)的模塊定義1300,保持OS模塊列表(步驟S1701)。接著,取得圖16所示的除外模塊定義,保持除外模塊列表(步驟S1702)。接著,從OS模塊列表和除外模塊列表兩個(gè)列表中檢索函數(shù)/方法的調(diào)用源模塊是否存在(步驟S1703)。隨后,判別調(diào)用源模塊是否存在于OS模塊列表中(步驟S1704),在存在的情況下判別調(diào)用源是否為除外模塊(步驟S1705)。在存在于OS模塊列表中但不存在于除外模塊列表中的情況下,本日志獲取程序通過(guò)僅向OS模塊列表追加調(diào)用目標(biāo)模塊(步驟S1711),仍調(diào)用原來(lái)的函數(shù)/方法(步驟S1712)。在步驟S1704中判斷出調(diào)用源模塊不存在于OS模塊列表中的情況下以及在步驟S1705中判斷出存在于除外模塊列表中的情況下,在HDD中保存DLL名/接口名/函數(shù)名/方法名/調(diào)用時(shí)刻(步驟S1706),對(duì)應(yīng)于該調(diào)用的參數(shù)保存到HDD中(步驟S1707)。接著,調(diào)用一個(gè)實(shí)例的函數(shù)/方法(步驟S1708)。函數(shù)/方法內(nèi)部的處理結(jié)束后,在HDD中保存DLL名/接口名/函數(shù)名/方法名/結(jié)束時(shí)刻(步驟S1709),對(duì)應(yīng)于該調(diào)用的參數(shù)和返回值保存到HDD中(步驟S1710)。隨后,進(jìn)行函數(shù)/方法的返回處理(步驟S1713)。該處理持續(xù)進(jìn)行,直到作為評(píng)價(jià)對(duì)象的程序結(jié)束(步驟S1714)。這樣,通過(guò)可指定“操作系統(tǒng)的表面”和“從表面除外的模塊”的API跟蹤器,可取得對(duì)應(yīng)于軟件的適當(dāng)?shù)奶幚砣罩?,可進(jìn)行故障原因確定等分析。第二實(shí)施例(其三)上述第二實(shí)施例(其一)、(其二)中,圖14的步驟S1401、圖17的步驟S1701中利用操作系統(tǒng)提供的信息而自動(dòng)取得OS模塊列表,但不僅限于此?!安僮飨到y(tǒng)提供的信息”可從操作系統(tǒng)準(zhǔn)備的接口取得,也可以是在例如WindowsOS的情況下的注冊(cè)表(registry)信息。用戶可以明確選擇進(jìn)行圖14所示處理還是圖17所示處理。另外,上述第二實(shí)施例(其二)中,預(yù)先進(jìn)行操作系統(tǒng)的除外模塊的定義,但也可以在圖17的步驟S1702中由用戶任意指定。第三實(shí)施例(其一)在上述第一實(shí)施例中,函數(shù)定義文件記述了DLL名/接口名/函數(shù)名/方法名、和對(duì)應(yīng)于該函數(shù)/方法的參數(shù)和返回值的類型(參考圖10),但實(shí)現(xiàn)本發(fā)明的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件的記述不限定于此。本實(shí)施例中,說(shuō)明取得包括作為特殊結(jié)構(gòu)數(shù)據(jù)的DEVMODE的函數(shù)的日志的情況下的,函數(shù)定義文件的記述方法和該函數(shù)定義文件的日志獲取方法。DEVMODE是表示在打印機(jī)驅(qū)動(dòng)程序的用戶接口上可設(shè)定的打印設(shè)定內(nèi)容的Windows(注冊(cè)商標(biāo))的結(jié)構(gòu),DEVMODE中有OS公共定義的部分和打印機(jī)銷售商可擴(kuò)展使用的部分(擴(kuò)展區(qū)域)。并且,DEVMODE的最開(kāi)始指定擴(kuò)展區(qū)域大小。這樣,在指定了擴(kuò)展區(qū)域的大小的情況下,指向DEVMODE結(jié)構(gòu)的指針作為API跟蹤器的參數(shù)被輸入時(shí),通過(guò)寫(xiě)入函數(shù)定義文件可取得包含DEVMODE的函數(shù)的處理日志,以使得從DEVMODE的標(biāo)準(zhǔn)區(qū)域(大小固定)的最后地址讀出指定大小的數(shù)據(jù)內(nèi)容作為日志。下面詳細(xì)說(shuō)明。圖18是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件的一個(gè)例子的圖,由一般廣泛應(yīng)用的IDL記述。關(guān)于本軟件評(píng)價(jià)系統(tǒng),使用將該IDL標(biāo)志(token)化的類型庫(kù)文件作為函數(shù)定義文件。本實(shí)施例的特征是提供用于獲取附加的二進(jìn)制信息的定義方式,函數(shù)定義文件可以不是IDL。例如,可使用通常的文本文件,也可使用XML等的標(biāo)記語(yǔ)言。圖19是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件的圖,通過(guò)對(duì)指向結(jié)構(gòu)的指針指定附加的二進(jìn)制信息,取得作為處理日志的指針數(shù)據(jù)的實(shí)例,并由IDL記述。關(guān)于TESTSTRUCT_WITHEXTRA結(jié)構(gòu)的定義,向longcExtraBinaryData聲明custum(PAT_PARAM_ATTR_ID,“structsizeextra_is()”)(1901)。這里,PAT_PARAM_ATTR_ID(1900)是在IDL中本軟件評(píng)價(jià)系統(tǒng)所利用的識(shí)別符。這里,定義“structsizeextra_is()”,通過(guò)在FuncStructsizeextra_is函數(shù)中將變量定義為T(mén)ESTSTRUCT_WITHEXTRA*lpParam(1902),在實(shí)際調(diào)用FuncStructsizeextra_is函數(shù)時(shí),從存有TESTSTRUCT_WITHEXTRA結(jié)構(gòu)的存儲(chǔ)器區(qū)域的開(kāi)頭開(kāi)始,將大小由cExtraBinaryData指示的、作為附加信息的二進(jìn)制數(shù)據(jù)作為處理日志保存。圖20是表示基于圖19所示的函數(shù)定義的結(jié)構(gòu)如何配置在存儲(chǔ)器上的圖。該圖中,說(shuō)明TESTSTRUCT_WITHEXTRA結(jié)構(gòu)(2000)所處的存儲(chǔ)器開(kāi)頭地址為0x01F7B000。作為1字節(jié)數(shù)據(jù)的chParam1(2001)放置在0x01F7B000處,作為4字節(jié)數(shù)據(jù)的cExtraBinaryDataSize(2002)放置在0x01F7B001處,作為1字節(jié)數(shù)據(jù)的chParam2(2003)放置在0x01F7B005處,作為1字節(jié)數(shù)據(jù)的chParam3(2004)放置在0x01F7B006處。至此,與通常的結(jié)構(gòu)存儲(chǔ)器配置相同,但TESTSTRUCT_WITHEXTRA結(jié)構(gòu)在chParam3之后的存儲(chǔ)器,即從0x01F7B007開(kāi)始的區(qū)域中具有附加數(shù)據(jù)ExtraBinaryData(2005),其大小可對(duì)應(yīng)于cExtraBinaryDataSize而變化。例如,將8作為cExtraBinaryDataSize的值輸入時(shí),cExtraBinaryData存為8字節(jié),因此TESTSTRUCT_WITHEXTRA結(jié)構(gòu)的最末存儲(chǔ)器地址為0x01F7B00E。因此,為在日志中獲取TESTSTRUCT_WITHEXTRA結(jié)構(gòu)指示的全部數(shù)據(jù),必須獲得大小對(duì)應(yīng)于cExtraBinaryDataSize的值的ExtraBinaryData作為二進(jìn)制數(shù)據(jù)。圖19的structsizeextra_is的定義為滿足該需要而記述。圖21是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中如圖19所示記述函數(shù)定義文件時(shí)取得處理日志的情況下的處理流程的流程圖。開(kāi)始處理(步驟S2100),開(kāi)始獲取日志,在HDD中保存模塊名/接口名/函數(shù)名/方法名(步驟S2101)。接著,日志獲取代碼在HDD中保存調(diào)用時(shí)刻、參數(shù)和指針參數(shù)指示的存儲(chǔ)器內(nèi)容(步驟S2102)。然后判別函數(shù)定義中是否存在structsizeextra_is的設(shè)定,即判別包含structsizeextra_is的定義的結(jié)構(gòu)是否存在于參數(shù)中(步驟S2103),在存在的情況下,首先計(jì)算包含該定義的結(jié)構(gòu)的大小(步驟S2104)。接著從自結(jié)構(gòu)的開(kāi)頭指針偏離開(kāi)計(jì)算的結(jié)構(gòu)大小的存儲(chǔ)器區(qū)域開(kāi)始在HDD中保存由structsizeextra_is所示的成員值所指示的大小的數(shù)據(jù)(步驟S2105)。接著調(diào)用原來(lái)的函數(shù)/方法(步驟S2106)。從函數(shù)/方法返回時(shí),日志獲取代碼在HDD中保存返回時(shí)刻、返回值和參數(shù)指針?biāo)甘镜拇鎯?chǔ)器內(nèi)容(步驟S2107)。并且,判別函數(shù)定義中是否存在structsizeextra_is的設(shè)定,即判別包含structsizeextra_is的定義的結(jié)構(gòu)是否存在于參數(shù)/返回值中(步驟S2108),在存在的情況下,計(jì)算包含該定義的結(jié)構(gòu)的大小(步驟S2109)。接著從自結(jié)構(gòu)的開(kāi)頭指針偏離開(kāi)計(jì)算的結(jié)構(gòu)大小的存儲(chǔ)器區(qū)域開(kāi)始在HDD中保存由structsizeextra_is所示的成員(メンバ)值所指示的大小的數(shù)據(jù)(步驟S2110)。該處理由來(lái)自用戶的結(jié)束命令來(lái)結(jié)束(步驟S2111)。在structsizeextra_is指定多個(gè)成員(メンバ)的情況下,對(duì)指定的所有成員重復(fù)進(jìn)行步驟S2104~步驟S2105和步驟S2109~步驟S2110的處理。圖22是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中利用圖19的函數(shù)定義文件取得的處理日志的圖。這里,處理日志分開(kāi)表示為文本部分(2200)和二進(jìn)制部分(2201),寫(xiě)入文本數(shù)據(jù)中的DataID對(duì)應(yīng)于寫(xiě)入二進(jìn)制部分中的DataID。例如,第一次的調(diào)用日志中DataID為0x0001,該ID指示寫(xiě)入二進(jìn)制部分的附加二進(jìn)制信息、即DataID=0x0001。此時(shí),F(xiàn)uncStructsizeextraIs的第一次調(diào)用中取得8字節(jié)、第二次調(diào)用中取得40字節(jié)、第三次調(diào)用中取得5字節(jié)、第四次調(diào)用中取得7字節(jié)的附加二進(jìn)制數(shù)據(jù)。未進(jìn)行structsizeextra_is的定義時(shí),僅取得chParam1和cExtraBinaryDataSize和chParam2與chParam3,但通過(guò)進(jìn)行structsizeextra_is的定義,可在處理日志中取得其大小對(duì)應(yīng)于各個(gè)調(diào)用的、作為附加二進(jìn)制數(shù)據(jù)的ExtraBinaryData。這樣,通過(guò)設(shè)置用于取得對(duì)應(yīng)于結(jié)構(gòu)成員(メンバ)的處理日志的函數(shù)定義方式,可在處理日志中取得作為二進(jìn)制數(shù)據(jù)的通常不能取得的數(shù)據(jù)。第三實(shí)施例(其二)上述第三實(shí)施例(其一)中,說(shuō)明了從特定結(jié)構(gòu)的最后地址開(kāi)始獲取規(guī)定大小的數(shù)據(jù)作為處理日志的函數(shù)定義文件的記述方法及該情況下的日志取得程序的處理,但實(shí)現(xiàn)本發(fā)明的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中的函數(shù)定義文件的記述方法不限定于此。圖23是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件的圖,該文件用IDL記述以通過(guò)針對(duì)指向結(jié)構(gòu)的指針將成員(メンバ)指定為偏移量,取得作為日志的指針數(shù)據(jù)實(shí)例。關(guān)于TESTSTRUCT_WITHPTRDIFF結(jié)構(gòu)的定義,向LPSTRipszString和longnNumber聲明custum(PAT_PARAM_ATTR_ID,“ptrdiff()”)(2301,2302)。這里,PAT_PARAM_ATTR_ID(2300)是在IDL中本軟件評(píng)價(jià)系統(tǒng)所利用的識(shí)別符。這里,定義為“ptrdiff()”,通過(guò)在FuncPtrdiff函數(shù)中將變量定義為T(mén)ESTSTRUCT_WITHPTRDIFF*lpParam(2303),在實(shí)際調(diào)用FuncPtrdiff函數(shù)時(shí),將從放置TESTSTRUCT_WITHPTRDIFF結(jié)構(gòu)的存儲(chǔ)器區(qū)域的開(kāi)頭開(kāi)始偏離了由lpszString和nNumber的數(shù)值表示的偏移量的存儲(chǔ)器區(qū)域中所存儲(chǔ)的LPSTR和long的數(shù)據(jù)作為處理日志保存下來(lái)。ptrdiff()的聲明兼有下面的2個(gè)條件定義。(1)ptrdiff()指定的變量實(shí)際上不作為規(guī)定的類型而作為表示自結(jié)構(gòu)的開(kāi)頭地址起的偏移量的數(shù)值進(jìn)行處理。(2)該偏移量指示的存儲(chǔ)器區(qū)中保持特定類型的數(shù)據(jù)。圖24是表示基于圖18所示的函數(shù)定義的結(jié)構(gòu)如何配置在存儲(chǔ)器上的圖。該圖中,說(shuō)明放置TESTSTRUCT_WITHPTRDIFF結(jié)構(gòu)(2400)的存儲(chǔ)器的開(kāi)頭地址為0x01F7B000。作為1字節(jié)數(shù)據(jù)的chParam1(2401)放置在0x01F7B000處,作為4字節(jié)數(shù)據(jù)的對(duì)lpszString的偏移量(2402)放置在0x01F7B001處,作為4字節(jié)數(shù)據(jù)的對(duì)nNumber的偏移量(2403)放置在0x01F7B005處,作為1字節(jié)數(shù)據(jù)的chParam2(2404)放置在0x01F7B009處。TESTSTRUCT_WITHPTRDIFF結(jié)構(gòu)中,lpszString的實(shí)例存儲(chǔ)在自構(gòu)造體的開(kāi)頭地址起偏離開(kāi)由偏移量(2402)表示的大小的區(qū)域中(2405),nNumber的實(shí)例存儲(chǔ)在自構(gòu)造體的開(kāi)頭地址起偏離開(kāi)由偏移量(2403)表示的大小的區(qū)域中(2406)。因此,為在處理日志中獲取TESTSTRUCT_WITHPTRDIFF結(jié)構(gòu)指示的全部數(shù)據(jù),需要取得關(guān)于lpszString和nNumber的實(shí)例數(shù)據(jù)作為日志。圖23中的ptrdiff的定義為滿足該需要而記述。圖25是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中如圖23所示取得函數(shù)定義時(shí)的日志的情況下的處理流程的流程圖。開(kāi)始處理(步驟S2501),開(kāi)始獲取日志,在HDD中保存模塊名/接口名/函數(shù)名/方法名(步驟S2502)。接著,日志獲取代碼在HDD中保存調(diào)用時(shí)刻、參數(shù)和指針參數(shù)指示的存儲(chǔ)器內(nèi)容(步驟S2503)。然后判別函數(shù)定義文件中是否存在ptrdiff的設(shè)定,即判別包含ptrdiff的定義的結(jié)構(gòu)是否存在于參數(shù)中(步驟S2504),在存在的情況下,將結(jié)構(gòu)的開(kāi)頭地址和ptrdiff定義的結(jié)構(gòu)成員的偏移量的值相加,計(jì)算ptrdiff定義的結(jié)構(gòu)成員存儲(chǔ)在哪個(gè)地址中(步驟S2505)。接著,從計(jì)算的地址所指示的存儲(chǔ)器區(qū)域開(kāi)始,在HDD中保存ptrdiff所示的成員型數(shù)據(jù)(步驟S2506)。接著調(diào)用原來(lái)的函數(shù)/方法(步驟S2507)。從函數(shù)/方法返回時(shí),日志獲取代碼在HDD中保存返回時(shí)刻、返回值和參數(shù)指針?biāo)甘镜拇鎯?chǔ)器內(nèi)容(步驟S2508)。并且,判別函數(shù)定義文件中是否存在ptrdiff的設(shè)定,即判別包含ptrdiff的定義的結(jié)構(gòu)是否存在于參數(shù)/返回值中(步驟S2509),在存在的情況下,將結(jié)構(gòu)的開(kāi)頭地址和ptrdiff定義的結(jié)構(gòu)成員的偏移量的值相加,計(jì)算ptrdiff定義的結(jié)構(gòu)成員存儲(chǔ)在哪個(gè)地址中(步驟S2510)。接著從計(jì)算的地址指示的存儲(chǔ)器區(qū)域開(kāi)始,在HDD中保存ptrdiff所示的成員(メンバ)型數(shù)據(jù)(步驟S2511)。該處理由來(lái)自用戶的結(jié)束命令來(lái)結(jié)束(步驟S2512)。在ptrdiff指定多個(gè)成員(メンバ)的情況下,對(duì)指定的數(shù)全部成員重復(fù)進(jìn)行步驟S2505~步驟S2506和步驟S2510~步驟S2511的處理。圖26是表示實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中由圖23的函數(shù)定義文件取得的處理日志的圖。盡管各調(diào)用中偏移量不同,但本軟件評(píng)價(jià)系統(tǒng)的確可將偏移量指示的實(shí)例作為處理日志獲取。如以上說(shuō)明,根據(jù)本實(shí)施例,通過(guò)設(shè)置用于取得對(duì)應(yīng)于結(jié)構(gòu)的成員(ンバ)的處理日志的定義方式,即使函數(shù)/方法中包含通常不能取得的數(shù)據(jù),也可取得處理日志。第四實(shí)施例(其一)上述第一實(shí)施例中,函數(shù)定義文件記述了DLL名/接口名/函數(shù)名/方法名和對(duì)應(yīng)于該函數(shù)/方法的參數(shù)和返回值的類型(參考圖10),但實(shí)現(xiàn)本發(fā)明的第三實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件不限定于此。本實(shí)施例中,說(shuō)明對(duì)特殊COM取得日志的情況下的函數(shù)定義文件的記述方法。一般地,打印機(jī)驅(qū)動(dòng)程序包括使用預(yù)先嵌入OS中的UNIDRIVER(單機(jī)驅(qū)動(dòng)器)的情況和使用單片驅(qū)動(dòng)器的情況。并且,打印機(jī)銷售商提供接收單片驅(qū)動(dòng)器或單機(jī)驅(qū)動(dòng)器的輸出的插入模塊(*.drv)。在單片驅(qū)動(dòng)器的情況下,GDI32.dll使用一般的DDI函數(shù)。這里DLL之間使用注冊(cè)表中登錄的API進(jìn)行數(shù)據(jù)交換,但單機(jī)驅(qū)動(dòng)器向打印機(jī)銷售商提供的插入模塊輸出的處理內(nèi)容是未登錄在注冊(cè)表中的COM(object-API)。因此,上述第一實(shí)施例所示的函數(shù)定義文件中,不能取得關(guān)于特殊COM的處理日志。因此,本實(shí)施例中通過(guò)記述函數(shù)定義文件取得是適當(dāng)?shù)娜罩?,以將單機(jī)驅(qū)動(dòng)器給出的未登錄在注冊(cè)表中的COM作為通常的COM處理。圖27是向?qū)崿F(xiàn)本發(fā)明的第四實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)中指示各個(gè)函數(shù)/方法的參數(shù)的形式和返回值的形式的函數(shù)定義文件的例子,由一般地廣泛應(yīng)用的IDL記述。該文件記述DLL名/接口名/函數(shù)名/方法名,還表示對(duì)應(yīng)于該函數(shù)/方法的參數(shù)/返回值的類型。本發(fā)明的第四實(shí)施例的軟件評(píng)價(jià)系統(tǒng)中,利用將該IDL標(biāo)志化的類型庫(kù)文件作為函數(shù)定義文件。本實(shí)施例的特征是提供用于獲得更詳細(xì)的信息的函數(shù)定義方式,函數(shù)定義文件可以不由IDL記述。例如,可使用通常的文本文件,也可使用XML等的標(biāo)記語(yǔ)言。本發(fā)明的第四實(shí)施例的軟件評(píng)價(jià)系統(tǒng)根據(jù)該函數(shù)定義文件指示的內(nèi)容,判斷各個(gè)函數(shù)/方法具有什么樣的參數(shù)/返回值,并將其內(nèi)容作為日志獲取。本實(shí)施例中,以Interfacetest中安裝的叫作DllGetClassObject的函數(shù)具有下面的參數(shù)的狀態(tài)為例。(1)輸入?yún)?shù)“rclsid”,即表示“類別ID”的參數(shù)。(2)輸入?yún)?shù)“riid”,即表示“參考接口ID”的參數(shù)。(3)輸出參數(shù)“ppv”,即表示根據(jù)上述2個(gè)輸入?yún)?shù)得到的作為實(shí)例的接口指針。EXE為了調(diào)用DLL內(nèi)作為代碼記述的Interface內(nèi)的方法,需要預(yù)先使用DllGetClassObject函數(shù)生成以類別ID和參考接口ID為基礎(chǔ)的Interface的實(shí)例,并測(cè)知該實(shí)例的存儲(chǔ)器地址。圖27所示的“iid_is”(2703)最好地表現(xiàn)出本實(shí)施形式的特征。即,通過(guò)在iid_is中指定作為第二變量的riid,定義“該輸出參數(shù)實(shí)際并非void*,而是由riid指定的類型的接口”。通過(guò)API跟蹤器識(shí)別該定義,可作為處理日志取得關(guān)于原來(lái)不能取得的“作為ppv返回的接口內(nèi)安裝的方法調(diào)用”的細(xì)節(jié)。圖28是定義riid指定的接口類型的函數(shù)定義文件的例子。這里,定義從名為IUnknown的接口所派生的名為IGetInfo的接口。在IGetInfo中安裝稱為GetName和FreeNameBuffer的2個(gè)方法。圖29是表示實(shí)現(xiàn)本發(fā)明的第四實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理流程的流程圖。開(kāi)始處理(步驟S2900)后,每次調(diào)用設(shè)定的函數(shù)/方法時(shí),在HDD中保存DLL名/接口名/函數(shù)名/方法名/調(diào)用時(shí)刻(步驟S2901),對(duì)應(yīng)于該調(diào)用的參數(shù)保存到HDD中(步驟S2902)。接著,判別在輸入?yún)?shù)的函數(shù)定義文件中是否有圖27說(shuō)明的iid_is,即“參考接口ID的定義”(步驟S2903),在存在的情況下,將該參考接口ID保存到存儲(chǔ)器上的其它區(qū)域中(步驟S2904)。調(diào)用一個(gè)實(shí)例的函數(shù)/方法(步驟S2905),方法內(nèi)部的處理結(jié)束后,在HDD中保存DLL名/接口名/函數(shù)名/方法名/結(jié)束時(shí)刻(步驟S2906),對(duì)應(yīng)于該調(diào)用的參數(shù)和返回值保存到HDD中(步驟S2907)。接著,根據(jù)圖27所示的函數(shù)定義文件判斷輸出參數(shù)是否被定義為指向接口的指針(步驟S2908),在定義了的情況下,判斷參考接口ID是否保存到存儲(chǔ)器上(步驟S2909、步驟S2910)。在參考接口ID未被保存的情況下,將其輸出參數(shù)識(shí)別為指向接口本身的指針,在存儲(chǔ)器上生成對(duì)應(yīng)于該指針的日志獲取代碼后(步驟S2911),將該參數(shù)/返回值改寫(xiě)為日志獲取代碼的存儲(chǔ)器地址(步驟S2912)。在參考接口ID被保存的情況下,將其輸出參數(shù)識(shí)別為指向由參考接口ID表示的接口的派生類型的指針,例如圖28所示的IGetInfo,在存儲(chǔ)器上生成對(duì)應(yīng)于該指針的日志取得代碼(步驟S2913),將該參數(shù)或返回值改寫(xiě)為日志獲取代碼的存儲(chǔ)器地址(步驟S2914)。在步驟S2912或步驟S2914的處理結(jié)束或在步驟S2908中判斷出未定義為接口指針的情況下,進(jìn)行函數(shù)/方法的返回處理(步驟S2915)。該處理繼續(xù)進(jìn)行,直到結(jié)束作為評(píng)價(jià)對(duì)象的程序(步驟S2916)。圖30是通過(guò)圖29的處理取得的處理日志的例子。通過(guò)圖27的iid_is的定義,將DllGetClassObject的輸出參數(shù)ppv識(shí)別為IGetInfo類型的接口的結(jié)果,不僅能得到DllGetClassObject的日志,而且能得到關(guān)于IGetInfo接口內(nèi)安裝的方法調(diào)用中的處理日志。本實(shí)施例的特征是識(shí)別參考接口ID,實(shí)際的參考接口ID(3001)與IGetInfo的關(guān)聯(lián)以公知技術(shù)為基礎(chǔ)進(jìn)行。例如,在WindowsOS中,該信息置于注冊(cè)表中,可以注冊(cè)表信息為基礎(chǔ)相互關(guān)聯(lián)。但是,也可使用其他方法進(jìn)行關(guān)聯(lián)。從以上說(shuō)明可知,根據(jù)本實(shí)施例,通過(guò)指定“某輸入?yún)?shù)表示輸出參數(shù)的類型”作為函數(shù)定義文件,可取得對(duì)軟件的更詳細(xì)的處理日志,可進(jìn)行故障原因確定等更詳細(xì)地分析。第四實(shí)施例(其二)上述第四實(shí)施例(其一)中,解決了作為實(shí)例,即實(shí)例的接口,但僅通過(guò)此,不能取得“作為生成實(shí)例的基礎(chǔ)的信息”,即在面向?qū)ο缶幊讨械幕陬悇e信息的信息,作為處理日志。因此本實(shí)施例中,為將類別信息作為追加信息在處理日志中取得,說(shuō)明將類別ID與接口ID相關(guān)聯(lián)的情況。實(shí)現(xiàn)本實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件中,使用圖27的DllGetClaaObject的rclsid定義類別ID,為了該定義而使用叫作“clsid_is”的函數(shù)定義。該“clsid_is”是用于指定“在該DllGetClassObject中,以將clsid_is指定的參數(shù)設(shè)為類別ID的類別信息為基礎(chǔ),生成接口的實(shí)例”的函數(shù)定義。這樣,通過(guò)記述函數(shù)定義文件,本實(shí)施例的軟件評(píng)價(jià)系統(tǒng)可取得更詳細(xì)的信息,將其作為日志。圖31和圖32是表示實(shí)現(xiàn)本發(fā)明的第四實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理流程的流程圖,是與圖29不同的一個(gè)例子。開(kāi)始處理(步驟S3100)后,每次調(diào)用設(shè)定的函數(shù)/方法時(shí),在HDD中保存DLL名/接口名/函數(shù)名/方法名/調(diào)用時(shí)刻(步驟S3101),對(duì)應(yīng)于該調(diào)用的參數(shù)保存到HDD中(步驟S3102)。接著,判別在輸入?yún)?shù)的函數(shù)定義文件中是否有圖27和上述說(shuō)明的clsid_is,即“類別ID的定義”(步驟S3103),在存在的情況下,將該類別ID保存到存儲(chǔ)器上的其它區(qū)域中(步驟S3104)。接著,判別在輸入?yún)?shù)的函數(shù)定義文件中是否有圖27說(shuō)明的iid_is,即“參考接口ID的定義”(步驟S3105),在存在的情況下,將該參考接口ID保存到存儲(chǔ)器上的其它區(qū)域(步驟S3106)。調(diào)用一個(gè)實(shí)例的函數(shù)/方法(步驟S3107),方法內(nèi)部的處理結(jié)束后,在HDD中保存DLL名/接口名/函數(shù)名/方法名/結(jié)束時(shí)刻(步驟S3108),對(duì)應(yīng)于該調(diào)用的參數(shù)和返回值保存到HDD中(步驟S3109)。接著,根據(jù)圖27所示的函數(shù)定義文件判斷輸出參數(shù)是否被定義為指向接口的指針(步驟S3110),定義了的情況下,判斷參考接口ID是否保存到存儲(chǔ)器上(圖32的步驟S3200、S3201)。在參考接口ID未被保存的情況下,將其輸出參數(shù)識(shí)別為指向接口本身的指針,在存儲(chǔ)器上生成對(duì)應(yīng)于該指針的日志獲取代碼(步驟S3203),將該參數(shù)/返回值改寫(xiě)為日志獲取代碼的存儲(chǔ)器地址(步驟S3204)。參考接口ID被保存的情況下,將其輸出參數(shù)識(shí)別為指向由參考接口ID表示的接口的派生類型的指針,例如圖28所示的IGetInfo,在存儲(chǔ)器上生成對(duì)應(yīng)于該指針的日志取得代碼(步驟S3205),將該參數(shù)或返回值改寫(xiě)為日志獲取代碼的存儲(chǔ)器地址(步驟S3206)。判斷步驟S3204或步驟S3206的處理結(jié)束后,判別存儲(chǔ)器上是否保存類別ID(步驟S3207),保存了的情況下,將保存的類別ID與日志獲取代碼相關(guān)聯(lián)地保存到存儲(chǔ)器(步驟S3208)。接著,進(jìn)行函數(shù)/方法的返回處理(圖31的步驟S3112)。該處理繼續(xù)進(jìn)行,直到結(jié)束作為評(píng)價(jià)對(duì)象的程序(步驟S3113)。步驟S3208中通過(guò)保持類別ID,在調(diào)用IGetInfo內(nèi)的函數(shù)時(shí),以該類別信息為基礎(chǔ),在步驟S3101中可在日志中取得更詳細(xì)的信息。圖33表現(xiàn)出除圖30以外,以類別ID為基礎(chǔ),通過(guò)追加模塊名而獲取日志的情況(3303,3304,3305,3306)。本實(shí)施例的特征是將類別ID與接口參數(shù)相關(guān)聯(lián),識(shí)別參考接口ID,實(shí)際的類別ID(3000)與模塊名等詳細(xì)信息的關(guān)聯(lián)以公知技術(shù)為基礎(chǔ)進(jìn)行。例如,在WindowsOS中,該信息置于注冊(cè)表中,可以注冊(cè)表信息為基礎(chǔ)相互關(guān)聯(lián)。但是,也可使用其他方法進(jìn)行關(guān)聯(lián)。從以上說(shuō)明可知,根據(jù)本實(shí)施例,通過(guò)指定“某輸入?yún)?shù)指示輸出參數(shù)的類型”作為函數(shù)定義文件,可取得對(duì)軟件的更詳細(xì)的處理日志,可進(jìn)行故障原因確定等更詳細(xì)地分析。第五實(shí)施例(其一)根據(jù)上述第四實(shí)施例,可取得對(duì)應(yīng)于特殊COM的日志,但該特殊COM的情況下,作為處理日志對(duì)象的模塊名未定義在注冊(cè)表中,因此不能根據(jù)模塊名取得處理日志。因此,本實(shí)施例中,準(zhǔn)備將對(duì)應(yīng)于各個(gè)接口名(COM的處理內(nèi)容)的模塊名,作為追加定義,在生成處理日志時(shí)根據(jù)接口名判斷模塊名,并進(jìn)行寫(xiě)入。圖34是實(shí)現(xiàn)本發(fā)明的第五實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的函數(shù)定義文件的一個(gè)例子,通過(guò)一般廣泛應(yīng)用的IDL記述。關(guān)于本軟件評(píng)價(jià)系統(tǒng),利用標(biāo)志化該IDL后得到的類型庫(kù)文件作為函數(shù)定義文件。IDL用于接口的定義,標(biāo)準(zhǔn)情況下不能進(jìn)行模塊名的定義。例如,在多個(gè)模塊用同一接口定義提供接口、它們被選擇用作插入模塊的情況下,即便進(jìn)行接口定義,也只有被選擇調(diào)用這些插入模塊的模塊知道這些接口屬于哪個(gè)插入模塊。例如,在操作系統(tǒng)選擇調(diào)用驅(qū)動(dòng)程序用插入模塊的情況下,若操作系統(tǒng)進(jìn)行選擇的算法未公開(kāi),則不能在處理日志中取得關(guān)于與模塊名相關(guān)聯(lián)地調(diào)用的詳細(xì)信息。具體說(shuō),考慮MicrosoftWindows操作系統(tǒng)上搭載的通用打印機(jī)驅(qū)動(dòng)程序的插入模塊等的情況。其中,這些插入模塊與用戶操作相關(guān)聯(lián)地被選擇調(diào)用的情況居多。例如,在打印機(jī)驅(qū)動(dòng)程序中,用戶從連接的多個(gè)打印機(jī)中選擇用哪個(gè)打印機(jī)輸出,調(diào)用與該選擇操作具有一對(duì)一對(duì)應(yīng)關(guān)系的插入模塊。此時(shí),如果存在除IDL的接口定義以外,可測(cè)知“響應(yīng)本次操作而調(diào)用該模塊”,并指示日志取得程序該信息可用的方式,則使用該方式,可取得也包含上述插入模塊的模塊名的處理日志。圖35是對(duì)庫(kù)名定義模塊名的函數(shù)定義文件的例子,3500定義庫(kù)名,3501定義放置模塊的文件夾名、3502中定義為模塊名。圖36是對(duì)接口名定義模塊名的函數(shù)定義文件的例子,3600定義接口名、3601定義放置模塊的文件夾名、3602定義模塊名。本實(shí)施例中用簡(jiǎn)單的文本文件表示出圖35到圖36的模塊名的追加定義,但本實(shí)施例特征是,可對(duì)IDL這種“定義DLL/接口/函數(shù)/方法的標(biāo)準(zhǔn)格式”進(jìn)行其它格式的追加定義,并以其為基礎(chǔ)取得函數(shù)/方法的日志,追加定義可以不是簡(jiǎn)單的文本文件,而用HTML、XML等標(biāo)記語(yǔ)言記述。圖37是表示實(shí)現(xiàn)本發(fā)明的第五實(shí)施例的日志獲取方法的軟件評(píng)價(jià)系統(tǒng)的處理流程的流程圖,最好地表現(xiàn)出本實(shí)施例的特征。開(kāi)始處理(步驟S3700)后,每次調(diào)用設(shè)定的函數(shù)/方法時(shí),在HDD中保存DLL名/接口名/函數(shù)名/方法名/調(diào)用時(shí)刻(步驟S3701),對(duì)應(yīng)于該調(diào)用的參數(shù)保存到HDD中(步驟S3702)。接著,判別在輸入?yún)?shù)的函數(shù)定義文件中是否存在圖35到圖36說(shuō)明的模塊名的追加定義(步驟S3703),在存在的情況下,將該模塊名保存到存儲(chǔ)器上的其它區(qū)域中(步驟S3704)。調(diào)用一個(gè)實(shí)例的函數(shù)/方法(步驟S3705),方法內(nèi)部的處理結(jié)束后,在HDD中保存DLL名/接口名/函數(shù)名/方法名/結(jié)束時(shí)刻(步驟S3706),對(duì)應(yīng)于該調(diào)用的參數(shù)和返回值保存到HDD中(步驟S3707)。接著,進(jìn)行函數(shù)/方法的返回處理(步驟S3708)。該處理繼續(xù)進(jìn)行,直到結(jié)束作為評(píng)價(jià)對(duì)象的程序(步驟S3709)。這樣,以與函數(shù)定義不同的格式追加定義模塊名,以其為基礎(chǔ)取得處理日志,從而對(duì)于例如插入模塊與用戶操作相關(guān)聯(lián)地被選擇調(diào)用的情況,可取得也包含插入模塊的模塊名形式的處理日志。通過(guò)具有該功能的API跟蹤器,可對(duì)于軟件取得必定包含模塊名的形式的處理日志,可進(jìn)行故障原因確定等更詳細(xì)地分析。第五實(shí)施例(其二)在上述第五實(shí)施例(其一)中,模塊名的追加定義以文本文件進(jìn)行,但不限定于此,也可包括用戶能夠選擇模塊定義的用戶接口。作為實(shí)現(xiàn)方法,包括用戶可選擇圖35到圖36的路徑和模塊名的設(shè)定的用戶接口,也可以包括可從多個(gè)模塊名追加定義文本文件中進(jìn)行選擇的用戶接口。第五實(shí)施例(其三)在上述第五實(shí)施例(其一)和(其二)中,用戶指定或選擇模塊名的追加定義,但不限定于此,可從操作系統(tǒng)包括的接口取得追加的模塊定義。例如,在Microsoft的.NETFramework中,各模塊包含XML形式的模塊定義數(shù)據(jù),模塊定義數(shù)據(jù)由操作系統(tǒng)的接口取得。該情況下,對(duì)于從操作系統(tǒng)取得的模塊定義中所示的模塊,以導(dǎo)入函數(shù)地址表和導(dǎo)出函數(shù)地址表等在模塊內(nèi)部準(zhǔn)備的首標(biāo)(header)信息為基礎(chǔ),該模塊內(nèi)安裝的函數(shù)/方法被再指向在存儲(chǔ)器上的日志取得例行程序,以再取得更詳細(xì)地日志信息。例如,Microsoft的Windows操作系統(tǒng)中,通過(guò)該功能,關(guān)于通常的DLL上安裝的導(dǎo)出函數(shù)的調(diào)用、COM接口中安裝的方法的調(diào)用、.NET組件上安裝的方法的調(diào)用這三點(diǎn),可按時(shí)間序列在1個(gè)日志數(shù)據(jù)內(nèi)并列全部的信息。其他實(shí)施例本發(fā)明可適用于多個(gè)設(shè)備(例如主計(jì)算機(jī)、接口設(shè)備、讀出器、打印機(jī)等)構(gòu)成的系統(tǒng),也可適用于1個(gè)設(shè)備構(gòu)成的裝置(例如復(fù)印機(jī)、傳真機(jī)裝置等)。當(dāng)然本發(fā)明的目的也可通過(guò)向系統(tǒng)或裝置提供記錄實(shí)現(xiàn)上述實(shí)施例的功能的軟件的程序代碼的存儲(chǔ)媒體,由該系統(tǒng)或裝置的計(jì)算機(jī)(或CPU、MPU)讀出并執(zhí)行存儲(chǔ)媒體上存儲(chǔ)的程序代碼來(lái)實(shí)現(xiàn)。此時(shí),從存儲(chǔ)媒體讀出的程序代碼自身實(shí)現(xiàn)上述實(shí)施例的功能,存儲(chǔ)該程序代碼的存儲(chǔ)媒體構(gòu)成本發(fā)明。作為供給程序代碼的存儲(chǔ)媒體,例如可使用軟盤(pán)(注冊(cè)商標(biāo))、硬盤(pán)、光盤(pán)、光磁盤(pán)、CD-ROM、CD-R、磁帶、非易失性存儲(chǔ)卡、ROM等。當(dāng)然也包含下面這種情況通過(guò)執(zhí)行計(jì)算機(jī)讀出的程序代碼,不僅實(shí)現(xiàn)上述實(shí)施例的功能,而且根據(jù)該程序代碼的指示,計(jì)算機(jī)上運(yùn)行的OS(操作系統(tǒng))等執(zhí)行實(shí)際處理的一部分或全部,通過(guò)該處理實(shí)現(xiàn)上述實(shí)施例的功能。另外,也包含下面的情況從存儲(chǔ)媒體讀出的程序代碼寫(xiě)入插入計(jì)算機(jī)的功能擴(kuò)張板、連接計(jì)算機(jī)的功能擴(kuò)張單元上包括的存儲(chǔ)器后,根據(jù)該程序代碼的指示,由該功能擴(kuò)張板、功能擴(kuò)張單元上包括的CPU等執(zhí)行實(shí)際處理的一部分或全部,通過(guò)該處理實(shí)現(xiàn)上述實(shí)施例的功能。本發(fā)明不限定于上述實(shí)施例,并且在本發(fā)明的精神和范圍內(nèi)可進(jìn)行各種改變和修改。因此為了向公眾給出本發(fā)明的范圍,形成下面的權(quán)利要求。權(quán)利要求1.一種用于獲取在包含執(zhí)行規(guī)定處理的函數(shù)的程序執(zhí)行中的日志的日志獲取方法,包括識(shí)別在執(zhí)行上述程序時(shí)調(diào)用的操作系統(tǒng)內(nèi)的函數(shù)中的指定函數(shù)的步驟;將被加載的執(zhí)行上述規(guī)定處理的函數(shù)的地址與上述指定的操作系統(tǒng)內(nèi)的函數(shù)的地址改寫(xiě)為用于獲取日志的函數(shù)的地址的步驟,其中上述用于獲取日志的函數(shù)包括調(diào)用執(zhí)行上述規(guī)定處理的函數(shù)和上述指定的操作系統(tǒng)內(nèi)的函數(shù),執(zhí)行該規(guī)定處理后,將接收的執(zhí)行結(jié)果傳遞到上述程序中的步驟;記錄調(diào)用執(zhí)行上述規(guī)定處理的函數(shù)和上述指定的操作系統(tǒng)內(nèi)的函數(shù)時(shí)的規(guī)定信息的步驟;和記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟。2.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于調(diào)用執(zhí)行上述規(guī)定處理的函數(shù)和上述指定的操作系統(tǒng)內(nèi)的函數(shù)時(shí)的規(guī)定信息至少包括調(diào)用函數(shù)的函數(shù)名、調(diào)用時(shí)刻、調(diào)用時(shí)的參數(shù)、和調(diào)用時(shí)的指針參數(shù)所指示的存儲(chǔ)器內(nèi)容之一。3.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息至少包含接收時(shí)刻、接收時(shí)的參數(shù)、接收時(shí)的返回值和接收時(shí)的指針參數(shù)所指示的存儲(chǔ)器內(nèi)容之一。4.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于進(jìn)行上述規(guī)定處理的函數(shù)的地址按提供該函數(shù)的每個(gè)動(dòng)態(tài)鏈接庫(kù)而記載在導(dǎo)入函數(shù)地址表中。5.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于還包括從執(zhí)行上述規(guī)定處理的函數(shù)的地址中選擇將被改寫(xiě)為上述用于獲取日志的函數(shù)的地址的地址的步驟,上述改寫(xiě)步驟改寫(xiě)在上述選擇步驟中選擇的函數(shù)地址。6.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于還包括定義1個(gè)或多個(gè)規(guī)定模塊的步驟,和判別上述函數(shù)的調(diào)用是否經(jīng)由該定義模塊進(jìn)行的步驟,在經(jīng)由該定義模塊進(jìn)行的情況下,從記錄對(duì)象中排除調(diào)用該函數(shù)時(shí)的上述規(guī)定信息。7.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于還包括定義操作系統(tǒng)中包含的1個(gè)或多個(gè)規(guī)定模塊的步驟,和判別上述函數(shù)的調(diào)用所經(jīng)由的模塊的步驟,在經(jīng)由該定義模塊以外的、操作系統(tǒng)中包含的模塊的情況下,從記錄對(duì)象中排除調(diào)用該函數(shù)時(shí)的上述規(guī)定信息。8.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于在上述規(guī)定信息是結(jié)構(gòu)的情況下,對(duì)應(yīng)于該結(jié)構(gòu)所指定的大小地記錄在從存儲(chǔ)該結(jié)構(gòu)的存儲(chǔ)器區(qū)域的開(kāi)頭開(kāi)始、跳過(guò)該結(jié)構(gòu)大小后的存儲(chǔ)器區(qū)域中所存儲(chǔ)的信息。9.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于在上述規(guī)定信息是結(jié)構(gòu)的情況下,將從存儲(chǔ)該結(jié)構(gòu)的存儲(chǔ)器區(qū)域的開(kāi)頭開(kāi)始、跳過(guò)對(duì)該結(jié)構(gòu)指定的偏移量后的存儲(chǔ)器區(qū)域中所存儲(chǔ)的信息作為所定義的數(shù)據(jù)類型的數(shù)據(jù)來(lái)記錄。10.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于定義哪個(gè)模塊的哪個(gè)函數(shù)的規(guī)定信息中的哪個(gè)信息表示對(duì)象的信息、哪個(gè)信息表示對(duì)象的類別ID,在函數(shù)調(diào)用中,根據(jù)對(duì)象的類別ID,記錄在該函數(shù)的規(guī)定信息中存儲(chǔ)的對(duì)象的信息。11.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于定義哪個(gè)模塊的哪個(gè)函數(shù)的規(guī)定信息中的哪個(gè)信息表示對(duì)象的信息、哪個(gè)信息表示對(duì)象的接口ID,在函數(shù)調(diào)用中,根據(jù)對(duì)象的接口ID,記錄在該函數(shù)的規(guī)定信息中存儲(chǔ)的對(duì)象的信息。12.根據(jù)權(quán)利要求1所述的日志獲取方法,其特征在于準(zhǔn)備對(duì)應(yīng)于一個(gè)庫(kù)或各接口的模塊名的追加定義,在調(diào)用函數(shù)時(shí),參照該追加定義記錄模塊名。13.一種用于獲取在包含執(zhí)行規(guī)定處理的函數(shù)的程序執(zhí)行中的日志的日志獲取方法,包括從加載執(zhí)行上述規(guī)定處理的函數(shù)時(shí)的地址中識(shí)別作為具有規(guī)定偏移量的區(qū)域的指定區(qū)域的步驟;將上述加載的執(zhí)行上述規(guī)定處理的函數(shù)的地址改寫(xiě)為用于獲取日志的函數(shù)的地址的步驟,其中上述用于獲取日志的函數(shù)包括調(diào)用執(zhí)行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定的處理后,將接收的執(zhí)行結(jié)果傳遞到上述程序的步驟;記錄調(diào)用執(zhí)行上述規(guī)定處理的函數(shù)時(shí)的規(guī)定信息的步驟;記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟;和讀出并記錄上述指定區(qū)域的數(shù)據(jù)的步驟。14.一種用于獲取在包含執(zhí)行規(guī)定處理的第一函數(shù)的程序執(zhí)行中的日志的日志獲取方法,包括從在執(zhí)行上述程序時(shí)、僅由該程序的執(zhí)行文件直接調(diào)用的上述第一函數(shù)所調(diào)用的第二函數(shù)中識(shí)別指定的第二函數(shù)的步驟;將通過(guò)上述第一函數(shù)調(diào)用而加載的上述指定的第二函數(shù)的地址改寫(xiě)為用于獲取日志的函數(shù)的地址的步驟,其中上述用于獲取日志的函數(shù)包括調(diào)用上述指定的第二函數(shù),執(zhí)行該規(guī)定的處理后,接收?qǐng)?zhí)行結(jié)果的步驟;記錄調(diào)用上述指定的第二函數(shù)時(shí)的規(guī)定信息的步驟;和記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟。15.一種用于獲取包含執(zhí)行規(guī)定處理的第一函數(shù)的程序執(zhí)行中的日志的日志獲取方法,包括識(shí)別在執(zhí)行上述程序時(shí)、僅由該程序的執(zhí)行文件直接調(diào)用的上述第一函數(shù)所調(diào)用的第二函數(shù)中所設(shè)定的ID的步驟;將通過(guò)上述第一函數(shù)調(diào)用而加載的、設(shè)定了上述ID的第二函數(shù)的地址改寫(xiě)為用于獲取日志的函數(shù)的地址的步驟,其中上述用于獲取日志的函數(shù)包括調(diào)用設(shè)定了上述ID的第二函數(shù),執(zhí)行該規(guī)定的處理后,接收?qǐng)?zhí)行結(jié)果的步驟;將調(diào)用設(shè)定了上述ID的第二函數(shù)時(shí)的規(guī)定信息和上述設(shè)定的ID一起記錄的步驟;和將接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息與上述設(shè)定的ID一起記錄的步驟。16.一種用于獲取包含執(zhí)行規(guī)定處理的方法的程序執(zhí)行中的日志的日志獲取方法,包括從執(zhí)行上述程序時(shí)調(diào)用的操作系統(tǒng)內(nèi)的方法中識(shí)別指定的方法的步驟;將所加載的執(zhí)行上述規(guī)定處理的方法的地址和上述指定的操作系統(tǒng)內(nèi)的方法的地址改寫(xiě)為用于獲取日志的方法的地址的步驟,其中上述用于獲取日志的方法包括調(diào)用執(zhí)行上述規(guī)定處理的方法和上述指定的操作系統(tǒng)內(nèi)的方法,執(zhí)行該規(guī)定的處理后,將接收的執(zhí)行結(jié)果傳遞到上述程序的步驟;記錄調(diào)用執(zhí)行上述規(guī)定處理的方法和上述指定的操作系統(tǒng)內(nèi)的方法時(shí)的規(guī)定信息的步驟;和記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟。17.根據(jù)權(quán)利要求16所述的日志獲取方法,其特征在于調(diào)用執(zhí)行上述規(guī)定處理的方法和上述指定的操作系統(tǒng)內(nèi)的方法時(shí)的規(guī)定信息至少包括調(diào)用方法的方法名、調(diào)用時(shí)刻、調(diào)用時(shí)的參數(shù)和調(diào)用時(shí)的指針參數(shù)所指示的存儲(chǔ)器內(nèi)容之一。18.根據(jù)權(quán)利要求16所述的日志獲取方法,其特征在于接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息至少包含接收時(shí)刻、接收時(shí)的參數(shù)、接收時(shí)的返回值和接收時(shí)的指針參數(shù)所指示的存儲(chǔ)器內(nèi)容之一。19.根據(jù)權(quán)利要求16所述的日志獲取方法,其特征在于執(zhí)行上述規(guī)定處理的方法的地址按提供該方法的每個(gè)接口而記載在虛擬地址表中。20.根據(jù)權(quán)利要求16所述的日志獲取方法,其特征在于還包括從執(zhí)行上述規(guī)定處理的方法的地址中選擇將被改寫(xiě)為上述用于獲取日志的方法的地址的地址的步驟,上述改寫(xiě)步驟改寫(xiě)在上述選擇步驟中選擇的方法的地址。21.一種用于獲取包含執(zhí)行規(guī)定處理的方法的程序執(zhí)行中的日志的日志獲取方法,包括從加載執(zhí)行上述規(guī)定處理的方法時(shí)的地址中識(shí)別作為具有規(guī)定偏移量的區(qū)域的指定區(qū)域的步驟;將上述加載的執(zhí)行上述規(guī)定處理的方法的地址改寫(xiě)為用于獲取日志的方法的地址的步驟,其中上述用于獲取日志的方法包括調(diào)用執(zhí)行上述規(guī)定處理的方法,執(zhí)行該規(guī)定的處理后,將接收的執(zhí)行結(jié)果傳遞到上述程序的步驟;記錄調(diào)用執(zhí)行上述規(guī)定處理的方法時(shí)的規(guī)定信息的步驟;記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟;和讀出并記錄上述指定區(qū)域的數(shù)據(jù)的步驟。22.一種用于獲取包含執(zhí)行規(guī)定處理的第一方法的程序執(zhí)行中的日志的日志獲取方法,包括從執(zhí)行上述程序時(shí)、僅由該程序的執(zhí)行文件直接調(diào)用的上述第一方法所調(diào)用的第二方法中識(shí)別指定的第二方法的步驟;將通過(guò)上述第一方法調(diào)用而加載的上述指定的第二方法的地址改寫(xiě)為用于獲取日志的方法的地址的步驟,其中上述用于獲取日志的方法包括調(diào)用上述指定的第二方法,執(zhí)行該規(guī)定的處理后,接收?qǐng)?zhí)行結(jié)果的步驟;記錄調(diào)用上述指定的第二方法時(shí)的規(guī)定信息的步驟;和記錄接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息的步驟。23.一種用于獲取包含執(zhí)行規(guī)定處理的第一方法的程序執(zhí)行中的日志的日志獲取方法,包括識(shí)別在執(zhí)行上述程序時(shí)、僅由該程序的執(zhí)行文件直接調(diào)用的上述第一方法所調(diào)用的第二方法中所設(shè)定的ID的步驟;將通過(guò)上述第一方法調(diào)用而加載的、設(shè)定了上述ID的第二方法的地址改寫(xiě)為用于獲取日志的方法的地址的步驟,其中上述用于獲取日志的方法包括調(diào)用設(shè)定了上述ID的第二方法,執(zhí)行該規(guī)定的處理后,接收?qǐng)?zhí)行結(jié)果的步驟;將調(diào)用設(shè)定了上述ID的第二方法時(shí)的規(guī)定信息和上述設(shè)定的ID一起記錄的步驟;和將接收上述執(zhí)行結(jié)果時(shí)的規(guī)定信息與上述設(shè)定的ID一起記錄的步驟。24.一種控制程序,使計(jì)算機(jī)實(shí)現(xiàn)權(quán)利要求1到23之一所述的日志獲取方法。25.一種存儲(chǔ)媒體,存儲(chǔ)權(quán)利要求1到23之一所述的控制程序。全文摘要提供一種日志獲取方法及其控制程序、存儲(chǔ)媒體,其中該日志獲取方法能夠容易獲取軟件的處理日志并且可減少用于調(diào)試分析的工時(shí)量。具體說(shuō),是一種包含函數(shù)的程序的日志獲取方法,包括識(shí)別程序執(zhí)行時(shí)調(diào)用的OS內(nèi)的函數(shù)中的指定函數(shù)的步驟;將進(jìn)行加載的上述規(guī)定處理的函數(shù)地址與上述指定的OS內(nèi)的函數(shù)的地址改寫(xiě)為用于日志獲取的函數(shù)的地址的步驟,用于上述日志獲取的函數(shù)包括調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)和上述指定的OS內(nèi)的函數(shù),將執(zhí)行的結(jié)果傳遞到上述程序的步驟,和記錄調(diào)用進(jìn)行上述規(guī)定處理的函數(shù)和上述指定的OS內(nèi)的函數(shù)時(shí)和獲取結(jié)果時(shí)的規(guī)定信息的步驟。文檔編號(hào)G06F11/28GK1534470SQ20041003335公開(kāi)日2004年10月6日申請(qǐng)日期2004年4月2日優(yōu)先權(quán)日2003年4月2日發(fā)明者飯塚利明,飯利明申請(qǐng)人:佳能株式會(huì)社
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
富源县| 深州市| 长沙市| 信阳市| 胶南市| 邹平县| 宁远县| 康乐县| 德州市| 巴林右旗| 花莲县| 屯门区| 永嘉县| 同江市| 凌云县| 双峰县| 察隅县| 莲花县| 台湾省| 彭阳县| 宝清县| 曲松县| 吉安县| 九龙城区| 辉县市| 赣州市| 湘西| 饶平县| 白银市| 太康县| 修武县| 缙云县| 镶黄旗| 云南省| 永安市| 临漳县| 惠安县| 通许县| 云龙县| 甘洛县| 时尚|