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

運行日志取得方法及程序、存儲介質的制作方法

文檔序號:6373227閱讀:148來源:國知局

專利名稱::運行日志取得方法及程序、存儲介質的制作方法
技術領域
:本發(fā)明涉及一種可取得被分成為多個模塊的軟件的處理運行日志的技術。
背景技術
:歷來,對于重現(xiàn)率低的軟件故障,是通過取得軟件的處理運行日志和分析該處理LOG而查清故障的原因并采取對策。然而,在取得上述現(xiàn)有的處理運行日志方面存在以下的問題。(1)為了在用戶的動作環(huán)境中也能繼續(xù)不斷地取得運行日志,必須對軟件的模塊本身進行加工增加處理運行日志取得例行程序,這將加大為取得處理運行日志的作業(yè)負擔。(2)由于處理運行日志的取得是針對每個模塊進行,生成的運行日志是以模塊為單位的,很難取得作為完全按照時間順序的運行日志的整個軟件的處理的。因此,作為對整個處理運行日志的預測不佳,分析運行日志一直到發(fā)現(xiàn)故障原因的過程極其耗費工時。
發(fā)明內容本發(fā)明為鑒于上述問題而完成的發(fā)明,其目的在于提供一種容易取得被分成為多個模塊的軟件的處理運行日志,并且可以削減用來分析軟件故障原因的工時的運行日志的取得方法,以及用于藉助計算機實現(xiàn)該方法的程序和存放該程序的存儲介質。為達到上述目的,本發(fā)明的運行日志取得方法具有如下的構成。即是一種取得具有進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志的運行日志取得方法,具有將加載了進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序,用來取得上述運行日志的函數(shù)包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;判斷在上述程序內的函數(shù)定義中,指針·參數(shù)是否是以規(guī)定的定義方法定義的工序;以及在以規(guī)定的定義方法定義指針·參數(shù)的場合,根據(jù)該定義方法,將該指針·參數(shù)所指的內存的內容作為運行日志進行記錄的工序。為達到上述目的,本發(fā)明的另一運行日志取得方法具有如下的構成。即是一種取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志的運行日志取得方法,具有將加載了進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù)包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將接收到的執(zhí)行結果轉送給上述程序的工序;將調用在上述選擇工序中被選擇的函數(shù)時的規(guī)定信息作為運行日志進行記錄的工序;以及將接收在上述選擇工序中被選擇的函數(shù)時的規(guī)定信息作為運行日志進行記錄的工序。本發(fā)明的其他特點和優(yōu)點可從參考下面的附圖的描述而了解,附圖各圖中同樣或類似的部件賦予同樣的標號。包括在本說明書中并構成其一個組成部分的附圖本發(fā)明的各個具體實施方式,并且與敘述一起用來說明本發(fā)明的原理。圖1為實現(xiàn)實施方式1的運行日志取得方法的計算機(軟件評價系統(tǒng))的構成的示圖。圖2為實施方式1的函數(shù)加載時的通常的內存構成的示圖。圖3為使用實施方式1的IATPatch時的內存構成的示圖。圖4A為使用實施方式1的IATPatch時的狀態(tài)的示圖。圖4B為實施方式1的運行日志取得處理的流程圖。圖5為使用實施方式1的IATPatch時的內部構成的示圖。圖6為實施方式1的COM服務器的接口的事例(instance)生成時的通常的內存構成的示圖。圖7為使用實施方式1的VTablePatch時的內存構成的示圖。圖8A為使用實施方式1的VTablePatch時的狀態(tài)的示圖。圖8B為實施方式1的運行日志取得處理的流程圖。圖9為實施方式1的軟件評價系統(tǒng)的內部構成的示圖。圖10為實施方式2的函數(shù)定義的一例的示圖。圖11為在實施方式2中,用來將指針·參數(shù)的數(shù)據(jù)的實體作為運行日志取得的IDL產(chǎn)生的記述的示圖。圖12為取得實施方式2的運行日志的場合的流程圖。圖13為在實施方式2中取得的運行日志數(shù)據(jù)的示圖。圖14為在實施方式3的函數(shù)定義中,用來將回叫函數(shù)等的不輸出函數(shù)作為運行日志取得的IDL產(chǎn)生的記述的示圖。圖15為實施方式3的軟件評價系統(tǒng)的內存構成的示圖。圖16為取得實施方式3的運行日志的場合的流程圖。圖17為在實施方式3中不進行圖14的定義的場合取得的運行日志數(shù)據(jù)的示圖。圖18為在實施方式3中利用圖14的定義取得的運行日志數(shù)據(jù)的示圖。圖19為在實施方式4中,用來將可變長數(shù)組的參數(shù)作為運行日志取得的IDL產(chǎn)生的記述的示圖。圖20為在實施方式4中,如圖19所示那樣取得定義函數(shù)時的運行日志的場合的流程圖。圖21為在實施方式4中取得的運行日志數(shù)據(jù)的示圖。圖22為在通常的函數(shù)定義中,不能取得參數(shù)的函數(shù)的例子的示圖。圖23為各結構體如何使用內存的示圖。圖24為在實施方式5的軟件評價系統(tǒng)中,用來取得如圖22那樣的函數(shù)的參數(shù)的運行日志的IDL產(chǎn)生的記述的示圖。圖25為取得實施方式5的運行日志的場合的流程圖。圖26為根據(jù)內存配置,表示結構體參數(shù)分析的細節(jié)的示圖。圖27為由實施方式5取得的運行日志數(shù)據(jù)的示圖。圖28為在通常的函數(shù)定義中,不能取得參數(shù)的函數(shù)的例子的示圖。圖29為各結構體如何配置內存的示圖。圖30為在實施方式6的軟件評價系統(tǒng)中,用來取得圖28那樣的函數(shù)的參數(shù)的運行日志的IDL產(chǎn)生的記述的示圖。圖31為取得實施方式6的運行日志的場合的流程圖。圖32為在實施方式6的軟件評價系統(tǒng)中,利用圖30的定義取得的運行日志數(shù)據(jù)的示圖。圖33為在實施方式7中,用來設定開始運行日志取得的函數(shù)/方法的用戶接口的示圖。圖34為取得實施方式7的運行日志的場合的流程圖。圖35為用來設定停止實施方式8中的運行日志取得的函數(shù)/方法的用戶接口的示圖。圖36為取得實施方式8的運行日志的場合的流程圖。圖37為設定的只在以實施方式9的錯誤而結束的場合追加使用觸發(fā)功能的設定的用戶接口的示圖。圖38為實施方式9的函數(shù)/方法的錯誤定義的內容的示圖。圖39為取得實施方式9的運行日志的場合的流程圖。圖40為實施方式9的通常的運行日志取得處理的詳細流程圖。圖41為取得實施方式9的運行日志的場合的流程圖。圖42為對實施方式10的接口和方法進行樹形顯示的用戶接口的示圖。圖43為取得實施方式10的運行日志之際的處理的流程圖。圖44為對實施方式11的接口和方法進行樹形顯示的用戶接口的示圖。圖45為取得實施方式11的運行日志之際的處理的流程圖。圖46為將實施方式12的運行日志連日期一起進行分割保存的場合的處理的流程圖。圖47為將實施方式13的運行日志按照大小或個數(shù)進行分割保存的場合的處理的流程圖。圖48為在實施方式14中,將取得的運行日志存儲于一定數(shù)量的內存中的場合的內存的概圖。圖49為在實施方式14中,將取得的運行日志存儲于一定數(shù)量的內存中的場合的運行日志取得的流程圖。具體實施例方式下面參照附圖對本發(fā)明的優(yōu)選實施方式予以詳細說明。本實施方式,是在從某一模塊調用存在于另一個模塊內的函數(shù)時的結構的、利用保存于內存中的輸入函數(shù)地址或虛擬函數(shù)地址表(VirtualAddressTable)、掛接模塊間的函數(shù)調用并記錄在運行日志中,這樣可不對軟件的模塊本身進行加工而將整個軟件的處理作為時間順序的運行日志取得。下面具體說明之。<系統(tǒng)構成>圖1為實現(xiàn)本發(fā)明的實施方式的運行日志取得方法的計算機(軟件評價系統(tǒng))的構成的示圖。為簡化說明起見,假設在本實施方式中,本軟件評價系統(tǒng)是構筑在一臺PC的內部,本發(fā)明的運行日志取得方法的特征是不管是構筑于一臺PC的內部還是由多個PC構筑的網(wǎng)絡系統(tǒng),都有效。在搭載有本軟件評價系統(tǒng)的計算機中安裝有CPU1、芯片組2、RAM3、硬盤控制器4、顯示控制器5、硬盤驅動器6、CD-ROM驅動器7及顯示器8。另外,設置有連接CPU1和芯片組2的信號線11、連接芯片組2和RAM3的信號線12、連接芯片組2和各種外圍設備的外圍設備總線13、連接硬盤控制器4和硬盤驅動器6的信號線14、連接硬盤控制器4和CD-ROM驅動器7的信號線15以及連接顯示控制器5和顯示器8的信號線16。<函數(shù)處理的處理運行日志的取得>為了說明實現(xiàn)本發(fā)明的實施方式1的運行日志取得方法的軟件評價系統(tǒng),首先利用圖2,對分成為多個模塊的軟件在通常的狀態(tài)下如何加載到內存中予以說明。通常,被分成為多個模塊的軟件,被分成為進行整體控制的執(zhí)行文件EXE(23)和作為模塊存在并擔負補充EXE的任務的動態(tài)鏈接庫DLL(27),在內存中加載EXE和DLL。EXE由代碼段(28)和數(shù)據(jù)段(29)、輸入函數(shù)地址表(22)構成。此外,引人函數(shù)地址表被函數(shù)所屬的DLL分開(21、24),在每個DLL中寫有加載各個函數(shù)的地址(30~35)。DLL函數(shù)的實體按每個DLL分開(25、26)加載,各個函數(shù)作為該DLL的一部分被加載(36~41)。在此圖中,的示例是一個EXE使用A.DLL及B.DLL兩個動態(tài)鏈接庫內的函數(shù),實際使用的函數(shù)為FuncAA、FuncAB、FuncAC、FuncBA、FuncBB、FuncBC等六個。位于EXE的代碼段內的代碼調用函數(shù)FuncAA的場合,首先讀入寫在引人函數(shù)地址表內的FuncAA的地址(30)。此處實際上寫入作為A.DLL的一部分而讀入的FuncAA代碼(36)的地址,EXE的代碼可以通過調用該地址而調用A.DLL的FuncAA。圖3為實施方式1的內存構成的示圖,與圖2的不同之處在于對運行日志取得用的代碼采用所謂的IATPatch(ImportAddressTablePatch)的方法,對函數(shù)調用進行重定向。運行日志的取得一開始,就在內存內加載作為IATPatch用的DLL的C.DLL(58)。C.DLL將引人函數(shù)地址表(52)內寫入的函數(shù)的地址改寫為作為C.DLL內的運行日志取得代碼的FuncCAA、FuncCAB、FuncCAC、FuncCBA、FuncCBB、FuncCBC的地址(61~66)。C.DLL內的FuncCAA、FuncCAB、FuncCAC、FuncCBA、FuncCBB、FuncCBC的代碼(73~78),在記錄運行日志的同時,調用被加載到應該接受原來的函數(shù)調用的內存中的、作為該函數(shù)的FuncAA、FuncAB、FuncAC、FuncBA、FuncBB、FuncBC(67~72)。圖4A為圖3的IATPatch的處理的示圖,而圖4B為運行日志取得處理的流程的流程圖。為了簡化說明起見,在此圖中,在EXE調用A.DLL內的FuncAA之際,IATPatch產(chǎn)生的運行日志取得代碼是如何運行的示例。EXE(91)一調用FuncAA(94),位于C.DLL內的運行日志取得代碼將DLL名/函數(shù)名保存到內存中(步驟S402)、將調用時間保存于內存中、將調用時的參數(shù)保存于內存中、將調用時的指針參數(shù)指示的內存內容保存于另一個內存中(95、步驟S403)。其后,C.DLL調用本來應被調用的A.DLL(93)內的FuncAA(99、步驟S404)。一旦A.DLL的FuncAA處理(97)結束,并將控制返回C.DLL(98)的話,C.DLL就將返回時的時間保存于內存中,將返回值保存于內存中,并將返回時的指針參數(shù)指示的內存內容保存于另一個內存中(99)。其后,C.DLL,將保存的運行日志信息寫入文件(100、步驟S405),像A.DLL的FuncAA通常結束那樣返回EXE(101)。圖5為實現(xiàn)實施方式1的運行日志取得方法的軟件評價系統(tǒng)的內部構成的示圖。通常,執(zhí)行形式的EXE(113)調用DLL-1(116)及DLL-2(117)內的函數(shù),此處,嵌入被稱為API追蹤程序(114)的運行日志取得代碼,生成處理運行日志(115)。API追蹤程序(114),根據(jù)記述DLL-1及DLL-2的函數(shù)定義文件(111)和通過改寫哪一個DLL的哪一個函數(shù)的引人函數(shù)地址表而取得運行日志的設定情景(追蹤情景112)而運作。<對方法處理的處理運行日志的取得>下面,在實現(xiàn)實施方式1的運行日志取得方法的軟件評價系統(tǒng)中,為了說明執(zhí)行文件EXE(113)在COM(構件對象模型)服務器中生成輸出的接口的事例(instance)時是如何被加載到內存中,首先參照圖6對在通常的狀態(tài)下如何加載到內存的情況予以說明。通常,進行接口的事例(instance)一生成的話,在COM服務器內,生成要求的接口(121、122)和其方法(在面向對象編程中,記述了對象執(zhí)行的過程的程序130~135),這兩者都被加載到內存中。此處,virtualaddresstable(虛擬地址表118、120)在生成的每一個事例(instance)中作成,并被送到執(zhí)行生成要求的EXE。在此virtualaddresstable中寫有各個方法的生成地址(124~129)。EXE利用這些信息對各個接口進行調用。在此圖中,表示的是一個EXE(119)生成InterfaceA(121)和InterfaceB(122)兩個接口的事例(instance),并使用該接口內部的方法的示例,實際使用的方法為MethodAA、MethodAB、MethodAC、MethodBA、MethodBB、MethodBC(130~135)。在EXE的代碼調用函數(shù)MethodAA的場合,首先讀出寫在virtualaddresstable內的MethodAA的地址(124)。此處實際上寫有作為COM服務器的InterfaceA的一部分而生成的MethodAA代碼(130)的地址,通過調用該地址,EXE的代碼可以調用InterfaceA的MethodAA。圖7為使用實施方式1的軟件評價系統(tǒng)的內存構成的示圖,與圖6的不同之處在于對運行日志取得用的代碼采用所謂的VTablePatch(virtualaddresstablePatch)的方法,對方法調用進行重定向。運行日志的取得一開始,就在內存內加載作為VTablePatch用的DLL(143)。此DLL將寫在virtualaddresstable(136、138)內的方法的地址改寫為作為DLL內的運行日志取得代碼的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C的地址(145~150)。DLL(143)內的MethodA′A、MethodA′B、MethodA′C、MethodB′A、MethodB′B、MethodB′C的代碼(157~162),在記錄運行日志的同時,調用被加載到應該接受原來的函數(shù)調用的內存中的、作為該函數(shù)的MethodAA、MethodAB、MethodAC、MethodBA、MethodBB、MethodBC(157~162)。圖8A為圖7的VTablePateh處理的示圖,圖8B為運行日志取得處理的流程的流程圖。為了簡化說明起見,在此圖中,表示在EXE調用COM服務器內的InterfaceA的MethodAA之際,VTablePatch產(chǎn)生的運行日志取得代碼是如何運作的示例。EXE(163)一調用MethodAA(166),位于DLL(164)內的運行日志取得代碼將模塊名/接口名/方法名保存到內存中(步驟S802)、將調用時間保存于內存中、將調用時的參數(shù)保存于內存中、將調用時的指針參數(shù)指示的內存內容保存于另一個內存中(167、步驟S802)。其后,DLL(164)調用本來應該調用的COM服務器(165)內的MethodAA(168、步驟S804)。如COM服務器(165)的MethodAA處理(169)結束,并將控制返回DLL(164)的話,DLL(164)就將返回時的時間保存于內存中,將返回值保存于內存中,并將返回時的指針參數(shù)指示的內存內容保存于另一個內存中(171)。其后,DLL將保存的運行日志信息寫入文件(172、步驟S805)中,像COM服務器(165)的MethodAA通常結束那樣返回EXE(163)(173)。圖9為實施方式1的軟件評價系統(tǒng)的內部構成的示圖。通常,執(zhí)行形式的EXE(176)調用COM服務器1(179)及COM服務器2(180)內的方法,此處,嵌入被稱為API追蹤程序(177)的運行日志取得代碼,生成處理運行日志(178)。API追蹤程序(177),根據(jù)記述COM服務器1(179)及COM服務器2(180)的函數(shù)定義文件(174)和通過改寫哪一個COM服務器的哪一個方法的virtualaddresstable取得運行日志的設定情景(175)而運作。從以上的說明可知,根據(jù)本實施方式的運行日志取得方法,在取得被分成為多個模塊的軟件的處理運行日志中,可不對軟件的模塊本身進行改變而將模塊內準備的函數(shù)/方法的調用作為運行日志進行記錄,從而可以減少用于取得處理運行日志的作業(yè)負擔。另外,生成的運行日志,可以取得按照時間順序的運行日志,由于對運行日志的分析變得容易,可以削減用來分析軟件故障原因的工時。在本實施方式中,對通常不能徹底取得的指針·參數(shù)的數(shù)據(jù)作為二進制取得運行日志的場合予以說明。圖10為本實施方式的軟件評價系統(tǒng)的函數(shù)定義的一例,是利用一般廣泛使用的IDL記述的。在實現(xiàn)本實施方式的運行日志取得方法的軟件評價系統(tǒng)中,將此IDL權標(token)化的類型庫文件作為函數(shù)定義文件使用。圖11為在本實施方式的函數(shù)定義中,通過對指針·參數(shù)指定取得二進制,將指針·參數(shù)的數(shù)據(jù)的實體作為運行日志取得的IDL產(chǎn)生的記述的示圖。在FuncBinidIs函數(shù)的定義中,對long*lplParam聲明custum(PAT_PARAM_ATTR_ID,″binid_is()″)(201)。其中,PAT_PARAM_ATTR_ID(200),是在IDL之中為了本軟件評價系統(tǒng)利用的標識符。其中,通過定義″binid_is()″,根據(jù)此參數(shù)指示的指針,將參數(shù)的數(shù)據(jù)型大小(此處是long型)數(shù)量的數(shù)據(jù)作為二進制數(shù)據(jù)存儲于運行日志中。在FuncSizels函數(shù)的定義中,對int*lplParam聲明custum(PAT_PARAM_ATTR_ID,″size_is(dwCount)″)(202)。其中,通過定義″size_is(dwCount)″,此參數(shù)處理為具有作為第一參數(shù)的dwCount個數(shù)的數(shù)據(jù)。于是,根據(jù)此參數(shù)指示的指針,將(dwCount×參數(shù)的數(shù)據(jù)型大小(此處是int型))數(shù)量的數(shù)據(jù)作為二進制數(shù)據(jù)存儲于運行日志中。在FuncLengthls函數(shù)的定義中,對char*lpszParam聲明custum(PAT_PARAM_ATTR_ID,″length_is(dwLength)″)(203)。其中,通過定義″length_is(dwLength)″,此參數(shù)處理為具有作為第一參數(shù)的dwLength個數(shù)的數(shù)據(jù)。于是,根據(jù)此參數(shù)指示的指針,將(dwLenth×參數(shù)的數(shù)據(jù)型大小(此處是char型))數(shù)量的數(shù)據(jù)作為二進制數(shù)據(jù)存儲于運行日志中。在FuncBytesls函數(shù)的定義中,對void*lpParam聲明custum(PAT_PARAM_ATTR_ID,″bytes_is(dwSize)″)(204)。其中,通過定義″bytes_is(dwSize)″,此參數(shù)處理為具有作為第一參數(shù)的dwSize字節(jié)數(shù)量的數(shù)據(jù)。于是,根據(jù)此參數(shù)指示的指針,將dwSize的數(shù)量的數(shù)據(jù)作為二進制數(shù)據(jù)存儲于運行日志中。在FuncBytesls2函數(shù)的定義中,對void*lpParam聲明custum(PAT_PARAM_ATTR_ID,″bytes_is(12)″)(205)。其中,通過定義″bytes_is(12)″,此參數(shù)處理為具有指定的12字節(jié)數(shù)量的數(shù)據(jù)。于是,根據(jù)此參數(shù)指示的指針,將12字節(jié)的數(shù)量的數(shù)據(jù)作為二進制數(shù)據(jù)存儲于運行日志中。圖12為在本實施方式的軟件評價系統(tǒng)中,如圖11那樣地取得函數(shù)定義時的運行日志的場合的流程圖。處理一開始(步驟S1201),開始取得運行日志,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S1202)。其次,運行日志取得代碼,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S1203)。于是,判斷在函數(shù)定義中是否存在二進制取得的設定(步驟S1204),如存在的話,對保存的內存大小以各個定義方法(binid_is、size_is、length_is、bytes_is)為單位進行計算(步驟S1205),將指針·參數(shù)指示的內存的內容保存于算出的大小量的HDD中(步驟S1206)。接著,調用原來的函數(shù)(步驟S1207)。如從函數(shù)返回,運行日志取得代碼將返回時的時間、返回值及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S1208)。于是,判斷在函數(shù)定義中是否存在二進制取得的設定(步驟S1209),如存在的話,對保存的內存大小以各個定義方法(binid_is、size_is、length_is、bytes_is)為單位進行計算(步驟S1210),將指針·參數(shù)指示的內存的內容保存于算出的大小量的HDD中(步驟S1211)。如果有來自用戶的終止命令(步驟S1212),該處理就終止。圖13為在本實施方式的中,利用圖11的定義取得的運行日志數(shù)據(jù)的示圖。根據(jù)函數(shù)定義,在沒有二進制取得的設定的場合而可以取得的運行日志(210)是去掉DatalD的部分。于是,在進行二進制取得的設定的場合,可以取得DatalD及二進制數(shù)據(jù)的運行日志(211)。比如,如比較FuncSizels的運行日志,在沒有二進制取得的設定的場合,指針·參數(shù)lpParam指示的數(shù)據(jù)以int型只可能取得1個的量??墒牵瑢嶋H上,此數(shù)據(jù)指示的是10個int型數(shù)據(jù)的數(shù)組。因此,在有二進制取得的設定的場合,可以取得的int型數(shù)據(jù)的大小為4字節(jié)×10個的量,即共計40字節(jié)的數(shù)據(jù)。從以上的說明可知,根據(jù)本實施方式,通過將大小和指針·參數(shù)相關聯(lián),通常不能徹底取得的指針·參數(shù)的數(shù)據(jù)作為二進制的運行日志取得是可能的。在本實施方式中,對回叫函數(shù)等不輸出函數(shù)作為運行日志取得的場合予以說明。圖14為在本實施方式的函數(shù)定義中,用來將回叫函數(shù)等的不輸出函數(shù)作為運行日志取得的IDL產(chǎn)生的記述的示圖。在SetCallBack函數(shù)的定義中,對DWORDpfnFuncCallBack聲明custum(PAT_PARAM_ATTR_ID,″funcname_is(FuncCallBack)″)(221)。SetCallBack函數(shù),是對模塊設定回叫函數(shù)的函數(shù),DWORDpfnFuncCallBack是用來設定該回叫函數(shù)的地址的參數(shù)。其中,通過定義″funcname_is(FuncCallBack)″,運行日志取得處理,將傳送給此參數(shù)的值識別為FuncCallBack函數(shù)(222)的地址,并置換為運行日志取得處理的地址。另外,為了在運行日志取得處理時調用原來的回叫函數(shù),將原始值予以保存。由此,可以取得不輸出的回叫函數(shù)的運行日志。在GetFuncPointer函數(shù)的定義中,對DWORDpfnFuncInternal聲明custum(PAT_PARAM_ATTR_ID,″funcname_is(FuncInternal)″)(223)。GetFuncPointer函數(shù),是取得模塊內部的不輸出的函數(shù)的指針的函數(shù),DWORDpfnFuncInternal是用來取得該不輸出函數(shù)的指針的參數(shù)。其中,通過定義″funcname_is(FuncIntenal)″,運行日志取得處理,將傳送給此參數(shù)的值識別為FuncIntenal函數(shù)(224)的地址,并置換為運行日志取得處理的地址。另外,為了在運行日志取得處理時調用原來的回叫函數(shù),將原始值予以保存。由此,可以取得不輸出的回叫函數(shù)的運行日志。GetFuncPointeArray函數(shù)(225)是用來在FUNCPOINTERARRAY結構體(220)中取得模塊內部的不輸出的函數(shù)群的地址的函數(shù)。其中,對FUNCPOINTERARRAY的各成員的定義聲明custum(PAT_PARAM_ATTR_ID,″Funcname_is(FuncIntenal1~4)″)。其中,通過定義″funcname_is(FuncIntenal1~4)″,將傳送給此結構體的成員的值識別為FuncIntenal1~4函數(shù)(226)的地址,并置換為運行日志取得處理的地址。另外,為了在運行日志取得處理時調用原來的非輸出函數(shù),將原始值予以保存。由此,可以取得不輸出的模塊內部的函數(shù)組的運行日志。圖15為本實施方式的軟件評價系統(tǒng)的內存構成的示圖,與圖3的不同之處在于增加了隱函數(shù)的運行日志取得用的代碼。在A.DLL中的FuncAD(231)是不輸出函數(shù),因此,在ImportAddressTable(230)中也不存在。如此時對FuncAD定義funcname_is,在C.DLL中生成運行日志取得用的FuncCAD(232),在由本來的FuncAD的地址置換以返回的funcname_is定義的參數(shù)的值時,可使用FuncAD的地址。圖16為在本實施方式的軟件評價系統(tǒng)中,如圖14那樣取得函數(shù)定義時的運行日志的場合的流程圖。處理一開始(步驟S1601),開始取得運行日志,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S1602)。其次,運行日志取得代碼將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S1603)。于是,判斷在函數(shù)定義中是否存在funcname_is的設定(步驟S1604),如存在的話,從函數(shù)定義文件中取得由funcname_is定義的函數(shù)定義,根據(jù)該定義生成運行日志取得處理用的代碼(步驟S1605)。于是,保存funcname_is定義的值,并置換成生成的運行日志取得代碼的地址(步驟S1606)。接著,調用原來的函數(shù)(步驟S1607)。如從函數(shù)返回的話,運行日志取得代碼將返回時的時間、返回值及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S1608)。于是,判斷在函數(shù)定義中是否存在funcname_is的設定的設定(步驟S1609),如存在的話,從函數(shù)定義文件中取得由funcname_is定義的函數(shù)定義,根據(jù)該定義生成運行日志取得處理用的代碼(步驟S1610)。于是,保存funcname_is定義的值,置換生成的運行日志取得代碼的地址(步驟S1611)。如果有來自用戶的終止命令(步驟S1612),該處理就終止。如由funcname_is設定的參數(shù)置換生成的運行日志取得代碼的地址,其后使用該地址調用的原來的函數(shù)進行與通常的運行日志同樣的處理(即生成的運行日志取得代碼,調用不輸出的函數(shù),執(zhí)行處理,在傳送所接收的執(zhí)行結果的同時,將調用不輸出的函數(shù)之際的規(guī)定信息和接收執(zhí)行結果之際的規(guī)定信息作為運行日志予以記錄。圖17為在本實施方式所軟件評價系統(tǒng)中,在不進行圖14的定義的場合取得的運行日志數(shù)據(jù)的示圖。在函數(shù)定義文件中不進行設定的場合,不能取得回叫函數(shù)、不輸出的內部函數(shù)的運行日志。圖18為在本實施方式的軟件評價系統(tǒng)中,利用圖14的定義取得的運行日志數(shù)據(jù)的示圖。因為在函數(shù)定義文件中,設定成為取得回叫函數(shù)、不輸出的內部函數(shù),所以可以取得SetCallBack函數(shù)、FuncIntenal函數(shù)、FuncIntenal4函數(shù)等非輸出函數(shù)的運行日志。這樣,根據(jù)本實施方式,就可以產(chǎn)生可取得以通常的方法不能取得的非輸出函數(shù)的運行日志的效果。在本實施方式中,說明作為在通常的方法中不能取得的非輸出函數(shù)的運行日志取得可變長數(shù)組的參數(shù)的運行日志的情況。圖19為在本實施方式的函數(shù)定義中,用來將可變長數(shù)組的參數(shù)作為運行日志取得的IDL產(chǎn)生的記述的示圖。在FuncArrayls函數(shù)的定義中,對int*lpnParam聲明custum(PAT_PARAM_ATTR_ID,″array_is(dwCount)″)(240)。其中,通過定義″array_is(dwCount)″,此指針·參數(shù)處理為作為第一參數(shù)的dwCount個數(shù)的int型數(shù)組。于是,將此指針·參數(shù)指示的指針作為int型的dwCount個數(shù)組,將數(shù)據(jù)存儲于運行日志中。圖20為在本實施方式的軟件評價系統(tǒng)中,如圖19所示那樣取得定義函數(shù)時的運行日志的場合的流程圖。處理一開始(步驟S2001),開始取得運行日志,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S2002)。其次,判斷在函數(shù)定義中是否存在可變長數(shù)組取得(array_is)的設定(步驟S2003),如存在的話,將指針·參數(shù)定義的參數(shù)作為數(shù)組的定義進行處理(步驟S2004)、將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S2005)。于是,接著,調用原來的函數(shù)(步驟S2006)。如從函數(shù)返回,運行日志取得編碼判斷在函數(shù)定義中是否存在可變長數(shù)組取得(array_is)的設定(步驟S2007),如存在的話,將由指針·參數(shù)定義的參數(shù)定義為數(shù)組(步驟S2008),將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S2009)。如果有來自用戶的終止命令(步驟S2010),該處理就終止。圖21為在本實施方式的軟件評價系統(tǒng)中,在圖19不進行定義的場合取得的運行日志數(shù)據(jù)(250)和利用圖19的定義取得的運行日志數(shù)據(jù)(251)的示圖。在函數(shù)定義文件中不進行設定的場合,因為指針·參數(shù)不作為數(shù)組進行處理,在運行日志數(shù)據(jù)(250)中,只取得前頭的數(shù)據(jù),而在函數(shù)定義文件中進行設定的場合,由于指針·參數(shù)作為數(shù)組處理,在運行日志數(shù)據(jù)(251)中,可取得數(shù)組的所有數(shù)據(jù)。這樣,根據(jù)本實施方式,就可以達到可取得可變長數(shù)組的參數(shù)的運行日志作為在通常的方法中不能取得的函數(shù)的運行日志的效果。在本實施方式說明在通常的函數(shù)定義中對不能取得參數(shù)的函數(shù)取得運行日志的情況。圖22為在本實施方式的軟件評價系統(tǒng)中,在通常的函數(shù)定義中,不能取得參數(shù)的函數(shù)的例子的示圖。作為結構體,定義STRUCTSIZE1、STRUCTSIZE2、STRUCTSIZE3等3種,在各結構體的DWORDdwSize成員中,必須加入自己本身的結構體的大小。FuncGetData函數(shù)設定第一參數(shù)dwKind和設定把上述3種的哪一種結構體的指針送到第二參數(shù)lpBuf中。FuncGetData函數(shù),當?shù)谝粎?shù)為1的場合,將lpBuf作為STRUCTSIZE1的指針進行處理,當?shù)谝粎?shù)為2的場合,將lpBuf作為STRUCTSIZE2的指針進行處理,而當?shù)谝粎?shù)為3的場合,將lpBuf作為STRUCTSIZE3的指針進行處理。在此場合,如利用通常的函數(shù)定義去定義FuncGetData,lpBuf變成為void型的指針,不能取得數(shù)據(jù)。圖23為在圖22中STRUCTSIZE1、STRUCTSIZE2、STRUCTSIZE3各結構體如何使用內存的內存圖。結構體STRUCTSIZE1(260)的各成員在偏移量0×0000處有DWORDdwSize(261)、在0×0004處有DWORDdwParam1(262)、在0×0008處有DWORDdwParam2(263)、在0×000C處有DWORDdwParam3(264)。結構體STRUCTSIZE2(265),一直到DWORDdwSize~DWORDdwParam3(266~269)為止,與STRUCTSIZE1一樣,在0×0010處有DWORDdwParam4(270)。結構體STRUCTSIZE3(271),一直到DWORDdwSize~DWORDdwParam4(272~276)為止,與STRUCTSIZE2一樣,在0×0014處有DWORDdwParam5(277)。這樣,一直到STRUCTSIZE3的dwSize~dwParam4為止的內存配置與STRUCTSIZE2一樣,一直到STRUCTSIZE2的dwSize~dwParam3為止的內存配置與STRUCTSIZE1一樣。圖24為在本實施方式的軟件評價系統(tǒng)中,用來取得圖22那樣的函數(shù)的參數(shù)的運行日志的IDL產(chǎn)生的記述的示圖。在原來的函數(shù)中,是將分成為STRUCTSIZE1、STRUCTSIZE2、STRUCTSIZE3的結構體作為STRUCTSIZE這樣的一個結構體定義的(291)。此定義與STRUCTSIZE3一樣,這是因為從圖23中的內存配置可知,STRUCTSIZE3保持與STRUCTSIZE1、STRUCTSIZE2同樣的內存配置之故。于是,對于表示此結構體的項的結構體的大小的DWORDdwSize,設定[custum(PAT_PARAM_ID,″strucsize_is()″)](290)。在這一點上,運行日志取得處理在進行結構體的數(shù)據(jù)分析時,可能了解結構體的大小。并且,在FuncGetData函數(shù)中,將第二參數(shù)的lpBuf作為STRUCTSIZE型定義(292)。這樣一來,在將此參數(shù)作為運行日志保存的場合,作為STRUCTSIZE型進行處理。假設,不采用本法,在函數(shù)定義文件中進行記述以取得STRUCTSIZE3的數(shù)據(jù)的場合,在以dwKind=1及2調用GetFuncData的場合,由于存在STRUCTSIZE1及STRUCTSIZE2的數(shù)據(jù),為了要在運行日志中取得dwParam3及dwParam4的數(shù)據(jù),發(fā)生內存例外。圖25為在本實施方式的軟件評價系統(tǒng)中,取得以如圖所示方式定義函數(shù)時的運行日志的場合的流程圖。處理一開始(步驟S2501),開始取得運行日志,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S2502)。其次,判斷在函數(shù)定義中是否存在結構體的大小指定(structsize_is)的設定(步驟S2503),在存在的場合,對設定的結構體參數(shù)的數(shù)據(jù)在大小指定(structsize_is)的設定所定義的數(shù)據(jù)大小范圍內進行分析(步驟S2504)。于是,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S2505)。于是,接著,調用原來的函數(shù)(步驟S2506)。如從函數(shù)返回,判斷在函數(shù)定義中是否存在結構體的大小指定(structsize_is)的設定(步驟S2507),如存在的話,對設定的結構體參數(shù)的數(shù)據(jù)在大小指定(structsize_is)的設定所定義的數(shù)據(jù)大小范圍內進行分析(步驟S2508)。于是,將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S2509)。如果有來自用戶的終止命令(步驟S2510),該處理就終止。圖26為根據(jù)內存配置表示在圖25中進行的結構體參數(shù)分析的細節(jié)的示圖。在實際的程序中以dwKind=1使用GetFuncData的場合,使用STRUCTSIZE1結構體(300),該時的各成員(301~304)的內存的使用如圖所示。在如圖24那樣進行函數(shù)定義的場合,在本軟件評價系統(tǒng)中,被當作STRUCTSIZE結構體(305)進行識別,該時的各成員(306~311)的內存使用推測為如圖所示。于是,在存在大小指定(structsize_is)的設定的場合,通過調查dwSize的值,可以了解到結構體的大小為dwSize字節(jié),在STRUCTSIZE之中,只將dwSize字節(jié)數(shù)量(312)的數(shù)據(jù)作為運行日志取得。圖27為在本實施方式的軟件評價系統(tǒng)中,利用圖24的定義取得的運行日志數(shù)據(jù)的示圖。在通常的函數(shù)定義中為void*,只能夠取得指針的結構體的數(shù)據(jù),可通過使用的結構體的種類,作為運行日志取得該結構體的數(shù)據(jù)。這樣,根據(jù)本實施方式,就可以達到可以取得在通常的方法中不能取得的參數(shù)的運行日志的效果。圖28為在本實施方式的軟件評價系統(tǒng)中,在通常的函數(shù)定義中,不能取得參數(shù)的函數(shù)的例子的示圖。作為結構體,定義STRUCTSIZE1、STRUCTSIZE2、STRUCTSIZE3等3種。FuncGetData函數(shù),在第一參數(shù)dwKind中設定將上述3種的哪一個結構體的指針發(fā)送給第二參數(shù)lpBuf。FuncGetData函數(shù)當?shù)谝粎?shù)為1的場合,將lpBuf作為STRUCTSIZE1的指針進行處理,當?shù)谝粎?shù)在2的場合,將lpBuf作為STRUCTSIZE2的指針進行處理,而當?shù)谝粎?shù)在3的場合,將lpBuf作為STRUCTSIZE3的指針進行處理。在此場合,如利用通常的函數(shù)定義去定義FuncGetData,lpBuf變成為void型的指針,不能取得數(shù)據(jù)。圖29為在圖28中STRUCTSIZE1、STRUCTSIZE2、STRUCTSIZE3等各結構體如何配置內存的示圖。結構體STRUCTSIZE1(330)的各成員,在偏移量0×0000處有charchParam(331)、在0×0001處有DWORDdwParam(332)、在0×0005處有shortshParam(333)。結構體STRUCTSIZE2(334)的各成員在偏移量0×0000處有shortshParam(335)、在0×0002處有DWORDdwParam(336)、在0×0006處有charchParam(337)。結構體STRUCTSIZE3(338)的各成員在偏移量0×0000處有charchParam(339)、在0×0001處有shortshParam(340)、在0×0003處有DWORDdwParam(341)、在0×0007處有l(wèi)ongIParam(342)、在0×000B處有intnParam。這樣,由于在各結構體中沒有大小的信息,結構體的內存結構也不同,所以不能使用在實施方式5中的方法。圖30為在本實施方式=6的軟件評價系統(tǒng)中,用來取得圖28那樣的函數(shù)的參數(shù)的運行日志的IDL產(chǎn)生的記述的示圖。各結構體,以通常的方法定義。對于FuncgetData函數(shù)的第二參數(shù)void*lpParam設定[custum(PAT_PARAM_ATTR_ID,″structkind_is(dwKind1STRUCTKIND1*,2STRUCTKIND2*,STRUCTKIND3*)″)]。由此,lpBuf的數(shù)據(jù)型,在第一參數(shù)dwKind的值為1的場合,作為STRUCTKIND1*,在2的場合作為STRUCTKIND2*,在3的場合作為STRUCTKIND3*進行處理,并作為運行日志保存。圖31為在本實施方式的軟件評價系統(tǒng)中,取得如圖30那樣定義函數(shù)時的運行日志的場合的流程圖。處理一開始(步驟S3101),開始取得運行日志,將模塊名、接口名、函數(shù)/方法名保存于內存中(步驟S3102)。其次,判斷在函數(shù)定義中是否存在結構體的種類指定(structkind_is)的設定(步驟S3103),如存在的話,對設定的結構體參數(shù)的數(shù)據(jù)作為種類指定(structkind_is)的設定所定義的數(shù)據(jù)型進行分析(步驟S3104)。于是,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于內存中(步驟S3105)。于是,接著,調用原來的函數(shù)(步驟S3106)。如從函數(shù)返回,判斷在函數(shù)定義中是否存在結構體的種類指定(structkind_is)的設定(步驟S3107),如存在的話,對設定的結構體參數(shù)的數(shù)據(jù)作為種類指定(structkind_is)的設定所定義的數(shù)據(jù)型進行分析(步驟S3108)。于是,將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于內存中(步驟S3109)。如果有來自用戶的終止命令(步驟S3110),該處理就終止。圖32為在本實施方式中,利用圖30的定義取得的運行日志數(shù)據(jù)的示圖。通常的函數(shù)定義為void*,只有能夠取得指針的結構體的數(shù)據(jù),可根據(jù)使用的結構體的種類,將該結構體的數(shù)據(jù)作為運行日志取得。這樣,根據(jù)本實施方式,就可以獲得可以取得在通常的方法中不能取得的參數(shù)的運行日志的效果。在本實施方式中,對根據(jù)進行用于運行日志取得的各種設定的用戶接口和以該用戶接口設定的信息進行的處理予以說明。圖33為用來設定開始實施方式7的運行日志取得的函數(shù)/方法的用戶接口的示圖。在用戶接口中,具有從變成為運行日志取得對象的模塊/接口(350)選擇設定哪一個模塊/接口的下拉表(352、353)和從利用該處選擇的模塊/接口輸出的函數(shù)/方法(351)選擇設定哪一個函數(shù)/方法作為運行日志取得開始觸發(fā)器的下拉表(354、355)。圖34為在實施方式7的軟件評價系統(tǒng)中,按照圖33中設定的內容取得運行日志的場合的流程圖。處理一開始(步驟S3401),判斷是否將運行日志取得代碼所調用的函數(shù)/方法設定為運行日志取得開始觸發(fā)器(步驟S3402)。在與運行日志取得開始觸發(fā)器一致的場合,運行日志取得開始,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S3403)。其次,運行日志取得代碼,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S3404),調用原來的函數(shù)/方法(步驟S3405)。如從函數(shù)/方法返回,運行日志取得代碼將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S3406)。此處理一直進行到有來自用戶的終止命令(步驟S3407)為止,此時,不進行運行日志取得開始觸發(fā)器的判斷。從以上的說明可知,根據(jù)本實施方式,由于可以任意選擇進行運行日志取得的函數(shù)/方法,可以獲得運行日志分析變得很容易的效果。在上述實施方式7中,是假設用戶可以任意選擇取得運行日志的函數(shù)/方法,在本實施方式中,假設用戶可以任意選擇停止取得運行日志的函數(shù)/方法。圖35為本實施方式的用來設定停止運行日志取得的函數(shù)/方法的用戶接口的示圖。在用戶接口中,具有從變成為運行日志取得對象的模塊/接口(356)選擇設定哪一個模塊/接口的下拉表(358、359)和從利用該處選擇的模塊/接口輸出的函數(shù)/方法(357)選擇設定哪一個函數(shù)/方法作為運行日志停止取得開始的觸發(fā)器的下拉表(360、361)。圖36為在本實施方式的軟件評價系統(tǒng)中,按照圖35中設定的內容取得運行日志的場合的流程圖。處理一開始(步驟S3601),運行日志取得開始,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S3602)。其次,運行日志取得代碼,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S3603),調用原來的函數(shù)/方法(步驟S3604)。如從函數(shù)/方法返回,運行日志取得代碼,將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S3605)。之后判斷是否將調用的函數(shù)/方法設定為運行日志取得停止觸發(fā)器(步驟S3606)。在與運行日志取得停止觸發(fā)器一致的場合,運行日志取得處理結束(步驟S3607)。并且,即使是與運行日志取得停止觸發(fā)器不一致的場合,在有來自用戶的終止命令時(步驟S3606),該處理將終止。據(jù)此,由于可以停止任意設定的函數(shù)/方法的運行日志的取得,可以只取得用戶要求的運行日志,所以獲得運行日志分析變得很容易的效果。在上述實施方式7及8中敘述的用戶接口中,用戶可以利用用戶選擇的任意函數(shù)/方法開始/停止運行日志的取得,但也可以設定為用戶選擇的任意函數(shù)/方法只在錯誤終止的場合開始/停止運行日志的取得。圖37為對用來設定本實施方式的開始/停止運行日志的取得的函數(shù)/方法的用戶接口增加設定只在錯誤終止的場合使用觸發(fā)功能(運行日志取得開始/停止功能)的用戶接口的示圖。本用戶接口,可適用于圖33及圖35兩者。在用戶接口中,具有從變成為運行日志取得對象的模塊/接口(362)選擇設定哪一個模塊/接口的下拉表(364、365)和從利用該處選擇的模塊/接口輸出的函數(shù)/方法(363)選擇設定哪一個函數(shù)/方法作為觸發(fā)器的下拉表(366、367)以及函數(shù)/方法只在錯誤終止的場合使觸發(fā)功能有效的復選框(368)。圖38為本實施方式的函數(shù)/方法的錯誤定義的內容的示圖。在本實施方式中,錯誤定義是一個文件,在文件中對各函數(shù)/方法的參數(shù)及返回值和錯誤條件進行定義和記述。圖39為本實施方式軟件評價系統(tǒng)的取得運行日志的場合的流程圖,是按照在圖37中設定的內容,同時使用運行日志取得開始和只在錯誤時使用的觸發(fā)器的功能進行設定的場合。處理一開始(步驟S3901),判斷是否將運行日志取得代碼所調用的函數(shù)/方法設定為運行日志取得開始觸發(fā)器(步驟S3902)。在設定為運行日志取得開始觸發(fā)器的場合,將模塊名、接口名、函數(shù)/方法名臨時保存于內存中(步驟S3903)。其次,運行日志取得代碼,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容臨時保存于內存中(步驟S3904),調用原來的函數(shù)/方法(步驟S3905)。如從函數(shù)/方法返回,運行日志取得代碼,將返回時的時間、返回值及指針·參數(shù)指示的內存的內容臨時存儲于內存中(步驟S3906)。其次,判斷運行日志取得開始觸發(fā)器是否只在錯誤時使用(步驟S3907),如是,就判斷函數(shù)/方法是否錯誤(步驟S3908)。假如不是錯誤的場合,就將臨時保存于內存中的運行日志棄掉(步驟S3909)并返回到處理開始。在函數(shù)/方法是錯誤的場合,就將臨時保存于內存中的運行日志保存到HDD中(步驟S3910),繼續(xù)進行通常的運行日志取得處理(步驟S3911)。此處理一直進行到有來自用戶的終止命令(步驟S3912)為止。圖40為圖39的步驟3911所示的通常的運行日志取得處理的詳細流程圖。處理一開始(步驟S4001),運行日志取得開始,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S4002)。其次,運行日志取得代碼,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S4003),調用原來的函數(shù)/方法(步驟S4004)。如從函數(shù)/方法返回,運行日志取得代碼,將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S4005)。圖41為取得本實施方式的軟件評價系統(tǒng)的運行日志的場合的流程圖,是按照在圖37中設定的內容,同時使用運行日志取得停止和只在錯誤時使用觸發(fā)器的功能進行設定的場合。處理一開始(步驟S4101),運行日志取得開始,將模塊名、接口名、函數(shù)/方法名保存于HDD中(步驟S4102)。其次,運行日志取得代碼,將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S4103),調用原來的函數(shù)/方法(步驟S4104)。如從函數(shù)/方法返回,運行日志取得代碼,將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S4105)。之后,判斷是否將調用的函數(shù)/方法設定為運行日志取得停止觸發(fā)器(步驟S4106)。在與運行日志取得停止觸發(fā)器一致的場合,其次判斷運行日志取得停止觸發(fā)器是否只在錯誤時使用(步驟S4107),如是,就判斷函數(shù)/方法是否錯誤(步驟S4108)。假如是錯誤的場合,運行日志取得處理結束(步驟S4109)。另外,在有來自用戶的終止命令時(步驟S4110),該處理將終止。由此,就可以從在任意函數(shù)/方法發(fā)生錯誤的場合開始或停止取得運行日志,可以取得用戶要求的運行日志,也可以獲得很容易對運行日志進行分析的效果。上述實施方式7至9的用戶接口,不過是將可選的函數(shù)/方法以規(guī)定的順序排列而已,也可以將接口、方法的關系表示為容易掌握的樹形顯示。圖42為對本發(fā)明的實施方式10的接口和方法進行樹形顯示的用戶接口的示圖。在用戶接口中備有用來將接口及方法顯示為樹形的視圖(380)。如用戶選中接口InterfaceA(381),就可以將該接口內的全部方法MethodAA、MethodAB、MethodAC(382~384)全部選中,成為運行日志的取得對象。另外,通過取消接口InterfaceB(385)的選中,就可以全部解除該接口內的全部方法MethodBA、MethodBB、MethodBC(385~388)的選擇,不再是運行日志取得對象。圖43為本實施方式的軟件評價系統(tǒng)在如圖42選擇取得對象的場合取得運行日志之際的處理的流程圖。處理一開始(步驟S4301),每當運行日志取得代碼調用接口的某一方法時,都判斷該方法的接口是否成為運行日志取得對象(步驟S4302)。在成為運行日志取得對象的場合,將模塊名和接口、方法名保存于HDD中(步驟S4303)。其次,運行日志取得代碼將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于HDD中(步驟S4304),調用原來的函數(shù)/方法(步驟S4305)。如從方法返回,運行日志取得代碼將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于HDD中(步驟S4306)。此處理一直進行到有來自用戶的終止命令時(步驟S4307)而終止。據(jù)此,可以更簡便地了解接口、方法的關系,并且,可以更容易選擇想要取得的運行日志,使用戶的取得所要求的運行日志的方法更為簡單。在上述實施方式7至10中,是假設在選擇任意的方法時,以接口單位進行選擇,此外,也可以以方法單位進行選擇。圖44為將本實施方式的接口和方法進行樹形顯示的用戶接口的示圖,雖與圖42一樣,但選擇方法不同。在用戶接口中備有用來將接口及方法顯示為樹形的視圖(389)。如用戶通過選中方法MethodAA(391)、MethodAC(393)、MethodBA(3395),不選MethodAB(392)、MethodBB(396)、MethodBC(397),就可以不是以InterfaceA(390)、InterfaceB(394)內的全部方法,而只是以各進口內選中的方法作為運行日志取得對象。圖45為本實施方式的軟件評價系統(tǒng)在如圖44選擇取得對象的場合取得運行日志之際的處理的流程圖。處理一開始(步驟S4501),每當運行日志取得代碼調用接口的某一方法時,都判斷該接口的方法是否成為運行日志取得對象(步驟S4502)。在成為運行日志取得對象的場合,將模塊名和接口、方法名保存于HDD中(步驟S4503)。以下與實施方式10相同。據(jù)此,就可以不是在每個接口的很大的范圍內進行選擇,可以以方法單位更容易地分別選擇想要取得的方法獲得使用戶的取得所要求的運行日志的方法更為簡單的效果。在上述實施方式中,取得的運行日志是保存于HDD中的任意地點,但也可以連日期一起保存以便可以更容易對運行日志進行分析。圖46為將運行日志連日期一起進行分割保存的場合的處理的流程圖。處理一開始(步驟S4601),運行日志取得開始,將模塊名、接口名、函數(shù)/方法名保存于內存中(步驟S4602)。其次,運行日志取得代碼將調用時的日期·時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于內存中(步驟S4603),調用原來的函數(shù)/方法(步驟S4604)。如從函數(shù)/方法返回,運行日志取得代碼,將返回時的日期·時間、返回值及指針·參數(shù)指示的內存內容存儲于內存中(步驟S4605)。之后,判斷調用的函數(shù)/方法的返回時的日期是否與上次保存的運行日志的返回時的日期不同(步驟S4606)。在日期不同的場合,就生成新文件,將運行日志保存于該文件中(步驟S4607),在相同時,就在原有的運行日志文件中保存運行日志(步驟S4608)。另外,在有來自用戶的終止命令時(步驟S4609),該處理將終止。由此,用戶就可以取得所要求的帶有日期的運行日志,也可以獲得很容易對運行日志進行分析的效果。在上述實施方式12中,敘述的是連日期一起保存的場合,但也可以將運行日志按照各個大小或個數(shù)進行分割保存。圖47為按照各個大小或個數(shù)進行分割保存的場合的處理的流程圖。處理一開始(步驟S4701),運行日志取得開始,將模塊名、接口名、函數(shù)/方法名保存于內存中(步驟S4702)。其次,運行日志取得代碼將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于內存中(步驟S4703),調用原來的函數(shù)/方法(步驟S4704)。如從函數(shù)/方法返回,運行日志取得代碼將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于內存中(步驟S4705)。之后,在將新運行日志數(shù)據(jù)保存于原有的文件中的場合,就判斷文件的大小是否超過一定值或運行日志是否超過一定個數(shù)(步驟S4706)。在超過一定大小的場合或超過一定個數(shù)的場合,就生成新運行日志文件,將運行日志保存于該文件(步驟S4707),在不超過的場合,就保存于原有的運行日志文件中(步驟S4708)。在生成新運行日志文件的場合,判斷是否使用環(huán)形緩沖器且生成的運行日志文件數(shù)是否大于2個(步驟S4709)。如果在條件合適的場合,將最舊的運行日志文件刪除(步驟S4710)。在有來自用戶的終止命令時(步驟S4712),該處理終止。由此,用戶可以將生成的多個運行日志每個的大小和個數(shù)都限制在一定的大小和個數(shù)之內而取得,處理就變得容易。另外,在使用環(huán)形緩沖器時,本軟件評價系統(tǒng)可以對給予PC的資源的負擔予以一定的抑制,可以使運行日志的取得穩(wěn)定。圖48為將取得的運行日志存儲于一定數(shù)量的內存中的場合的內存的概圖。用來保存一定數(shù)目的運行日志的運行日志存放內存區(qū)有n個(398),在各運行日志存放內存區(qū)中存放一次數(shù)量的函數(shù)/方法的運行日志,該信息存放模塊名、接口名、函數(shù)/方法名、調用時的時間、參數(shù)、調用時的參數(shù)數(shù)據(jù)、終止時的時間、終止時的參數(shù)數(shù)據(jù)、返回值數(shù)據(jù)等(399),大小為可變的。在此內存區(qū),從運行日志存放內存區(qū)1開始順序存放運行日志數(shù)據(jù),一直到運行日志存放內存區(qū)n為止,如用完的話,則再次從運行日志存放內存區(qū)1開始重寫存放運行日志。圖49為將取得的運行日志保存于一定數(shù)量的內存中時的運行日志取得的流程圖。處理一開始(步驟S4901),將表示運行日志存放內存區(qū)的地點的變數(shù)x初始化為1(步驟S4902)。于是,開始取得運行日志,將模塊名、接口名、函數(shù)/方法名保存于運行日志存放內存區(qū)x(步驟S4903)其次,運行日志取得代碼將調用時的時間、參數(shù)及指針·參數(shù)指示的內存的內容保存于運行日志存放內存區(qū)x中(步驟S4904),調用原來的函數(shù)/方法(步驟S4905)。如從函數(shù)/方法返回,運行日志取得代碼將返回時的時間、返回值及指針·參數(shù)指示的內存的內容存儲于運行日志存放內存區(qū)x中(步驟S4906)。之后,將表示運行日志存放內存區(qū)的地點的變數(shù)x加1(步驟S4907),判斷x是否比運行日志存放內存區(qū)數(shù)n大(步驟S4908)。在x比n大時,將1代入x,從運行日志存放內存區(qū)的前頭開始再次使用(步驟S4909)。之后,判斷是否使用環(huán)形緩沖器(步驟S4910),在不使用的場合,將內存上存在的全部運行日志數(shù)據(jù)保存于運行日志文件中(步驟S4911),將內存上的運行日志數(shù)據(jù)全部刪除(步驟S4912)。此處理一直進行到有來自用戶的終止命令時(步驟S4913)而終止(步驟S4914)。由此,可以使內存的使用量限制于某一程度的值,本軟件評價系統(tǒng)可以對給予PC的資源的負擔予以一定的抑制,可以使運行日志的取得穩(wěn)定。另外,本發(fā)明,既適用于由多個設備(比如,主計算機、接口裝置、讀入器、打印機等)構成的系統(tǒng),也適用于由一臺設備組成的裝置(比如,復印機、傳真裝置等)。另外,本發(fā)明目的也可以通過將記錄了實現(xiàn)上述實施方式的功能的軟件的程序代碼的存儲介質供給系統(tǒng)或裝置,該系統(tǒng)或裝置的計算機(或CPU及MPU)讀出并執(zhí)行存放于存儲介質上的程序代碼而達到。在此場合,由于從存儲介質讀出的程序代碼本身實現(xiàn)上述實施方式的功能,所以存儲該程序代碼的存儲介質構成本發(fā)明。作為提供程序代碼的存儲介質,比如,可以使用軟盤(注冊商標)、硬盤、光盤、磁光盤、CD-ROM、CD-R、磁帶、非易失性存儲卡以及ROM等。另外,通過執(zhí)行計算機讀出的程序代碼,不僅可以實現(xiàn)上述實施方式的功能,而且根據(jù)該程序代碼的指示,在計算機上運行的OS(操作系統(tǒng))等進行實際處理的一部分或全部,通過該處理實現(xiàn)上述實施方式的功能的場合也包括在內是自不待言的。此外,從存儲介質讀出的程序代碼,在寫入到插入計算機的功能擴展板或與計算機相連接的功能擴展裝置中設置的內存后,根據(jù)該程序代碼的指示,設置于該功能擴展板或功能擴展裝置上的CPU等進行實際處理的一部分或全部,通過該處理實現(xiàn)上述實施方式的功能的場合也包括在內是自不待言的。如上所述,根據(jù)本發(fā)明,可容易取得分成為多個模塊的軟件的處理運行日志,并且可以削減用來分析軟件故障的原因的工時。本發(fā)明不限于上述具體實施例,并且在不脫離本發(fā)明的精神和范圍的情況下可以實現(xiàn)本發(fā)明的多種改變和變型。因此,為使廣大群眾了解本發(fā)明的范圍,下面提出本發(fā)明的權利要求。權利要求1.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序,用來取得上述運行日志的函數(shù)包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷指針·參數(shù)是否是以規(guī)定的定義方法所定義的工序;以及在指針·參數(shù)以規(guī)定的定義方法被定義的場合,根據(jù)該定義方法,將該指針·參數(shù)所指的內存的內容作為運行日志進行記錄的工序。2.如權利要求1所述的運行日志取得方法,其特征為上述運行日志取得函數(shù)進一步具有根據(jù)上述定義方法算出內存大小的工序,上述記錄工序將上述指針·參數(shù)指示的內存內容按照該算出的內存大小的量進行記錄。3.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;用來取得上述運行日志的函數(shù)包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;對在調用進行上述規(guī)定處理的函數(shù)時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息進行記錄的工序;根據(jù)上述程序內的函數(shù)定義,判斷有無不輸出的函數(shù)的工序;在有不輸出的函數(shù)的場合,新生成用于與該函數(shù)相對應的運行日志取得的函數(shù),將該不輸出函數(shù)的地址改寫為新生成的函數(shù)的地址的工序;上述新生成的函數(shù),具有調用上述未被輸出的函數(shù),執(zhí)行該規(guī)定處理,將接收到的執(zhí)行結果轉送給上述程序的工序;對在調用上述不輸出的函數(shù)時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息進行記錄的工序。4.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序,用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷指針·參數(shù)是否是作為可變長數(shù)組進行定義的工序;以及在將指針·參數(shù)定義為可變長數(shù)組的場合,將該指針·參數(shù)所指的內存的內容在該指定的數(shù)組中進行記錄的工序。5.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序,用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷指定指針·參數(shù)是否被指定為結構體的工序;以及在指定指針·參數(shù)作為結構體的場合,對該指針·參數(shù)所指的內存的內容,按照在上述程序內的函數(shù)定義中定義的結構體的大小量,作為運行日志進行記錄的工序。6.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序,用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷進行種類指定的指針·參數(shù)是否被定義為結構體的工序;以及在把進行種類指定的指針·參數(shù)定義為結構體的場合,將該指針·參數(shù)所指的內存的內容作為進行種類指定的數(shù)據(jù)型進行記錄的工序。7.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的方法的地址的工序,用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷指針·參數(shù)是否是以規(guī)定的定義方法定義的工序;以及在指針·參數(shù)以規(guī)定的定義方法定義的場合,根據(jù)該定義方法,將該指針·參數(shù)所指的內存的內容作為運行日志進行記錄的工序。8.如權利要求7所述的運行日志取得方法,其特征為上述用于取得運行日志的方法具有根據(jù)上述定義方法算出內存大小的工序,上述記錄工序將上述指針·參數(shù)指示的內存內容按照該算出的內存大小的量進行記錄。9.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;對在調用進行上述規(guī)定處理的方法時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息進行記錄的工序;根據(jù)上述程序內的函數(shù)定義,判斷有無不輸出的方法的工序;在有不輸出的方法的場合,新生成用于與該方法相對應的運行日志的取得的方法,將該不輸出的方法的地址改寫為新生成的方法的地址的工序;上述新生成的方法,具有調用上述不輸出的方法,執(zhí)行該規(guī)定處理,將接收到的執(zhí)行結果轉送給上述程序的工序;對在調用上述不輸出的方法時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息進行記錄的工序。10.一種運行日志取得方法,其特征在于是一種取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志的運行日志取得方法,具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序,用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷指針·參數(shù)是否是作為可變長數(shù)組進行定義的工序;以及在將指針·參數(shù)定義為可變長數(shù)組的場合,將該指針·參數(shù)所指的內存的內容在該指定的數(shù)組中進行記錄的工序。11.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序,用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷指針·參數(shù)是否被指定為結構體的工序;以及在指定指針·參數(shù)作為結構體的場合,對該指針·參數(shù)所指的內存的內容,按照在上述程序內的函數(shù)定義中定義的結構體的大小量,作為運行日志進行記錄的工序。12.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序,用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;在上述程序內的函數(shù)定義中,判斷進行種類指定的指針·參數(shù)是否被定義為結構體的工序;以及在進行種類指定的指針·參數(shù)被定義為結構體的場合,將該指針·參數(shù)所指的內存的內容作為進行種類指定的數(shù)據(jù)型進行記錄的工序。13.一種存儲介質,其特征為存放由計算機實現(xiàn)權利要求1所述的運行日志取得方法的控制程序。14.一種控制程序,其特征為由計算機實現(xiàn)權利要求1所述的運行日志取得方法。15.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;對在調用在上述選擇工序中所選擇的函數(shù)時的規(guī)定信息作為運行日志進行記錄的工序;以及將在接受在上述選擇工序中所選擇的函數(shù)的執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序。16.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;對在調用進行上述規(guī)定處理的函數(shù)時的規(guī)定信息和接受該函數(shù)執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;以及對在上述選擇工序中所選擇的函數(shù),停止運行日志的記錄的工序。17.如權利要求15所述的運行日志取得方法,其特征為用來取得上述運行日志的函數(shù)還包含判斷在上述選擇工序中選擇的函數(shù)執(zhí)行時有無錯誤的工序,作為上述運行日志進行記錄的工序,通過上述判斷有無錯誤的工序判斷為存在錯誤的場合,將上述規(guī)定信息作為運行日志進行記錄。18.如權利要求16所述的運行日志取得方法,其特征為用來取得上述運行日志的函數(shù)還包含判斷在上述選擇工序中選擇的函數(shù)執(zhí)行時有無錯誤的工序,上述停止運行日志記錄的工序,通過上述判斷有無錯誤的工序判斷為存在錯誤的場合,停止運行日志的記錄。19.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;以及選擇進行上述規(guī)定處理的方法的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;對在調用在上述選擇工序中所選擇的方法時的規(guī)定信息作為運行日志進行記錄的工序;以及將在接受在上述選擇工序中所選擇的方法的執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序。20.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;以及選擇進行上述規(guī)定處理的方法的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;對在調用進行上述規(guī)定處理的方法時的規(guī)定信息和接受該函數(shù)執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;以及對在上述選擇工序中所選擇的方法,停止運行日志的記錄的工序。21.如權利要求19所述的運行日志取得方法,其特征為用來取得上述運行日志的函數(shù)還包含判斷在上述選擇工序中選擇的方法執(zhí)行時有無錯誤的工序,作為上述運行日志進行記錄的工序,通過上述判斷有無錯誤的工序判斷為存在錯誤的場合,將上述規(guī)定信息作為運行日志進行記錄。22.如權利要求20所述的運行日志取得方法,其特征為用來取得上述運行日志的函數(shù)還包含判斷在上述選擇工序中選擇的方法執(zhí)行時有無錯誤的工序,上述停止運行日志記錄的工序,通過上述判斷有無錯誤的工序判斷為存在錯誤的場合,停止運行日志的記錄。23.如權利要求19所述的運行日志取得方法,其特征為還包括以樹形結構顯示COM服務器輸出的接口和屬于該接口的方法的工序,上述選擇工序經(jīng)上述顯示進行選擇。24.如權利要求20所述的運行日志取得方法,其特征在于還包括以樹形結構顯示COM服務器輸出的接口和屬于該接口的方法的工序,上述選擇工序經(jīng)上述顯示進行選擇。25.如權利要求23所述的運行日志取得方法,其特征在于上述選擇工序可以以方法單位進行選擇。26.如權利要求24所述的運行日志取得方法,其特征在于上述選擇工序可以以方法單位進行選擇。27.如權利要求23所述的運行日志取得方法,其特征為通過選擇上述接口上述選擇工序可以選擇屬于該接口的全部方法。28.如權利要求24所述的運行日志取得方法,其特征為通過選擇上述接口上述選擇工序可以選擇屬于該接口的全部方法。29.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的函數(shù)時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;作為上述運行日志進行記錄的工序,可以按日期記錄運行日志。30.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的函數(shù)時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;作為上述運行日志進行記錄的工序,在運行日志的大小超過一定大小的場合,生成新的另外的文件。31.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的函數(shù)時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;作為上述運行日志進行記錄的工序,在運行日志的個數(shù)超過一定數(shù)的場合,生成新的另外的文件。32.一種運行日志取得方法,取得具備進行規(guī)定處理的函數(shù)的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的函數(shù)的地址改寫為用來取得運行日志的函數(shù)的地址的工序;以及選擇進行上述規(guī)定處理的函數(shù)的工序;用來取得上述運行日志的函數(shù),包含調用進行上述規(guī)定處理的函數(shù),執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的函數(shù)時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志存放于內存的工序;作為上述運行日志存放于內存的工序,在該內存上的運行日志的個數(shù)超過一定數(shù)的場合,將該內存上的運行日志移動到盤裝置進行保存。33.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;以及選擇進行上述規(guī)定處理的方法的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的方法時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;作為上述運行日志進行記錄的工序,可以按日期進行記錄。34.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;以及選擇進行上述規(guī)定處理的方法的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的方法時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;作為上述運行日志進行記錄的工序,在運行日志的大小超過一定大小的場合,生成新的另外的文件。35.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;以及選擇進行上述規(guī)定處理的方法的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的方法時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志進行記錄的工序;作為上述運行日志進行記錄的工序,在運行日志的個數(shù)超過一定數(shù)的場合,生成新的另外的文件。36.一種運行日志取得方法,取得具備進行規(guī)定處理的方法的程序的執(zhí)行中的運行日志,其特征為具有將加載有進行上述規(guī)定的處理的方法的地址改寫為用來取得運行日志的方法的地址的工序;以及選擇進行上述規(guī)定處理的方法的工序;用來取得上述運行日志的方法,包含調用進行上述規(guī)定處理的方法,執(zhí)行該規(guī)定處理,將收到的執(zhí)行結果轉送給上述程序的工序;以及對在調用進行上述規(guī)定處理的方法時的規(guī)定信息和接受上述執(zhí)行結果時的規(guī)定信息作為運行日志存放于內存的工序;作為上述運行日志存放于內存的工序,在該內存上的運行日志的個數(shù)超過一定數(shù)的場合,將該內存上的運行日志移動到盤裝置進行保存。37.一種存儲介質,其特征為存放由計算機實現(xiàn)權利要求15所述的運行日志取得方法的控制程序。38.一種控制程序,其特征為由計算機實現(xiàn)權利要求15所述的運行日志取得方法。全文摘要該發(fā)明提供運行日志取得方法及程序、存儲介質。該運行日志取得方法為一種可以容易取得軟件處理運行日志并且可削減用于分析錯誤(bug)的工時數(shù)的運行日志取得方法。該運行日志取得方法,在備有函數(shù)(FuncAA)的程序91中,為取得執(zhí)行中的運行日志,具有將加載有進行上述規(guī)定的處理的函數(shù)(FuncAA)的地址改寫為用來取得運行日志的函數(shù)(92)的地址的工序,以及選擇應該取得運行日志的函數(shù)(FuncAA)的工序,用來取得運行日志的函數(shù)(92),包含調用函數(shù)(FuncAA)的地址,執(zhí)行該規(guī)定處理(97),將收到的執(zhí)行結果(98)轉送給程序(91)的工序(101);記錄調用上述被選擇的函數(shù)(FuncAA)的地址時的規(guī)定信息的工序(95、100)以及記錄在接受上述被選擇的函數(shù)(FuncAA)的上述執(zhí)行結果時的規(guī)定信息的工序(99、100)。文檔編號G06F9/44GK1469237SQ0314933公開日2004年1月21日申請日期2003年6月27日優(yōu)先權日2002年6月28日發(fā)明者三原誠,三原申請人:佳能株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
房山区| 互助| 连平县| 溧水县| 新晃| 连山| 宁城县| 新乡县| 阿勒泰市| 台东县| 达尔| 昌黎县| 资中县| 洪泽县| 沐川县| 阳西县| 白玉县| 义乌市| 砚山县| 长垣县| 阿荣旗| 巫溪县| 海口市| 桦南县| 天镇县| 南雄市| 延川县| 大新县| 延长县| 万山特区| 慈溪市| 武穴市| 东城区| 清苑县| 内黄县| 页游| 西乌珠穆沁旗| 邢台市| 铁岭县| 宣汉县| 宁城县|