JP4125055B2 - Log acquisition method - Google Patents
Log acquisition method Download PDFInfo
- Publication number
- JP4125055B2 JP4125055B2 JP2002191129A JP2002191129A JP4125055B2 JP 4125055 B2 JP4125055 B2 JP 4125055B2 JP 2002191129 A JP2002191129 A JP 2002191129A JP 2002191129 A JP2002191129 A JP 2002191129A JP 4125055 B2 JP4125055 B2 JP 4125055B2
- Authority
- JP
- Japan
- Prior art keywords
- log
- log acquisition
- function
- unit
- calling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、複数にモジュール分けされたソフトウェアの処理ログを取得するための技術に関するものである。
【0002】
【従来の技術】
従来より、再現率の低いソフトウェアの障害に対しては、ソフトウェアの処理ログを取得し、当該処理ログを解析することによって、障害の原因をつきとめ、その対策を講じてきた。
【0003】
【発明が解決しようとする課題】
しかし、上記従来の処理ログの取得には以下のような問題点がある。
(1)ユーザの動作環境でもログを取得しつづけるためには、ソフトウェアのモジュール自体に手を加え、処理ログ取得ルーチンを追加しなければならず、処理ログ取得のための作業負荷が大きかった。
(2)処理ログ取得はモジュール毎に行うため、生成されたログはモジュール単位のものとなってしまい、ソフトウェア全体の処理を、完全に時間順のログとして取得するのが困難である。このため、全体の処理ログとしての見通しが悪く、ログを解析して障害の原因を発見するまでのプロセスに工数がかかっていた。
【0004】
本発明は、上記課題を鑑みてなされたものであり、複数にモジュール分けされたソフトウェアの処理ログを容易に取得でき、かつ、ソフトウェアの障害の原因の解析のための工数を削減することが可能なログ取得方法、ならびに該方法をコンピュータによって実現させるためのプログラム、および該プログラムを格納した記憶媒体を提供することを目的とする。
【0005】
【課題を解決するための手段】
上記の目的を達成するために本発明に係るログ取得方法は以下のような構成を備える。即ち、
関数を記憶したダイナミックリンクライブラリと、該関数のアドレスを記憶したインポート関数アドレステーブルと、該ダイナミックリンクライブラリ内の関数を呼び出して実行する対象プログラムとを記憶するプログラム記憶手段と、プログラムを記憶する記憶媒体と、ログが記録されるログ記録手段と、プログラムを実行する実行手段とを有し、前記実行手段が前記記憶媒体に記憶されたプログラムを実行することにより実現される書き換え手段と、選択手段と、呼び出し手段とを備えた情報処理装置において、前記対象プログラムの実行中のログを取得するログ取得方法であって、
前記選択手段が、前記ダイナミックリンクライブラリ内の関数のリスト中からユーザが選択指示した関数を、ログを取得すべき関数として選択する選択工程と、
前記書き換え手段が、前記対象プログラムの実行前に、前記選択工程で選択された各関数に対応するログ取得のための関数を前記ダイナミックリンクライブラリ内にロードし、前記インポート関数アドレステーブル上に記憶された前記選択された関数のアドレスを、対応する前記ログ取得のための関数のアドレスに書き換える工程と、
前記呼び出し手段が、前記選択された関数に対する前記インポート関数アドレステーブル上の書き換え後の前記アドレスに基づいて、前記ログ取得のための関数を呼び出して前記実行手段に実行させることで実現されるログ取得手段を起動する工程と、
前記ログ取得手段が、前記呼び出し手段による呼び出しに関わるログを前記ログ記録手段に記録し、前記呼び出し手段により呼び出された前記ログ取得のための関数に対応する前記選択された関数を呼び出して、該選択された関数を前記実行手段に実行させる工程と、
前記ログ取得手段が、前記選択された関数の実行結果を受け取って該実行結果に関わるログを前記ログ記録手段に記録し、当該実行結果を前記対象プログラムに渡す工程とを備える。
【0006】
【発明の実施の形態】
【第1の実施形態】
本実施形態は、あるモジュールから別のモジュール内に存在する関数の呼び出しが行われる際の仕組みである、メモリに保持されたインポート関数アドレス、または仮想関数アドレステーブル(Virtual Address Table)を利用して、モジュール間の関数呼び出しをフックしてログに記録することで、ソフトウェアのモジュール自体に手を加えることなく、ソフトウエア全体の処理を、時間順のログとして取得することを可能にするものである。以下に具体的に説明する。
【0007】
<システム構成>
図1は、本発明の各実施形態にかかるログ取得方法を実現するコンピュータ(ソフトウェア評価システム)の構成をあらわす図である。説明を簡略化するために、本実施形態では、本ソフトウェア評価システムが1台のPC内部に構築されるものとするが、本発明のログ取得方法の特徴は1台のPC内部に構築されるか、あるいは複数のPCにネットワークシステムとして構築されるかによらず有効である。
【0008】
本ソフトウェア評価システムを搭載するコンピュータには、CPU1、チップセット2、RAM3、ハードディスクコントローラ4、ディスプレイコントローラ5、ハードディスクドライブ6、CD−ROMドライブ7、ディスプレイ8が搭載されている。また、CPUとチップセットを繋ぐ信号線11、チップセット2とRAM3とを繋ぐ信号線12、チップセット2と各種周辺機器とを繋ぐ周辺機器バス13、ハードディスクコントローラ4とハードディスクドライブ6とを繋ぐ信号線14、ハードディスクコントローラ4とCD−ROMドライブ7とを繋ぐ信号線15、ディスプレイコントローラ5とディスプレイ8とを繋ぐ信号線16が搭載されている。
【0009】
<関数処理に対する処理ログ取得>
本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムを説明するために、まず図2によって、複数のモジュールに分かれたソフトウェアが、通常の状態でどのようにメモリにロードされるかを説明する。
【0010】
通常、複数のモジュールに分かれたソフトウェアは、全体の制御を行う実行ファイルEXE(23)と、モジュールとして存在しEXEの補完的な役割を担うダイナミックリンクライブラリDLL(27)とに分かれており、メモリにはEXEとDLLの両方がロードされる。EXEはコードセグメント(28)とデータセグメント(29)、そしてインポート関数アドレステーブル(22)から成っている。更に、インポート関数アドレステーブルは、関数の所属するDLLによって分かれており(21, 24)、DLLごとにそれぞれの関数がロードされたアドレスが書かれている(30〜35)。DLLの関数の実体は、DLLごとに分かれて(25, 26)ロードされ、それぞれの関数は該当するDLLの一部としてロードされる(36〜41)。この図では、1本のEXEがA.DLL及びB.DLLの2つのダイナミックリンクライブラリ内の関数を使用している例を示しており、実際に使用される関数はFunc AA, Func AB, Func AC, Func BA, Func BB, Func BCの6個となっている。
【0011】
EXEのコードセグメント内にあるコードが関数Func AAを呼び出す場合には、まずインポート関数アドレステーブル内に書かれたFunc AAのアドレス(30)が読み込まれる。ここには実際にはA.DLLの一部として読み込まれたFunc AAコード(36)のアドレスが書かれており、そのアドレスをコールすることによって、EXEのコードはA.DLLのFunc AAを呼び出すことができる。
【0012】
図3は、本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのメモリ構成をあらわす図であり、図2とは、ログ取得用のコードに対してIAT Patch(Import Address Table Patch)という手法を用いて、関数呼び出しをリダイレクトしているという点で異なっている。
【0013】
ログ取得が開始されると、メモリ内にはIAT Patch用のDLLであるC.DLL(58)がロードされる。C.DLLはインポート関数アドレステーブル(52)内に書かれた関数のアドレスを、C.DLL内のログ取得コードであるFunc CAA, Func CAB, Func CAC, Func CBA,Func CBB, Func CBCのアドレスに書き換える(61〜66)。C.DLL内のFunc CAA, Func CAB, Func CAC, Func CBA, Func CBB, Func CBCのコード(73〜78)は、ログを記録すると共に、元々の関数呼び出しを受けるべくメモリにロードされている、該当する関数であるFunc AA, Func AB, Func AC, Func BA, Func BB, Func BC(67〜72)を呼び出す。
【0014】
図4Aは、図3におけるIAT Patchの処理をあらわす図、図4Bはログ取得処理の流れを示すフローチャートである。説明を簡略化するために、この図ではEXEがA.DLL内のFunc AAを呼び出す際に、IAT Patchによるログ取得コードがどのように動作するかの例をあらわしている。
【0015】
EXE(図4Aの91)がFunc AAをコールすると(図4Aの94)、C.DLL内にあるログ取得コードがDLL名/関数名をメモリに保存し(図4BのステップS402)、呼び出し時刻をメモリに保存し、呼び出し時のパラメータをメモリに保存し、呼び出し時のポインタパラメータの指すメモリ内容を、別メモリに保存する(図4Aの95、図4BのステップS403)。その後C.DLLは本来呼び出されるはずであった、A.DLL(図4Aの93)内のFunc AAをコールする(図4Aの96、図4BのステップS404)。A.DLLのFunc AA処理(図4Aの97)が終了し、C.DLLに制御がリターンすると(図4Aの98)、C.DLLはリターン時の時刻をメモリに保存し、戻り値をメモリに保存し、リターン時にポインタパラメータが指すメモリ内容を、別メモリに保存する(図4Aの99)。その後、C.DLLは保存したログ情報をファイルに書き込み(図4Aの100、図4BのステップS405)、あたかもA.DLLのFunc AAが通常通りに終了したかのように、EXEにリターンする(101)。
【0016】
図5は、本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの内部構成をあらわす図である。通常は実行形式のEXE(113)が、DLL−1(116)やDLL−2(117)内の関数を呼び出すが、ここではAPIトレーサと呼ばれるログ取得コードを埋め込み(114)、処理ログを生成している(115)。APIトレーサは、DLL−1やDLL−2の関数定義を記述したファイル(111)と、どのDLLのどの関数のインポート関数テーブルを書き換えてログを取得するかの設定シナリオ(トレースシナリオ112)を元に動作する。
【0017】
<メソッド処理に対する処理ログ取得>
次に、本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムにおいて、実行ファイルEXE(118)がCOM(Component Object Model)サーバでエクスポートされているインターフェースのインスタンス作成時に、どのようにメモリにロードされるかを説明するために、まず、図6によって、通常の状態でどのようにメモリにロードされるかを説明する。
【0018】
通常、インターフェースのインスタンス作成を行うと、COMサーバ内で、要求されたインターフェース(121, 122)と、そのメソッド(:オブジェクト指向プログラミングにおいて、オブジェクトの実行する手続きを記述したプログラム、130〜135)が作成され、それらは、メモリ上に両方がロードされる。ここで、virtual address table(仮想アドレステーブル)は作成された各インターフェース毎に作られ(118, 120)、作成要求を行ったEXEに渡される。このvirtual addres tableには各メソッドの作成されたアドレスが書かれている(124〜129)。EXEはこれら情報を利用し、各インターフェースに対して呼び出しを行う。この図では、1本のEXEがInterface A及びInterface Bの2つのインターフェースのインスタンスを作成しており、そのインターフェース内部のメソッドを使用している例を示しており、実際に使用されているメソッドは、Method AA, Method AB, Method AC, Method BA, Method BB, Method BCとなっている。
【0019】
EXEのコードが関数Method AAを呼び出す場合には、まずvirtual address table内に書かれたMethod AAのアドレス(124)が読み込まれる。ここには実際にはCOMサーバのInterface Aの一部として作成されたMethod AAコード(130)のアドレスが書かれており、そのアドレスをコールすることによって、EXEのコードはInterface AのMethod AAを呼び出すことができる。
【0020】
図7は、本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのメモリ構成をあらわす図であり、図6とは、ログ取得用のコードに対してVTable Patch(virtual address table Patch)という手法を用いて、メソッド呼び出しをリダイレクトしているという点で異なっている。
【0021】
ログ取得が開始されると、メモリ内にはVTable Patch用のDLL(143)がロードされる。このDLLはvirtual address table(136, 138)内に書かれたメソッドのアドレスを、DLL内のログ取得コードであるMethod A'A, Method A'B, MethodA'C, Method B'A, Method B'B, Method B'Cのアドレスに書き換える(145〜150)。DLL内のMethod A'A,Method A'B, Method A'C, Method B'A, Method B'B, Method B'Cのコード(157〜162)は、ログを記録すると共に、元々のメソッド呼び出しを受けるべくメモリにロードされている、該当するメソッドであるMethod AA, Method AB, Method AC, Method BA, Method BB, MethodBC(157〜162)を呼び出す。
【0022】
図8Aは、図7におけるVTable Patchの処理をあらわす図、図8Bはログ取得処理の流れを示すフローチャートである。説明を簡略化するために、この図ではEXEがCOMサーバ内のInterface AのMethodAAを呼び出す際に、VTable Patchによるログ取得コードがどのように動作するかの例をあらわしている。
【0023】
EXE(図8Aの163)がMethod AAをコールすると(図8Aの166)、DLL内にあるログ取得コードがモジュール名/インターフェース名/メソッド名をメモリに保存し(図8BのステップS802)、呼び出し時刻をメモリに保存し、呼び出し時のパラメータをメモリに保存し、呼び出し時のポインタパラメータの指すメモリ内容を、別メモリに保存する(図8Aの167、図8BのステップS803))。その後DLLは本来呼び出されるはずであった、COMサーバ(図8Aの165)内のMethod AAをコールする(図8Aの168、図8BのステップS804))。COMサーバのMethod AA処理(図8Aの169)が終了し、DLLに制御がリターンすると(図8Aの170)、DLLはリターン時の時刻をメモリに保存し、戻り値をメモリに保存し、リターン時にポインタパラメータが指すメモリ内容を、別メモリに保存する(図8Aの171)。その後、DLLは保存したログ情報をファイルに書き込み(図8Aの172、図8BのステップS805)、あたかもCOMサーバのMethod AAが通常通りに終了したかのように、EXEにリターンする(図8Aの173)。
【0024】
図9は、本発明の第1の実施形態にかかるソフトウェア評価システムの内部構成をあらわす図である。通常は実行形式のEXE(176)が、COMサーバ1(179)やCOMサーバ2(180)内のメソッドを呼び出すが、ここではAPIトレーサと呼ばれるログ取得コードを埋め込み(177)、処理ログを生成している(178)。APIトレーサは、COMサーバ1(179)やCOMサーバ2の関数定義を記述したファイル(174)と、どのCOMサーバのどのインターフェースのどのメソッドのvirtual address tableを書き換えてログを取得するかの設定シナリオ(175)を元に動作する。
【0025】
<ユーザインターフェース>
図10は、本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムで、ログ取得を開始するための関数/メソッドを設定するためのユーザインターフェースである。
【0026】
ユーザインターフェースには、ログ取得対象となっているモジュール/インターフェース(181)から、どのモジュール/インターフェースを設定するかを選択するドロップダウンリスト(183, 184)と、そこで選択したモジュール/インターフェースでエクスポートされている関数/メソッド(182)から、どの関数/メソッドを設定するかを選択するドロップダウンリスト(185, 186)とを備える。
【0027】
図11は、本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムで、図10で設定した内容に従い、ログを取得する場合の流れを示す図である。
【0028】
処理が開始されると(ステップS1)、ログ取得コードは呼び出された関数/メソッドがログ取得開始トリガーとして設定されているか判別する(ステップS2)。ログ取得開始トリガーと一致した場合には、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をHDDに保存する(ステップS3)。次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS4)、元の関数/メソッドを呼び出す(ステップS5)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS6)。この処理はユーザから終了の命令があるまで(ステップS7)続行されるが、その際には、ログ取得開始トリガーの判別を行わない。
【0029】
以上の説明から明らかなように、本実施形態によれば、複数にモジュール分けされたソフトウエアの処理ログの取得において、モジュール自体に変更を加えることなく、モジュール内に用意された任意の関数/メソッドから処理ログを容易に取得することが可能となり、ソフトウェアにおける障害の原因の解析のための工数を削減する効果を与える。さらにログ取得を行う関数/メソッドを任意に選択できるようにすることで、ログの解析が容易になるという効果がもたらされる。
【0030】
【第2の実施形態】
上記第1の実施形態では、ログを取得する関数/メソッドをユーザが任意に選択することが可能なユーザインターフェースについて説明したが、本実施形態では、ログ取得を停止する関数/メソッドを任意に選択可能なユーザインターフェースについて説明する。
【0031】
図12は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、ログ取得を停止するための関数/メソッドを設定するためのユーザインターフェースである。
【0032】
ユーザインターフェースには、ログ取得対象となっているモジュール/インターフェース(187)から、どのモジュール/インターフェースを設定するかを選択するドロップダウンリスト(189, 190)と、そこで選択したモジュール/インターフェースでエクスポートされている関数/メソッド(188)から、どの関数/メソッドを設定するかを選択するドロップダウンリスト(191, 192)とを備える。
【0033】
図13は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムで、図12で設定した内容に従い、ログを取得する場合の流れを示す図である。
【0034】
処理が開始されると(ステップS9)、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をHDDに保存する(ステップS10)。次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS11)、元の関数/メソッドを呼び出す(ステップS12)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS13)。その後呼び出された関数/メソッドがログ取得停止トリガーとして設定されているか判別する(ステップS14)。ログ取得停止トリガーと一致した場合には、ログ取得処理は終了する(ステップS16)。また、ログ取得停止トリガーと一致しない場合でも、この処理はユーザから終了の命令があると(ステップS15)終了される。
【0035】
これにより、任意の関数/メソッドのログ取得を停止することができることとなり、ユーザの求めるログのみを取得できるため、ログの解析が容易になるという効果がもたらされる。
【0036】
【第3の実施形態】
上記第1および第2の実施形態において述べたユーザインタフェースでは、ユーザが選択した任意の関数/メソッドでログの取得開始/停止をユーザが任意に選択することとしたが、ユーザが選択した任意の関数/メソッドが、エラーで終了した場合のみ、ログの取得開始/停止をするように設定することも可能である。
【0037】
図14は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、ログ取得を開始/停止するための関数/メソッドを設定するためのユーザインターフェースに、エラーで終了した場合のみトリガー機能(ログ取得開始/停止機能)を使用する設定を追加したものである。本ユーザインターフェースは、図10及び、図12双方に適応することが可能である。
【0038】
ユーザインターフェースには、ログ取得対象となっているモジュール/インターフェース(193)から、どのモジュール/インターフェースを設定するかを選択するドロップダウンリスト(195, 196)と、そこで選択したモジュール/インターフェースでエクスポートされている関数/メソッド(194)から、どの関数/メソッドを設定するかを選択するドロップダウンリスト(197, 198)と、関数/メソッドがエラーで終了した場合のみトリガー機能を有効にする為のチェックボックスとを備える。
【0039】
図15は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、関数/メソッドのエラー定義の内容を示したものである。本実施形態においてはエラー定義がファイルとなっており、ファイルには各関数/メソッドのパラメータ及び戻り値とそのエラー条件等が定義され記されている。
【0040】
図16は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図14で設定した内容に従い、ログを取得する場合の流れを示す図であり、ログ取得開始と、エラー時のみトリガーを使用する機能を併用して設定した場合である。
【0041】
処理が開始されると(ステップS17)、ログ取得コードは呼び出された関数/メソッドがログ取得開始トリガーとして設定されているか判別する(ステップS18)。ログ取得開始トリガーとして設定されている場合には、モジュール名、インターフェース名、関数/メソッド名をメモリに一時的に保存する(ステップS19)。
【0042】
次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をメモリに一時的に保存し(ステップS20)、元の関数/メソッドを呼び出す(ステップS21)。メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をメモリに一時的に保存する(ステップS22)。
【0043】
次にログ取得開始トリガーがエラーでのみ使用するかどうかを判別し(ステップS23)、そうであれば、関数/メソッドがエラーであるかを判別する(ステップS24)。もし、エラーでない場合には、一時メモリに保存したログを破棄し(ステップS25)、処理のはじめに戻る。関数/メソッドがエラーであった場合には、一時メモリに保存したログをHDDに保存し(ステップS26)、通常のログ取得処理を引き続き行う(ステップS27)。この処理はユーザから終了の命令があるまで(ステップS28)続行される。
【0044】
図17は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図16のステップS27で示した通常のログ取得処理の詳細の流れを示す図である。
【0045】
処理が開始されると(ステップS30)、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をHDDに保存する(ステップS31)。次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS32)、元の関数/メソッドを呼び出す(ステップS33)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS34)。
【0046】
図18は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図14で設定した内容に従い、ログを取得する場合の流れを示す図であり、ログ取得停止と、エラー時のみトリガーを使用する機能とを併用して設定した場合である。
【0047】
処理が開始されると(ステップS40)、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をHDDに保存する(ステップS41)。次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS42)、元の関数/メソッドを呼び出す(ステップS43)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS34)。その後呼び出された関数/メソッドがログ取得停止トリガーとして設定されているか判別する(ステップS45)。ログ取得停止トリガーと一致した場合には、次にログ取得停止トリガーがエラーでのみ使用するかどうかを判別し(ステップS46)、そうであれば、関数/メソッドがエラーであるかを判別する(ステップS47)。もし、エラーである場合は、ログ取得処理は終了する(ステップS48)。また、この処理はユーザから終了の命令があると(ステップS49)終了される。
【0048】
これにより、任意の関数/メソッドでエラーが発生した場合からログの取得を開始したり、停止したりすることが可能ととなり、ユーザの求めるログを取得することが可能になり、ログの解析が容易になるという効果がもたらされる。
【0049】
【第4の実施形態】
上記第1乃至第3の実施形態におけるユーザインターフェースは、選択可能な関数/メソッドが所定の順序で配列されているにすぎなかったが、インターフェース、メソッドの関係が容易に把握できるようなツリー表示としてもよい。
【0050】
図19は、本発明の第4の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、インターフェースとメソッドのツリー表示を行うユーザインターフェースに関するものである。
【0051】
ユーザインターフェースには、インターフェース及びメソッドをツリー表示する為のビュー(200)が備えられている。ユーザがインターフェースInterfaceA(201)をチェックすることで、そのインターフェース内の全てのメソッドMethodAA, MethodAB, MethodAC(202〜204)は全て選択され、ログの取得対象となる。また、インターフェースInterfaceB(205)のチェックを外すことで、そのインターフェース内の全てのメソッドMethodBA, MethodBB, MethodBC(205〜208)は全て選択解除され、ログの取得対象外となる。
【0052】
図20は、本実施形態にかかるソフトウェア評価システムの、図19のようにログ取得対象を選択した場合の、ログを取得する際の処理の流れを示す図である。
【0053】
処理が開始されると(ステップS51)、ログ取得コードはインターフェースの何らかのメソッド呼び出しが行われるたびに、そのメソッドのインターフェースが、ログ取得対象となっているかを判別する(ステップS52)。ログ取得対象となっていた場合には、モジュール名とインターフェース、メソッド名をHDDに保存する(ステップS53)。
【0054】
次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS54)、元のメソッドを呼び出す(ステップS55)。メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS56)。この処理はユーザから終了の命令があるまで(ステップS57)続行される。
【0055】
これにより、インターフェース、メソッドの関係を更に簡便に知ることができ、また、ログを取得したいインターフェースを容易に選択可能となり、ユーザの、求めるログを取得する方法が簡単になるという効果がもたらされる。
【0056】
【第5の実施形態】
上記第1乃至第3の実施形態では、任意のメソッドを選択するにあたり、インターフェース単位で選択を行うこととしたが、さらに、メソッド単位で選択を行うことも可能である。
【0057】
図21は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、インターフェースとメソッドのツリー表示を行うユーザインターフェースに関するものであり、図19と同様であるが、選択方法が異なっている。
【0058】
ユーザインターフェースには、インターフェース及びメソッドをツリー表示する為のビュー(209)が備えられている。ユーザがメソッドMethodAA(211), MethodAC(213), MethodBA(215)をチェックし、MethodAB(212), MethodBB(216), MethodBC(217)のチェックを外すことで、インターフェースInterfaceA(210), InterfaceB(214)内の全てのメソッドではなく、各インターフェースのチェックしたメソッドのみをログの取得対象とすることが可能となる。
【0059】
図22は、本実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図21のようにログ取得対象を選択した場合の、ログを取得する際の処理の流れを示す図である。
【0060】
処理が開始されると(ステップS59)、ログ取得コードはインターフェースの何らかのメソッド呼び出しが行われるたびに、そのインターフェースのメソッドが、ログ取得対象となっているかを判別する(ステップS60)。ログ取得対象となっていた場合には、モジュール名とインターフェース、メソッド名をHDDに保存する(ステップS61)。
【0061】
次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS62)、元のメソッドを呼び出す(ステップS63)。メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS64)。この処理はユーザから終了の命令があるまで(ステップS65)続行される。
【0062】
これにより、インターフェース毎という大きな範囲ではなく、ログを取得したいメソッドをメソッド単位でそれぞれ容易に選択可能となり、ユーザの求めるログを簡単に取得することができるという効果がもたらされる。
【0063】
【第6の実施形態】
上記各実施形態においては、取得したログをHDDの任意の場所に保存していたが、ログの解析を容易に行うことができるよう、日付ごとに保存するようにしてもよい。
【0064】
図23は、日付毎にログを分割保存する場合の処理の流れを示す図である。
【0065】
処理が開始されると(ステップS71)、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をメモリに保存する(ステップS72)。
【0066】
次にログ取得コードは、呼び出し時の日付・時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をメモリに保存し(ステップS73)、元の関数/メソッドを呼び出す(ステップS74)。関数/メソッドからリターンすると、ログ取得コードはリターン時の日付・時刻、戻り値及びポインタ・パラメータの指すメモリの内容をメモリに保存する(ステップS75)。その後呼び出された関数/メソッドのリターン時の日付が、前回に保存したログのリターン時の日付と異なるかを判別する(ステップS76)。日付が異なる場合には、新規のログファイルを作成し、ログをそのファイルに保存する(ステップS77)、同じ場合には、従来のログファイルにログを保存する(ステップS78)。この処理はユーザから終了の命令があると(ステップS79)終了される(ステップS80)。
【0067】
これにより、ユーザは求めるログを日付毎に取得することができ、ログの解析が容易になるという効果がもたらされる。
【0068】
【第7の実施形態】
上記第6の実施形態では、日付ごとにログを保存する場合について述べたが、サイズ毎もしくは個数毎にログを分割して保存するようにしてもよい。
【0069】
図24は、サイズ毎もしくは個数毎にログを分割保存する場合の処理の流れを示す図である。
【0070】
処理が開始されると(ステップS71)、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をメモリに保存する(ステップS72)。次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をメモリに保存し(ステップS73)、元の関数/メソッドを呼び出す(ステップS74)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をメモリに保存する(ステップS75)。その後新規のログデータを従来のログファイルに保存した場合に、ファイルのサイズが一定値を超えるかもしくは一定の個数のログを超えるかどうかを判別する(ステップS76)。
【0071】
ある一定サイズを超えてしまう場合もしくはある一定の個数を超えてしまう場合には、新規のログファイルを作成し、ログをそのファイルに保存する(ステップS77)、同じ場合には、従来のログファイルにログを保存する(ステップS18)。新規のログファイルを作成した場合には、リングバッファを使用する場合で且つ、作成したログファイルの数が2個より多いかどうかを判別する(ステップS79)。もし、条件に当てはまる場合には、最も古いログファイルを削除する(ステップS90)。この処理はユーザから終了の命令があると(ステップS91)終了される(ステップS92)。
【0072】
これにより、ユーザは複数作成される各ログを一定サイズ以内で取得することや、一定のログの個数毎で取得ができ、取り扱いが容易になる効果がもたらされる。また、リングバッファを使用することで、本ソフトウェア評価システムがPCのリソースに対して与える負荷を一定に押さえる事が可能になり、安定したログの取得を行えるようになる。
【0073】
【第8の実施形態】
図25は、取得したログを一定数だけメモリに保存する場合のメモリの概要図である。
【0074】
一定数のログを保存するためのログ格納メモリ領域がn個存在し(218)、各ログ格納メモリ領域には、1回分の関数/メソッドのログが格納され、その情報はモジュール名、インターフェース名、関数/メソッド名、呼び出し時の時刻、呼び出し時のパラメータデータ、終了時の時刻、終了時のパラメータデータ、戻り値データ等が格納されており(219)、可変サイズとなる。このメモリ領域には、ログ格納メモリ領域1から順にログデータは格納されていき、ログ格納メモリ領域nまで、使用し終わると、再度、ログ格納メモリ領域1から上書きしてログを格納する。
【0075】
図26は、取得したログを一定数だけメモリに保存する場合のログ取得の流れを示す図である。
【0076】
処理が開始されると(ステップS93)、ログ格納メモリ領域の場所を示す変数xを1に初期化する(ステップS94)。そして、ログ取得を開始し、モジュール名、インターフェース名、関数/メソッド名をログ格納メモリ領域xに保存する(ステップS95)。
【0077】
次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をログ格納メモリ領域xに保存し(ステップS96)、元の関数/メソッドを呼び出す(ステップS97)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をログ格納メモリ領域xに保存する(ステップS98)。その後ログ格納メモリ領域の場所を示す変数xに1を加算し(ステップS99)、xがログ格納メモリ領域数のnより大きいかを判別する(ステップS100)。
【0078】
xがnより大きい場合にはxに1を代入し、ログ格納メモリ領域の先頭から再度使用するように設定する(ステップS101)。その後、リングバッファを使用するかを判別し(ステップS102)、使用しない場合には、メモリ上に有る、全てのログデータをログファイルに保存し(ステップS103)、メモリ上のログデータを全て削除する(ステップS104)。この処理はユーザから終了の命令があると(ステップS105)終了される(ステップS106)。
【0079】
これにより、メモリの使用量をある程度の値でとどめることが可能となり、本ソフトウェア評価システムがPCのリソースに対して与える負荷を抑えることが可能になり、安定したログの取得を行えるようになる。
【0080】
【他の実施形態】
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0081】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0082】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0083】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピ(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
【0084】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0085】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0086】
【発明の効果】
以上説明したように本発明によれば、複数にモジュール分けされたソフトウェアの処理ログを容易に取得でき、かつ、ソフトウェアの障害の原因の解析のための工数を削減することが可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態にかかるログ取得方法を実現するコンピュータ(ソフトウェア評価システム)の構成をあらわす図である。
【図2】本発明の第1の実施形態にかかるログ取得方法を説明するためにあらわした、関数ロード時の通常のメモリ構成をあらわす図である。
【図3】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのIAT Patch使用時のメモリ構成をあらわす図である。
【図4A】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのIAT Patchを使用時の状態を示す図である。
【図4B】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのログ取得処理の流れを示す図である。
【図5】本発明の第1の実施形態にかかるソフトウェア評価システムのIAT Patchを使用時の内部構成をあらわす図である。
【図6】本発明の第1の実施形態にかかるログ取得方法を説明するためにあらわした、COMサーバのインターフェースのインスタンス作成時の通常のメモリ構成をあらわす図である。
【図7】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのVTable Patch使用時のメモリ構成をあらわす図である。
【図8A】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのVTable Patchを使用時の状態を示す図である。
【図8B】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムのログ取得処理の流れを示す図である。
【図9】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、内部構成をあらわす図である。
【図10】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムで、ログ取得を開始するための関数/メソッドを設定するためのユーザインターフェースを示す図である。
【図11】本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムで、図10で設定した内容に従い、ログを取得する場合の流れを示す図である。
【図12】本発明の第2に実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、ログ取得を停止するための関数/メソッドを設定するためのユーザインターフェースを示す図である。
【図13】本発明の第2の実施形態にかかるログ取得方法を実現するソフトウェア評価システムで、図12で設定した内容に従い、ログを取得する場合の流れを示す図である。
【図14】本発明の第3の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、ログ取得を開始/停止するための関数/メソッドを設定するためのユーザインターフェースに、エラーで終了した場合のみトリガー機能を使用する設定を追加したユーザインターフェースを示す図である。
【図15】本発明の第3の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、関数/メソッドのエラー定義の内容を示した図である。
【図16】本発明の第3の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図14で設定した内容に従い、ログを取得する場合の流れを示す図である。
【図17】本発明の第3の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図16のステップS27で示した通常のログ取得処理の詳細の流れを示す図である。
【図18】本発明の第3の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図14で設定した内容に従い、ログを取得する場合の流れを示す図である。
【図19】本発明の第4の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、インターフェースとメソッドのツリー表示を行うユーザインターフェースを示す図である。
【図20】本発明の第4の実施形態にかかるソフトウェア評価システムの、図19のようにログ取得対象を選択した場合の、ログを取得する際の処理の流れを示す図である。
【図21】本発明の第5の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、インターフェースとメソッドのツリー表示を行うユーザインターフェースを示す図である。
【図22】本発明の第5の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、図21のようにログ取得対象を選択した場合の、ログを取得する際の処理の流れを示す図である。
【図23】本発明の第6の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、日付毎にログを分割保存する場合の処理の流れを示す図である。
【図24】本発明の第7の実施形態にかかるログ取得方法を実現するソフトウェア評価システムの、サイズ毎もしくは個数毎にログを分割保存する場合の処理の流れを示す図である。
【図25】本発明の第8の実施形態にかかるログ取得方法を実現するソフトウェア評価システムにおいて、取得したログを一定数だけメモリに保存する場合のメモリの概要図である。
【図26】本発明の第8の実施形態にかかるログ取得方法を実現するソフトウェア評価システムにおいて、取得したログを一定数だけメモリに保存する場合のログ取得の流れを示す図である。
【符号の説明】
1:CPU
2:チップセット
3:RAM
4:ハードディスクコントローラ
5:ディスプレイコントローラ
6:ハードディスクドライブ
7:CD−ROMドライブ
8:ディスプレイ
11:CPUとチップセットを繋ぐ信号線
12:チップセットとRAMを繋ぐ信号線
13:チップセットと各種周辺機器とを繋ぐ周辺機器バス
14:ハードディスクコントローラとハードディスクドライブを繋ぐ信号線
15:ハードディスクコントローラとCD−ROMドライブを繋ぐ信号線
16:ディスプレイコントローラとディスプレイを繋ぐ信号線[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a technique for acquiring a processing log of software divided into a plurality of modules.
[0002]
[Prior art]
In the past, for software failures with low recall, the cause of the failure has been identified by taking a software processing log and analyzing the processing log, and countermeasures have been taken.
[0003]
[Problems to be solved by the invention]
However, the acquisition of the conventional processing log has the following problems.
(1) In order to continue to acquire logs even in the user's operating environment, the software module itself has to be modified and a processing log acquisition routine has to be added, resulting in a heavy workload for acquiring the processing logs.
(2) Since processing log acquisition is performed for each module, the generated log is for each module, and it is difficult to acquire the entire software processing as a log in time order. For this reason, the prospect as the whole processing log was bad, and it took man-hours to analyze the log and discover the cause of the failure.
[0004]
The present invention has been made in view of the above problems, and can easily acquire a software processing log divided into a plurality of modules, and can reduce the number of steps for analyzing the cause of a software failure. An object of the present invention is to provide a simple log acquisition method, a program for realizing the method by a computer, and a storage medium storing the program.
[0005]
[Means for Solving the Problems]
In order to achieve the above object, a log acquisition method according to the present invention has the following configuration. That is,
A dynamic link library storing functions, an import function address table storing addresses of the functions, The The target program that calls and executes the functions in the dynamic link library The Program storage means for storing; A storage medium for storing the program; Log recording means for recording a log; and execution means for executing a program, wherein the execution means Storage media A log acquisition method for acquiring a log during execution of the target program in an information processing apparatus comprising a rewriting unit, a selection unit, and a calling unit realized by executing a program stored in
The selection means is for the functions in the dynamic link library. list User from inside But Selection instruction Function Functions that should get logs As A selection process to select;
The rewriting means loads a function for log acquisition corresponding to each function selected in the selection step into the dynamic link library and stores it in the import function address table before executing the target program. Rewriting the address of the selected function with the address of the function for acquiring the corresponding log;
Log acquisition realized by the calling means calling the function for log acquisition and causing the execution means to execute based on the rewritten address on the import function address table for the selected function Invoking means;
The log acquisition unit records a log related to the call by the calling unit in the log recording unit, calls the selected function corresponding to the function for log acquisition called by the calling unit, and Causing the execution means to execute a selected function;
The log acquisition unit includes a step of receiving an execution result of the selected function, recording a log related to the execution result in the log recording unit, and passing the execution result to the target program.
[0006]
DETAILED DESCRIPTION OF THE INVENTION
[First Embodiment]
In this embodiment, an import function address stored in a memory or a virtual function address table (Virtual Address Table), which is a mechanism when a function existing in another module is called from one module, is used. By hooking function calls between modules and recording them in the log, it is possible to acquire the entire software process as a log in time order without modifying the software module itself. . This will be specifically described below.
[0007]
<System configuration>
FIG. 1 is a diagram showing the configuration of a computer (software evaluation system) that implements a log acquisition method according to each embodiment of the present invention. In order to simplify the explanation, in this embodiment, it is assumed that the software evaluation system is built inside one PC, but the feature of the log acquisition method of the present invention is built inside one PC. It is effective regardless of whether it is constructed as a network system on a plurality of PCs.
[0008]
A computer on which this software evaluation system is mounted includes a
[0009]
<Acquire processing log for function processing>
In order to explain the software evaluation system for realizing the log acquisition method according to the first embodiment of the present invention, first, how the software divided into a plurality of modules is loaded into the memory in a normal state according to FIG. Explain how.
[0010]
Usually, the software divided into a plurality of modules is divided into an executable file EXE (23) that performs overall control and a dynamic link library DLL (27) that exists as a module and plays a complementary role of EXE. Is loaded with both EXE and DLL. EXE consists of a code segment (28), a data segment (29), and an import function address table (22). Furthermore, the import function address table is divided by the DLL to which the function belongs (21, 24), and the address at which each function is loaded is written for each DLL (30-35). The entity of the DLL function is loaded separately for each DLL (25, 26), and each function is loaded as a part of the corresponding DLL (36-41). This figure shows an example in which one EXE uses functions in two dynamic link libraries of A.DLL and B.DLL, and the functions actually used are Func AA, Func AB, and Func. AC, Func BA, Func BB, and Func BC.
[0011]
When the code in the EXE code segment calls the function Func AA, the Func AA address (30) written in the import function address table is first read. Here, the address of the Func AA code (36) actually read as part of A.DLL is written, and by calling that address, the EXE code calls Func AA of A.DLL. be able to.
[0012]
FIG. 3 is a diagram showing a memory configuration of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention. FIG. 2 is different from FIG. 2 in terms of IAT Patch (Import Address) for the log acquisition code. It is different in that the function call is redirected using a technique called “Table Patch”.
[0013]
When log acquisition is started, C.DLL (58), which is a DLL for IAT Patch, is loaded into the memory. C.DLL is the address of the function written in the import function address table (52), and the address of the log acquisition code in C.DLL is Func CAA, Func CAB, Func CAC, Func CBA, Func CBB, Func CBC (61-66). Func CAA, Func CAB, Func CAC, Func CBA, Func CBB, and Func CBC code (73-78) in C. DLL are logged and loaded into memory to receive the original function call The corresponding functions Func AA, Func AB, Func AC, Func BA, Func BB, and Func BC (67 to 72) are called.
[0014]
4A is a diagram showing the processing of the IAT Patch in FIG. 3, and FIG. 4B is a flowchart showing the flow of the log acquisition processing. In order to simplify the explanation, this figure shows an example of how the log acquisition code by IAT Patch operates when EXE calls Fun AA in A.DLL.
[0015]
When EXE (91 in FIG. 4A) calls Func AA (94 in FIG. 4A), the log acquisition code in C.DLL saves the DLL name / function name in memory (step S402 in FIG. 4B), and the call time Is stored in the memory, the parameter at the time of calling is stored in the memory, and the memory content pointed to by the pointer parameter at the time of calling is stored in another memory (95 in FIG. 4A, step S403 in FIG. 4B). After that, C.DLL calls Func AA in A.DLL (93 in FIG. 4A), which was supposed to be called (96 in FIG. 4A, step S404 in FIG. 4B). When the A.DLL Func AA process (97 in FIG. 4A) ends and control returns to C.DLL (98 in FIG. 4A), C.DLL stores the return time in memory and stores the return value in memory. The memory contents pointed to by the pointer parameter at the time of return are stored in another memory (99 in FIG. 4A). Thereafter, C.DLL writes the saved log information to the file (100 in FIG. 4A, step S405 in FIG. 4B), and returns to EXE as if A.DLL Func AA ended normally ( 101).
[0016]
FIG. 5 is a diagram showing the internal configuration of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention. Normally, the executable EXE (113) calls a function in the DLL-1 (116) or DLL-2 (117). Here, a log acquisition code called an API tracer is embedded (114) to generate a processing log. (115). The API tracer is based on a file (111) describing function definitions of DLL-1 and DLL-2, and a setting scenario (trace scenario 112) of rewriting the import function table of which function of which DLL and acquiring the log. To work.
[0017]
<Acquire process log for method process>
Next, in the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention, when an instance of an interface in which the execution file EXE (118) is exported by a COM (Component Object Model) server is created, In order to explain how the data is loaded into the memory, first, how it is loaded into the memory in a normal state will be described with reference to FIG.
[0018]
Normally, when an instance of an interface is created, the requested interface (121, 122) and its method (: a program describing a procedure executed by an object in object-oriented programming, 130 to 135) in the COM server are displayed. They are both loaded into memory. Here, a virtual address table (virtual address table) is created for each created interface (118, 120), and passed to the EXE that made the creation request. In this virtual address table, addresses where each method is created are written (124 to 129). EXE uses these information to make a call to each interface. In this figure, one EXE creates instances of two interfaces, Interface A and Interface B, and shows an example of using the methods inside that interface. , Method AA, Method AB, Method AC, Method BA, Method BB, Method BC.
[0019]
When the EXE code calls the function Method AA, the address (124) of the Method AA written in the virtual address table is first read. Here, the address of the Method AA code (130) created as part of Interface A of the COM server is actually written, and by calling this address, the code of EXE executes Method AA of Interface A. Can be called.
[0020]
FIG. 7 is a diagram showing a memory configuration of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention. FIG. 6 is different from FIG. 6 in terms of VTable Patch (virtual address) for the log acquisition code. This method is different in that the method call is redirected using a method called “table Patch”.
[0021]
When log acquisition is started, a DLL (143) for VTable Patch is loaded in the memory. This DLL uses the address of the method written in the virtual address table (136, 138) as the method A'A, Method A'B, Method A'C, Method B'A, Method B, which is the log acquisition code in the DLL. Rewrite to the address of 'B, Method B'C (145-150). Method A'A, Method A'B, Method A'C, Method B'A, Method B'B, Method B'C code (157-162) in the DLL records the log and the original method Method AA, Method AB, Method AC, Method BA, Method BB, MethodBC (157 to 162), which are the corresponding methods loaded in the memory to receive the call, are called.
[0022]
8A is a diagram showing the processing of the VTable Patch in FIG. 7, and FIG. 8B is a flowchart showing the flow of the log acquisition processing. In order to simplify the explanation, this figure shows an example of how the log acquisition code by VTable Patch operates when EXE calls MethodAA of Interface A in the COM server.
[0023]
When EXE (163 in FIG. 8A) calls Method AA (166 in FIG. 8A), the log acquisition code in the DLL stores the module name / interface name / method name in memory (step S802 in FIG. 8B) and calls The time is saved in the memory, the parameter at the time of calling is saved in the memory, and the memory content pointed to by the pointer parameter at the time of calling is saved in another memory (167 in FIG. 8A, step S803 in FIG. 8B). Thereafter, the DLL calls Method AA in the COM server (165 in FIG. 8A), which was supposed to be called (168 in FIG. 8A, step S804 in FIG. 8B)). When the Method AA process (169 in FIG. 8A) of the COM server ends and control returns to the DLL (170 in FIG. 8A), the DLL stores the return time in the memory, stores the return value in the memory, and returns. The memory content pointed to by the pointer parameter is saved in another memory (171 in FIG. 8A). Thereafter, the DLL writes the saved log information to the file (172 in FIG. 8A, step S805 in FIG. 8B), and returns to EXE as if Method AA of the COM server was terminated normally (in FIG. 8A). 173).
[0024]
FIG. 9 is a diagram showing the internal configuration of the software evaluation system according to the first embodiment of the present invention. Normally, the execution format EXE (176) calls a method in the COM server 1 (179) or the COM server 2 (180). Here, a log acquisition code called an API tracer is embedded (177) to generate a processing log. (178). The API tracer sets a file (174) in which the function definitions of the COM server 1 (179) and the
[0025]
<User interface>
FIG. 10 is a user interface for setting a function / method for starting log acquisition in the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention.
[0026]
The user interface is exported with the drop-down list (183, 184) for selecting which module / interface to set from the module / interface (181) subject to log acquisition, and the module / interface selected there. A drop-down list (185, 186) for selecting which function / method is set from the function / method (182) that is set.
[0027]
FIG. 11 is a diagram showing a flow when a log is acquired according to the contents set in FIG. 10 in the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention.
[0028]
When the process is started (step S1), the log acquisition code determines whether the called function / method is set as a log acquisition start trigger (step S2). If it matches the log acquisition start trigger, log acquisition is started, and the module name, interface name, and function / method name are stored in the HDD (step S3). Next, the log acquisition code stores the calling time, parameters, and memory contents pointed to by the pointer parameters in the HDD (step S4), and calls the original function / method (step S5). When returning from the function / method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the HDD (step S6). This process is continued until an end command is issued from the user (step S7), but at that time, the log acquisition start trigger is not determined.
[0029]
As is apparent from the above description, according to the present embodiment, in acquiring a processing log of software divided into a plurality of modules, any function / preparation provided in the module can be obtained without changing the module itself. Processing logs can be easily acquired from the method, which has the effect of reducing the man-hours for analyzing the cause of failures in software. Furthermore, by making it possible to arbitrarily select a function / method for acquiring a log, an effect of facilitating log analysis is brought about.
[0030]
[Second Embodiment]
In the first embodiment, the user interface that allows the user to arbitrarily select a function / method for acquiring a log has been described. In the present embodiment, a function / method for stopping log acquisition is arbitrarily selected. A possible user interface is described.
[0031]
FIG. 12 is a user interface for setting a function / method for stopping log acquisition in the software evaluation system that implements the log acquisition method according to the present embodiment.
[0032]
The user interface is exported with the drop-down list (189, 190) for selecting which module / interface to set from the module / interface (187) that is the log acquisition target, and the module / interface selected there. A drop-down list (191, 192) for selecting which function / method to set from the existing function / method (188).
[0033]
FIG. 13 is a diagram illustrating a flow when a log is acquired according to the contents set in FIG. 12 in the software evaluation system that implements the log acquisition method according to the present embodiment.
[0034]
When the process is started (step S9), log acquisition is started, and the module name, interface name, and function / method name are stored in the HDD (step S10). Next, the log acquisition code stores the calling time, parameters, and memory contents pointed to by the pointer parameters in the HDD (step S11), and calls the original function / method (step S12). When returning from the function / method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the HDD (step S13). Thereafter, it is determined whether the called function / method is set as a log acquisition stop trigger (step S14). If it coincides with the log acquisition stop trigger, the log acquisition process ends (step S16). Even when the log acquisition stop trigger does not coincide with the log acquisition stop trigger, this process is ended when the user gives an end command (step S15).
[0035]
As a result, the log acquisition of an arbitrary function / method can be stopped, and only the log requested by the user can be acquired, which brings about an effect that the analysis of the log becomes easy.
[0036]
[Third Embodiment]
In the user interfaces described in the first and second embodiments above, the user arbitrarily selects log acquisition start / stop using an arbitrary function / method selected by the user. It is also possible to set to start / stop log acquisition only when a function / method ends with an error.
[0037]
FIG. 14 shows a trigger function (only when a user interface for setting a function / method for starting / stopping log acquisition is terminated due to an error in the software evaluation system for realizing the log acquisition method according to the present embodiment). The setting to use the log acquisition start / stop function) is added. This user interface can be applied to both FIG. 10 and FIG.
[0038]
The user interface is exported with the drop-down list (195, 196) for selecting which module / interface to set from the module / interface (193) that is the log acquisition target, and the module / interface selected there. Drop-down list (197, 198) for selecting which function / method to set from the function / method (194) that is set, and a check to enable the trigger function only when the function / method ends with an error With a box.
[0039]
FIG. 15 shows the contents of function / method error definitions in the software evaluation system that implements the log acquisition method according to the present embodiment. In this embodiment, an error definition is a file, and parameters and return values of each function / method, error conditions thereof, and the like are defined and described in the file.
[0040]
FIG. 16 is a diagram showing a flow when a log is acquired in accordance with the contents set in FIG. 14 of the software evaluation system that realizes the log acquisition method according to the present embodiment, and is triggered only at the start of log acquisition and an error. This is the case where the function that uses is set together.
[0041]
When the process is started (step S17), the log acquisition code determines whether the called function / method is set as a log acquisition start trigger (step S18). If it is set as a log acquisition start trigger, the module name, interface name, and function / method name are temporarily stored in the memory (step S19).
[0042]
Next, the log acquisition code temporarily stores the time at the time of calling, the parameter, and the contents of the memory indicated by the pointer parameter in the memory (step S20), and calls the original function / method (step S21). When returning from the method, the log acquisition code temporarily stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the memory (step S22).
[0043]
Next, it is determined whether the log acquisition start trigger is used only for an error (step S23). If so, it is determined whether the function / method is an error (step S24). If it is not an error, the log stored in the temporary memory is discarded (step S25), and the process returns to the beginning. If the function / method is an error, the log stored in the temporary memory is stored in the HDD (step S26), and normal log acquisition processing is continued (step S27). This process is continued until an end command is received from the user (step S28).
[0044]
FIG. 17 is a diagram showing a detailed flow of the normal log acquisition process shown in step S27 of FIG. 16 in the software evaluation system that implements the log acquisition method according to the present embodiment.
[0045]
When the process is started (step S30), log acquisition is started, and the module name, interface name, and function / method name are stored in the HDD (step S31). Next, the log acquisition code stores the calling time, parameters, and memory contents pointed to by the pointer parameters in the HDD (step S32), and calls the original function / method (step S33). When returning from the function / method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the HDD (step S34).
[0046]
FIG. 18 is a diagram showing a flow when a log is acquired in accordance with the contents set in FIG. 14 of the software evaluation system that realizes the log acquisition method according to the present embodiment. This is the case where the setting is used together with the function that uses.
[0047]
When the process is started (step S40), log acquisition is started and the module name, interface name, and function / method name are stored in the HDD (step S41). Next, the log acquisition code stores the calling time, parameters, and memory contents pointed to by the pointer parameters in the HDD (step S42), and calls the original function / method (step S43). When returning from the function / method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the HDD (step S34). Thereafter, it is determined whether the called function / method is set as a log acquisition stop trigger (step S45). If it matches the log acquisition stop trigger, it is next determined whether or not the log acquisition stop trigger is used only for an error (step S46), and if so, it is determined whether the function / method is an error ( Step S47). If there is an error, the log acquisition process ends (step S48). Further, this process is terminated when an instruction for termination is issued from the user (step S49).
[0048]
This makes it possible to start or stop log acquisition when an error occurs in any function / method, acquire the log requested by the user, and analyze the log. The effect is that it becomes easier.
[0049]
[Fourth Embodiment]
In the user interfaces in the first to third embodiments, the selectable functions / methods are merely arranged in a predetermined order. However, the user interface is a tree display so that the relationship between the interfaces and methods can be easily grasped. Also good.
[0050]
FIG. 19 relates to a user interface for displaying a tree of interfaces and methods in a software evaluation system that implements a log acquisition method according to the fourth embodiment of the present invention.
[0051]
The user interface is provided with a view (200) for displaying a tree of interfaces and methods. When the user checks the interface InterfaceA (201), all the methods MethodAA, MethodAB, and MethodAC (202 to 204) in the interface are all selected and become logs acquisition targets. Also, by unchecking the interface InterfaceB (205), all the methods MethodBA, MethodBB, and MethodBC (205 to 208) in the interface are all deselected and excluded from log acquisition targets.
[0052]
FIG. 20 is a diagram showing a flow of processing when acquiring a log when a log acquisition target is selected as shown in FIG. 19 in the software evaluation system according to the present embodiment.
[0053]
When the process is started (step S51), the log acquisition code determines whether the interface of the method is a log acquisition target every time an interface method is called (step S52). If it is a log acquisition target, the module name, interface, and method name are stored in the HDD (step S53).
[0054]
Next, the log acquisition code stores the time at the time of calling, the parameter, and the contents of the memory pointed to by the pointer parameter in the HDD (step S54), and calls the original method (step S55). When returning from the method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the HDD (step S56). This process is continued until an end command is received from the user (step S57).
[0055]
As a result, the relationship between the interface and the method can be more easily known, and the interface from which the log is to be acquired can be easily selected, and the user can easily obtain the desired log.
[0056]
[Fifth Embodiment]
In the first to third embodiments, when an arbitrary method is selected, selection is performed in units of interfaces. However, selection can be performed in units of methods.
[0057]
FIG. 21 relates to a user interface that displays a tree of interfaces and methods in the software evaluation system that implements the log acquisition method according to the present embodiment, and is the same as FIG. 19, but the selection method is different.
[0058]
The user interface is provided with a view (209) for displaying the interface and method as a tree. When the user checks the method MethodAA (211), MethodAC (213), MethodBA (215), and unchecks MethodAB (212), MethodBB (216), MethodBC (217), the interface InterfaceA (210), Bter It is possible to make the log acquisition target only the method checked by each interface, not all the methods in 214).
[0059]
FIG. 22 is a diagram illustrating a flow of processing when acquiring a log when a log acquisition target is selected as illustrated in FIG. 21 in the software evaluation system that implements the log acquisition method according to the present embodiment.
[0060]
When processing is started (step S59), the log acquisition code determines whether a method of the interface is a log acquisition target every time an interface method is called (step S60). If it is a log acquisition target, the module name, interface, and method name are stored in the HDD (step S61).
[0061]
Next, the log acquisition code saves the time at the time of calling, the parameter, and the contents of the memory indicated by the pointer parameter in the HDD (step S62), and calls the original method (step S63). When returning from the method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the HDD (step S64). This process is continued until an end command is received from the user (step S65).
[0062]
As a result, it is possible to easily select a method for which a log is to be acquired for each method instead of a large range for each interface, and it is possible to easily acquire a log requested by a user.
[0063]
[Sixth Embodiment]
In each of the above embodiments, the acquired log is stored in an arbitrary location of the HDD. However, the log may be stored for each date so that the log can be easily analyzed.
[0064]
FIG. 23 is a diagram showing a flow of processing when logs are stored separately for each date.
[0065]
When the process is started (step S71), log acquisition is started, and the module name, interface name, and function / method name are stored in the memory (step S72).
[0066]
Next, the log acquisition code stores the date / time at the time of calling, the parameter, and the contents of the memory pointed to by the pointer / parameter in the memory (step S73), and calls the original function / method (step S74). When the function / method returns, the log acquisition code stores the return date / time, the return value, and the contents of the memory indicated by the pointer / parameter in the memory (step S75). Thereafter, it is determined whether the return date of the called function / method is different from the return date of the previously saved log (step S76). If the dates are different, a new log file is created and the log is saved in the file (step S77). If the dates are the same, the log is saved in a conventional log file (step S78). This process is terminated when there is a termination command from the user (step S79) (step S80).
[0067]
As a result, the user can obtain a desired log for each date, and the log can be easily analyzed.
[0068]
[Seventh embodiment]
In the sixth embodiment, the case of storing the log for each date has been described, but the log may be divided and stored for each size or number.
[0069]
FIG. 24 is a diagram showing the flow of processing when logs are stored separately for each size or number.
[0070]
When the process is started (step S71), log acquisition is started, and the module name, interface name, and function / method name are stored in the memory (step S72). Next, the log acquisition code saves the time at the time of calling, the parameter, and the contents of the memory indicated by the pointer parameter in the memory (step S73), and calls the original function / method (step S74). When the function / method returns, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the memory (step S75). Thereafter, when new log data is stored in a conventional log file, it is determined whether the file size exceeds a certain value or a certain number of logs (step S76).
[0071]
If it exceeds a certain size or exceeds a certain number, a new log file is created and the log is saved in that file (step S77). The log is saved in (Step S18). When a new log file is created, it is determined whether or not the ring buffer is used and the number of created log files is greater than 2 (step S79). If the condition is met, the oldest log file is deleted (step S90). This process is terminated when the user gives a termination command (step S91) (step S92).
[0072]
As a result, the user can acquire a plurality of logs created within a certain size, or can acquire them for each certain number of logs, thereby providing an effect of easy handling. Also, by using the ring buffer, it is possible to keep the load applied to the resources of the PC by this software evaluation system constant, and it becomes possible to acquire stable logs.
[0073]
[Eighth embodiment]
FIG. 25 is a schematic diagram of a memory when a certain number of acquired logs are stored in the memory.
[0074]
There are n log storage memory areas for storing a certain number of logs (218), and each log storage memory area stores a log of function / method for one time, and the information includes module name and interface name. , Function / method name, calling time, calling parameter data, ending time, ending parameter data, return value data, and the like are stored (219), and have a variable size. In this memory area, log data is stored in order from the log
[0075]
FIG. 26 is a diagram showing a flow of log acquisition when a certain number of acquired logs are stored in the memory.
[0076]
When the process is started (step S93), a variable x indicating the location of the log storage memory area is initialized to 1 (step S94). Then, log acquisition is started, and the module name, interface name, and function / method name are stored in the log storage memory area x (step S95).
[0077]
Next, the log acquisition code saves the time of calling, the parameter, and the memory contents pointed to by the pointer parameter in the log storage memory area x (step S96), and calls the original function / method (step S97). When returning from the function / method, the log acquisition code stores the return time, the return value, and the contents of the memory indicated by the pointer parameter in the log storage memory area x (step S98). Thereafter, 1 is added to the variable x indicating the location of the log storage memory area (step S99), and it is determined whether x is larger than the number n of log storage memory areas (step S100).
[0078]
If x is larger than n, 1 is substituted for x, and the log storage memory area is set to be used again from the beginning (step S101). After that, it is determined whether or not the ring buffer is used (step S102). If not used, all log data on the memory is saved in the log file (step S103), and all log data on the memory is deleted. (Step S104). This process is terminated when the user gives a termination command (step S105) (step S106).
[0079]
As a result, the amount of memory used can be limited to a certain value, the load that the software evaluation system gives to the resources of the PC can be suppressed, and stable log acquisition can be performed.
[0080]
[Other Embodiments]
Note that the present invention can be applied to a system including a plurality of devices (for example, a host computer, an interface device, a reader, and a printer), and a device (for example, a copying machine and a facsimile device) including a single device. You may apply to.
[0081]
Another object of the present invention is to supply a storage medium storing software program codes for implementing the functions of the above-described embodiments to a system or apparatus, and the computer (or CPU or MPU) of the system or apparatus stores the storage medium. Needless to say, this can also be achieved by reading and executing the program code stored in the.
[0082]
In this case, the program code itself read from the storage medium realizes the functions of the above-described embodiment, and the storage medium storing the program code constitutes the present invention.
[0083]
As a storage medium for supplying the program code, for example, a floppy (registered trademark) disk, hard disk, optical disk, magneto-optical disk, CD-ROM, CD-R, magnetic tape, nonvolatile memory card, ROM, or the like is used. be able to.
[0084]
Further, by executing the program code read by the computer, not only the functions of the above-described embodiments are realized, but also an OS (operating system) operating on the computer based on the instruction of the program code. It goes without saying that a case where the function of the above-described embodiment is realized by performing part or all of the actual processing and the processing is included.
[0085]
Further, after the program code read from the storage medium is written in a memory provided in a function expansion board inserted into the computer or a function expansion unit connected to the computer, the function expansion is performed based on the instruction of the program code. It goes without saying that the CPU or the like provided in the board or the function expansion unit performs part or all of the actual processing, and the functions of the above-described embodiments are realized by the processing.
[0086]
【The invention's effect】
As described above, according to the present invention, it is possible to easily obtain a processing log of software divided into a plurality of modules, and to reduce the man-hours for analyzing the cause of software failure.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration of a computer (software evaluation system) that implements a log acquisition method according to a first embodiment of the present invention.
FIG. 2 is a diagram showing a normal memory configuration at the time of loading a function, for explaining a log acquisition method according to the first embodiment of the present invention;
FIG. 3 is a diagram showing a memory configuration when using the IAT Patch of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 4A is a diagram showing a state when using the IAT Patch of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 4B is a diagram showing a flow of log acquisition processing of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 5 is a diagram showing an internal configuration when using the IAT Patch of the software evaluation system according to the first embodiment of the present invention.
FIG. 6 is a diagram showing a normal memory configuration at the time of creating an instance of a COM server interface, for explaining a log acquisition method according to the first embodiment of the present invention;
FIG. 7 is a diagram showing a memory configuration when using the VTable Patch of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 8A is a diagram showing a state when using the VTable Patch of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 8B is a diagram showing a flow of log acquisition processing of the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 9 is a diagram showing an internal configuration of a software evaluation system that implements a log acquisition method according to the first embodiment of the present invention;
FIG. 10 is a diagram showing a user interface for setting a function / method for starting log acquisition in the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 11 is a diagram showing a flow when a log is acquired according to the contents set in FIG. 10 in the software evaluation system that implements the log acquisition method according to the first embodiment of the present invention;
FIG. 12 is a diagram showing a user interface for setting a function / method for stopping log acquisition in the software evaluation system that implements the log acquisition method according to the second embodiment of the present invention;
FIG. 13 is a diagram showing a flow when a log is acquired according to the contents set in FIG. 12 in the software evaluation system for realizing the log acquisition method according to the second embodiment of the present invention.
FIG. 14 is a diagram showing an example of a software evaluation system that implements a log acquisition method according to the third embodiment of the present invention. The user interface for setting a function / method for starting / stopping log acquisition ends with an error. It is a figure which shows the user interface which added the setting which uses a trigger function only in the case.
FIG. 15 is a diagram showing the contents of function / method error definitions in a software evaluation system that implements a log acquisition method according to a third embodiment of the present invention;
FIG. 16 is a diagram showing a flow when a log is acquired according to the contents set in FIG. 14 in the software evaluation system that implements the log acquisition method according to the third embodiment of the present invention;
FIG. 17 is a diagram showing a detailed flow of a normal log acquisition process shown in step S27 of FIG. 16 in the software evaluation system that implements the log acquisition method according to the third embodiment of the present invention;
FIG. 18 is a diagram showing a flow when a log is acquired according to the contents set in FIG. 14 in the software evaluation system that implements the log acquisition method according to the third embodiment of the present invention;
FIG. 19 is a diagram showing a user interface for displaying a tree of interfaces and methods in a software evaluation system that implements a log acquisition method according to a fourth embodiment of the present invention;
FIG. 20 is a diagram showing a flow of processing when acquiring a log when a log acquisition target is selected as shown in FIG. 19 in the software evaluation system according to the fourth embodiment of the present invention;
FIG. 21 is a diagram showing a user interface for displaying a tree of interfaces and methods in a software evaluation system that implements a log acquisition method according to a fifth embodiment of the present invention;
FIG. 22 shows the flow of processing when acquiring a log when a log acquisition target is selected as shown in FIG. 21, in a software evaluation system that implements a log acquisition method according to a fifth embodiment of the present invention; FIG.
FIG. 23 is a diagram showing a processing flow when a log is divided and stored for each date in a software evaluation system that implements a log acquisition method according to a sixth embodiment of the present invention;
FIG. 24 is a diagram showing a processing flow when a log is divided and stored for each size or number in the software evaluation system for realizing the log acquisition method according to the seventh embodiment of the present invention.
FIG. 25 is a schematic diagram of a memory when a certain number of acquired logs are stored in a memory in a software evaluation system that implements a log acquisition method according to an eighth embodiment of the present invention;
FIG. 26 is a diagram showing a flow of log acquisition when a predetermined number of acquired logs are stored in a memory in a software evaluation system that implements a log acquisition method according to an eighth embodiment of the present invention;
[Explanation of symbols]
1: CPU
2: Chipset
3: RAM
4: Hard disk controller
5: Display controller
6: Hard disk drive
7: CD-ROM drive
8: Display
11: Signal line connecting CPU and chipset
12: Signal line connecting chipset and RAM
13: Peripheral device bus connecting chipset and various peripheral devices
14: Signal line connecting hard disk controller and hard disk drive
15: Signal line connecting hard disk controller and CD-ROM drive
16: Signal line connecting display controller and display
Claims (17)
前記選択手段が、前記ダイナミックリンクライブラリ内の関数のリスト中からユーザが選択指示した関数を、ログを取得すべき関数として選択する選択工程と、
前記書き換え手段が、前記対象プログラムの実行前に、前記選択工程で選択された各関数に対応するログ取得のための関数を前記ダイナミックリンクライブラリ内にロードし、前記インポート関数アドレステーブル上に記憶された前記選択された関数のアドレスを、対応する前記ログ取得のための関数のアドレスに書き換える工程と、
前記呼び出し手段が、前記選択された関数に対する前記インポート関数アドレステーブル上の書き換え後の前記アドレスに基づいて、前記ログ取得のための関数を呼び出して前記実行手段に実行させることで実現されるログ取得手段を起動する工程と、
前記ログ取得手段が、前記呼び出し手段による呼び出しに関わるログを前記ログ記録手段に記録し、前記呼び出し手段により呼び出された前記ログ取得のための関数に対応する前記選択された関数を呼び出して、該選択された関数を前記実行手段に実行させる工程と、
前記ログ取得手段が、前記選択された関数の実行結果を受け取って該実行結果に関わるログを前記ログ記録手段に記録し、当該実行結果を前記対象プログラムに渡す工程と
を備えることを特徴とするログ取得方法。A dynamic link library that stores functions, and import function address table storing an address of the function number, a program storage means for storing a target program to be executed by calling a function in the dynamic link libraries, memory for storing programs a medium, and logging means logs are recorded, and a means for executing the program, and rewriting means for the execution unit is realized by executing a program stored in the storage medium, selection means And a log acquisition method for acquiring a log during execution of the target program in an information processing apparatus comprising a calling unit,
It said selection means, the function selected by the user instruction from the list of functions in the dynamic link library, a selection step of selecting as a function should retrieve log,
The rewriting means loads a function for log acquisition corresponding to each function selected in the selection step into the dynamic link library and stores it in the import function address table before executing the target program. Rewriting the address of the selected function with the address of the function for acquiring the corresponding log;
Log acquisition realized by the calling means calling the function for log acquisition and causing the execution means to execute based on the rewritten address on the import function address table for the selected function Invoking means;
The log acquisition unit records a log related to the call by the calling unit in the log recording unit, calls the selected function corresponding to the function for log acquisition called by the calling unit, and Causing the execution means to execute a selected function;
The log acquisition unit includes a step of receiving an execution result of the selected function, recording a log related to the execution result in the log recording unit, and passing the execution result to the target program. Log acquisition method.
前記選択手段が、前記ダイナミックリンクライブラリ内の関数のリスト中からユーザが選択指示した関数を、ログ取得停止のトリガーとすべき関数として選択する選択工程と、
前記書き換え手段が、前記対象プログラムの実行前に、前記ダイナミックリンクライブラリ内の各関数に対応するログ取得のための関数を当該ダイナミックリンクライブラリ内にロードし、前記インポート関数アドレステーブル上に記憶された各関数のアドレスを、対応する前記ログ取得のための関数のアドレスに書き換える工程と、
前記呼び出し手段が、前記対象プログラムが呼び出そうとする呼び出し対象の関数に対する前記インポート関数アドレステーブル上の書き換え後の前記対応するログ取得のための関数のアドレスに基づいて、前記ログ取得のための関数を呼び出して前記実行手段に実行させることで実現されるログ取得手段を起動する工程と、
前記ログ取得手段が、前記呼び出し手段による呼び出しに関わるログを前記ログ記録手段に記録し、前記呼び出し手段により呼び出された前記ログ取得のための関数に対応する前記呼び出し対象の関数を呼び出して、該呼び出し対象の関数を前記実行手段に実行させる工程と、
前記ログ取得手段が、前記呼び出し対象の関数の実行結果を受け取って該実行結果に関わるログを前記ログ記録手段に記録し、当該実行結果を前記対象プログラムに渡す工程と
前記停止手段が、前記ログ取得手段が呼び出した呼び出し対象の関数が前記選択工程で選択された関数であれば、以後のログの記録を停止させる停止工程と
を備えることを特徴とするログ取得方法。A dynamic link library that stores functions, and import function address table storing an address of the function number, a program storage means for storing a target program to be executed by calling a function in the dynamic link libraries, memory for storing programs a medium, and logging means logs are recorded, and a means for executing the program, and rewriting means for the execution unit is realized by executing a program stored in the storage medium, selection means And in an information processing apparatus comprising a calling unit and a stopping unit, a log acquisition method for acquiring a log during execution of the target program,
It said selection means comprises a selection step of the function selected by the user instruction from the list of functions in dynamic link libraries, selected as a function to be triggered in the log acquisition stop,
The rewriting means loads a log acquisition function corresponding to each function in the dynamic link library into the dynamic link library and stores it in the import function address table before executing the target program. Rewriting the address of each function to the address of the corresponding function for log acquisition;
The call means is configured to acquire the log based on the address of the corresponding function for log acquisition after rewriting on the import function address table for the function to be called that the target program is to call. Starting a log acquisition means realized by calling a function and causing the execution means to execute;
The log acquisition unit records a log related to a call by the calling unit in the log recording unit, calls the function to be called corresponding to the function for log acquisition called by the calling unit, and Causing the execution means to execute a function to be called;
The log acquisition means receives the execution result of the function to be called, records a log related to the execution result in the log recording means, and passes the execution result to the target program; and the stopping means includes the log A log acquisition method comprising: a stop step of stopping recording of subsequent logs if the function to be called called by the acquisition means is a function selected in the selection step.
前記ログ取得手段は、前記エラーの有無を判断する工程によりエラー有りと判断された場合、前記ログを前記ログ記録手段に記録することを特徴とする請求項1に記載のログ取得方法。The information processing apparatus further includes a determination unit that determines whether there is an error, and the log acquisition method further includes a step in which the determination unit determines whether there is an error after executing the function selected in the selection step. ,
The log acquisition method according to claim 1, wherein the log acquisition unit records the log in the log recording unit when it is determined that there is an error in the step of determining whether there is an error.
前記停止工程では、前記エラーの有無を判断する工程によりエラー有りと判断された場合に、以後のログの記録を停止することを特徴とする請求項2に記載のログ取得方法。The information processing apparatus further includes an error determination unit that determines whether there is an error, and the log acquisition method further includes a step in which the determination unit determines whether there is an error after executing the function selected in the selection step. Prepared,
The log acquisition method according to claim 2, wherein, in the stop step, subsequent log recording is stopped when it is determined that there is an error in the step of determining whether or not there is an error.
前記選択手段が、前記インターフェース内のメソッドのリスト中からユーザが選択指示したメソッドを、ログを取得すべきメソッドとして選択する選択工程と、
前記書き換え手段が、前記対象プログラムの実行前に、前記選択工程で選択された各メソッドに対応するログ取得のためのメソッドを前記インターフェース内にロードし、前記仮想アドレステーブル上に記憶された前記選択されたメソッドのアドレスを、対応する前記ログ取得のためのメソッドのアドレスに書き換える工程と、
前記呼び出し手段が、前記選択されたメソッドに対する前記仮想アドレステーブル上の書き換え後の前記アドレスに基づいて、前記ログ取得のためのメソッドを呼び出して前記実行手段に実行させることで実現されるログ取得手段を起動する工程と、
前記ログ取得手段が、前記呼び出し手段による呼び出しに関わるログを前記ログ記録手段に記録し、前記呼び出し手段により呼び出された前記ログ取得のためのメソッドに対応する前記選択されたメソッドを呼び出して、該選択されたメソッドを前記実行手段に実行させる工程と、
前記ログ取得手段が、前記選択されたメソッドの実行結果を受け取って該実行結果に関わるログを前記ログ記録手段に記録し、当該実行結果を前記対象プログラムに渡す工程と
を備えることを特徴とするログ取得方法。An interface that stores methods, the virtual address table storing an address of the method, a program storage means for storing a target program to be executed by calling a method in the interface, and a storage medium for storing a program, logs A log recording means to be recorded; an execution means for executing a program; the rewriting means realized by the execution means executing the program stored in the storage medium ; a calling means; and a selection means; In an information processing apparatus comprising: a log acquisition method for acquiring a log during execution of the target program,
Said selection means, the method that the user from the list of methods in the interface selected instruction, a selection step of selecting a method should acquire log,
The rewriting means loads a method for log acquisition corresponding to each method selected in the selection step into the interface before execution of the target program, and stores the selection stored in the virtual address table. Rewriting the address of the registered method with the address of the method for acquiring the corresponding log,
Log acquisition means realized by calling the method for log acquisition and causing the execution means to execute based on the rewritten address on the virtual address table for the selected method. Starting the process,
The log acquisition unit records a log related to the call by the calling unit in the log recording unit, calls the selected method corresponding to the method for log acquisition called by the calling unit, and Causing the execution means to execute the selected method;
The log acquisition unit includes a step of receiving an execution result of the selected method, recording a log related to the execution result in the log recording unit, and passing the execution result to the target program. Log acquisition method.
前記選択手段が、前記インターフェース内のメソッドのリスト中からユーザが選択指示したメソッドを、ログ取得停止のトリガーとすべきメソッドとして選択する選択工程と、
前記書き換え手段が、前記対象プログラムの実行前に、前記インターフェース内の各メソッドに対応するログ取得のためのメソッドを当該インターフェース内にロードし、前記仮想アドレステーブル上に記憶された各メソッドのアドレスを、対応する前記ログ取得のためのメソッドのアドレスに書き換える工程と、
前記呼び出し手段が、前記対象プログラムが呼び出そうとする呼び出し対象のメソッドに対する前記仮想アドレステーブル上の書き換え後の前記対応するログ取得のためのメソッドのアドレスに基づいて、前記ログ取得のためのメソッドを呼び出して前記実行手段に実行させることで実現されるログ取得手段を起動する工程と、
前記ログ取得手段が、前記呼び出し手段による呼び出しに関わるログを前記ログ記録手段に記録し、前記呼び出し手段により呼び出された前記ログ取得のためのメソッドに対応する前記呼び出し対象のメソッドを呼び出して、該呼び出し対象のメソッドを前記実行手段に実行させる工程と、
前記ログ取得手段が、前記呼び出し対象のメソッドの実行結果を受け取って該実行結果に関わるログを前記ログ記録手段に記録し、当該実行結果を前記対象プログラムに渡す工程と
前記停止手段が、前記ログ取得手段が呼び出した呼び出し対象のメソッドが前記選択工程で選択されたメソッドであれば、以後のログの記録を停止させる停止工程と
を備えることを特徴とするログ取得方法。An interface that stores methods, the virtual address table storing an address of the method, a program storage means for storing a target program to be executed by calling a method in the interface, and a storage medium for storing a program, logs Rewriting means realized by executing a program stored in the storage medium , a selection means, and a calling means, having log recording means to be recorded and execution means for executing a program; In the information processing apparatus comprising a stopping unit, a log acquisition method for acquiring a log during execution of the target program,
Said selection means, the method that the user from the list of methods in the interface selected instruction, a selection step of selecting a method to be a trigger for log acquisition stop,
Before executing the target program, the rewriting means loads a method for log acquisition corresponding to each method in the interface into the interface, and sets the address of each method stored in the virtual address table. Rewriting the address of the corresponding method for acquiring the log;
The method for acquiring the log based on the address of the corresponding method for acquiring the log after the rewriting on the virtual address table for the method to be called that the target program is to call by the target program Starting log acquisition means realized by calling and causing the execution means to execute,
The log acquisition unit records a log related to a call by the calling unit in the log recording unit, calls the method to be called corresponding to the method for log acquisition called by the calling unit, and Causing the execution means to execute a method to be called;
The log acquisition means receives the execution result of the method to be called, records a log related to the execution result in the log recording means, and passes the execution result to the target program; and the stopping means includes the log If the method to be called that is called by the acquisition means is the method selected in the selection step, the log acquisition method further comprises a stop step for stopping log recording thereafter.
前記ログ取得手段は、前記エラーの有無を判断する工程によりエラー有りと判断された場合、前記ログを前記ログ記録手段に記録することを特徴とする請求項5に記載のログ取得方法。The information processing apparatus further includes a determination unit that determines whether there is an error, and the log acquisition method further includes a step in which the determination unit determines whether there is an error after executing the method selected in the selection step. ,
6. The log acquisition method according to claim 5, wherein the log acquisition unit records the log in the log recording unit when it is determined that there is an error in the step of determining whether there is an error.
前記停止工程では、前記エラーの有無を判断する工程によりエラー有りと判断された場合に、以後のログの記録を停止することを特徴とする請求項6に記載のログ取得方法。The information processing apparatus further includes an error determination unit that determines whether there is an error, and the log acquisition method further includes a step in which the determination unit determines whether there is an error after executing the method selected in the selection step. Prepared,
The log acquisition method according to claim 6, wherein, in the stopping step, when it is determined that there is an error in the step of determining whether or not there is an error, the subsequent log recording is stopped.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191129A JP4125055B2 (en) | 2002-06-28 | 2002-06-28 | Log acquisition method |
US10/600,843 US7086034B2 (en) | 2002-06-28 | 2003-06-23 | Method, program, and storage medium for acquiring logs |
EP03254035A EP1376366A3 (en) | 2002-06-28 | 2003-06-25 | Method for acquiring logs for program debugging |
CNB031493319A CN1251062C (en) | 2002-06-28 | 2003-06-27 | Operating journal obtaining method, program, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191129A JP4125055B2 (en) | 2002-06-28 | 2002-06-28 | Log acquisition method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038313A JP2004038313A (en) | 2004-02-05 |
JP4125055B2 true JP4125055B2 (en) | 2008-07-23 |
Family
ID=31700843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002191129A Expired - Fee Related JP4125055B2 (en) | 2002-06-28 | 2002-06-28 | Log acquisition method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4125055B2 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361082C (en) * | 2005-08-26 | 2008-01-09 | 北京中星微电子有限公司 | Method for calling function containing pointer parameter between different operation platforms |
CN100458702C (en) * | 2005-08-26 | 2009-02-04 | 北京中星微电子有限公司 | A method of function call between different running platforms |
CN100458703C (en) * | 2005-08-26 | 2009-02-04 | 北京中星微电子有限公司 | A cross-platform function call system |
JP2007299126A (en) * | 2006-04-28 | 2007-11-15 | Mitsubishi Electric Corp | Controller and program for controller |
JP5417837B2 (en) * | 2008-12-19 | 2014-02-19 | 富士ゼロックス株式会社 | Image processing device |
US10007685B2 (en) | 2012-10-04 | 2018-06-26 | Alcatel Lucent | Data logs management in a multi-client architecture |
JP6371052B2 (en) * | 2013-11-13 | 2018-08-08 | リネオソリューションズ株式会社 | Trace information recording method, trace information recording system, and trace information transmission program |
-
2002
- 2002-06-28 JP JP2002191129A patent/JP4125055B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004038313A (en) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9514029B2 (en) | Partial recording of a computer program execution for replay | |
US9727436B2 (en) | Adding a profiling agent to a virtual machine to permit performance and memory consumption analysis within unit tests | |
US7478282B2 (en) | Log acquisition method and its control program and storage medium | |
US7251808B2 (en) | Graphical debugger with loadmap display manager and custom record display manager displaying user selected customized records from bound program objects | |
US7086034B2 (en) | Method, program, and storage medium for acquiring logs | |
EP0972256B1 (en) | Computer file system providing looped file structure for post-occurrence data collection of asynchronous events | |
US7188279B2 (en) | Method, program, and storage medium for acquiring logs | |
US7426660B2 (en) | Method, program, and storage medium for acquiring logs | |
JP4681868B2 (en) | Information processing apparatus and control method therefor, computer program, and storage medium | |
JP4125055B2 (en) | Log acquisition method | |
US6647479B1 (en) | Computer file system providing looped file structure for post-occurrence data collection of asynchronous events | |
US7277827B2 (en) | Device testing framework for creating device-centric scenario-based automated tests | |
JP4280749B2 (en) | Log acquisition method, program, and storage medium | |
US6915512B1 (en) | Software editing with indication of format and processing state of each process of the software | |
JP4125053B2 (en) | Log acquisition method | |
JP4125056B2 (en) | Log acquisition method | |
JP4125054B2 (en) | Log acquisition method | |
US8191050B2 (en) | Information processor, control method therefor, computer program and storage medium | |
JP4886188B2 (en) | Information processing apparatus and control method therefor, computer program, and storage medium | |
JP2006031248A (en) | Software evaluation system for generating log by hooking function call | |
US7519868B2 (en) | Information processing apparatus, information processing method, computer program, and storage medium | |
CN117854580B (en) | Method, device, equipment and storage medium for rapidly detecting hard disk bad track | |
JP2001134464A (en) | Method and device for processing information | |
CN118733116A (en) | Function tracking method and device | |
JP2003228492A (en) | Computer simulation program, verification method for model of processor, and computer simulation method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071001 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071225 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080225 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080414 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080507 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4125055 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110516 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120516 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120516 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130516 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140516 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |