JP2005196779A - ログ取得方法およびプログラム、記憶媒体 - Google Patents
ログ取得方法およびプログラム、記憶媒体 Download PDFInfo
- Publication number
- JP2005196779A JP2005196779A JP2004377887A JP2004377887A JP2005196779A JP 2005196779 A JP2005196779 A JP 2005196779A JP 2004377887 A JP2004377887 A JP 2004377887A JP 2004377887 A JP2004377887 A JP 2004377887A JP 2005196779 A JP2005196779 A JP 2005196779A
- Authority
- JP
- Japan
- Prior art keywords
- log
- function
- log acquisition
- acquisition method
- interface
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】所定の処理を実行するための少なくとも1つの関数116を備えるプログラム113の実行中のログを取得するための方法は、少なくとも1つの関数116のアドレスをログ取得のための関数114のアドレスに書き換える工程を備え、該ログ取得のための関数114は、少なくとも1つの関数116を呼び出し、所定の処理を実行させ、実行結果を受け取り、受け取った該実行結果をプログラム113に受け渡し、所定の方法でその形式を指定可能なポインタ・パラメータが、前記プログラムの関数定義111において定義されているか否かを判断し、定義されている場合には、ポインタ・パラメータにより指定されたメモリの内容を、指定されたデータ形式のデータとして記録115することを特徴とする。
【選択図】図5
Description
(1)ユーザの動作環境でもログを取得しつづけるためには、ソフトウェアのモジュール自体に手を加え、処理ログ取得ルーチンを追加しなければならず、処理ログ取得のための作業負荷が大きかった。
(2)処理ログ取得はモジュール毎に行うため、生成されたログはモジュール単位のものとなってしまい、ソフトウェア全体の処理を、完全に時間順のログとして取得するのが困難である。このため、全体の処理ログとしての見通しが悪く、ログを解析して障害の原因を発見するまでのプロセスに工数がかかっていた。
(1)ユーザの動作環境でもログを取得しつづけるためには、ソフトウェアのモジュール自体に手を加え、処理ログ取得ルーチンを追加しなければならず、処理ログ取得のための作業負荷が大きかった。
(2)処理ログ取得はモジュール毎に行うため、生成されたログはモジュール単位のものとなってしまい、ソフトウェア全体の処理を、完全に時間順のログとして取得するのが困難である。このため、全体の処理ログとしての見通しが悪く、ログを解析して障害の原因を発見するまでのプロセスに工数がかかっていた。
ロードされた前記所定の処理を行う少なくとも1つの関数のアドレスを、ログ取得のための関数のアドレスに書き換える工程を備え、前記ログ取得のための関数は、前記所定の処理を行う少なくとも1つの関数を呼び出し、該所定の処理を実行させ、受け取った実行結果を前記プログラムに渡す工程と、
前記プログラム内の関数定義において、ポインタ・パラメータが所定の定義方法で定義されているか否かを判断する工程と、
ポインタ・パラメータが所定の定義方法で定義されていた場合、該定義方法に基づいて該ポインタ・パラメータの指すメモリの内容を特定のデータ形式のデータとして記録する工程とを備える。
本実施形態は、あるモジュールから別のモジュール内に存在する関数の呼び出しが行われる際の仕組みである、メモリに保持されたインポート関数アドレス、または仮想関数アドレステーブル(virtual address table)を利用して、モジュール間の関数呼び出しをフックしてログに記録することで、ソフトウェアのモジュール自体に手を加えることなく、ソフトウエア全体の処理を、時間順のログとして取得することを可能にするものである。以下に具体的に説明する。
図1は、本発明の各実施形態にかかるログ取得方法を実現するコンピュータ(ソフトウェア評価システム)の構成をあらわす図である。説明を簡略化するために、本実施形態では、本ソフトウェア評価システムが1台のPC内部に構築されるものとするが、本発明のログ取得方法の特徴は1台のPC内部に構築されるか、あるいは複数のPCにネットワークシステムとして構築されるかによらず有効である。
本発明の第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムを説明するために、まず図2によって、複数のモジュールに分かれたソフトウェアが、通常の状態でどのようにメモリにロードされるかを説明する。
ログ取得が開始されると、メモリ内には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)を呼び出す。
通常は実行形式のEXE(113)が、DLL−1(116)やDLL−2(117)内の関数を呼び出すが、ここではAPIトレーサ(114)と呼ばれるログ取得コードを埋め込み、処理ログ(115)を生成している。APIトレーサ(114)は、DLL−1やDLL−2の関数定義を記述したファイル(111)と、どのDLLのどの関数のインポート関数テーブルを書き換えてログを取得するかの設定シナリオ(トレースシナリオ112)を元に動作する。
次に、第1の実施形態にかかるログ取得方法を実現するソフトウェア評価システムにおいて、実行ファイルEXE(113)がCOM(Component Object Model)サーバでエクスポートされているインターフェースのインスタンス作成時に、どのようにメモリにロードされるかを説明するために、まず、図6によって、通常の状態でどのようにメモリにロードされるかを説明する。
本実施形態では、コールバック関数等のエクスポートされていない関数をログとして取得する場合について述べる。
図14は第3の実施形態にかかるソフトウェア評価システムにおいて用いられ、従来の関数定義ではパラメータは取得することができない関数の一例を示す図である。
本実施形態では、ログ取得のための各種設定を行うユーザインターフェースと、該ユーザインターフェースで設定された情報に基づいて行われる処理について説明する。図19は、第4の実施形態にかかるログ取得を開始する関数/メソッドを設定するためのユーザインターフェースである。
上記第4の実施形態では、ログを取得する関数/メソッドをユーザが任意に選択可能としたが、本実施形態では、ログ取得を停止する関数/メソッドを任意に選択可能とする。
上記第4および第5の実施形態において述べたユーザインタフェースでは、ユーザが選択した任意の関数/メソッドでログの取得開始/停止をユーザが任意に選択することとしたが、ユーザが選択した任意の関数/メソッドが、エラーで終了した場合のみ、ログの取得開始/停止をするように設定することも可能である。
次にログ取得コードは、呼び出し時の時刻、パラメータ及びポインタ・パラメータの指すメモリの内容をHDDに保存し(ステップS4003)、元の関数/メソッドを呼び出す(ステップS4004)。関数/メソッドからリターンすると、ログ取得コードはリターン時の時刻、戻り値及びポインタ・パラメータの指すメモリの内容をHDDに保存する(ステップS4005)。
上記第4乃至第6の実施形態におけるユーザインターフェースは、選択可能な関数/メソッドが所定の順序で配列されているにすぎなかったが、インターフェース、メソッドの関係が容易に把握できるようなツリー表示としてもよい。
上記第4乃至第7の実施形態では、任意のメソッドを選択するにあたり、インターフェース単位で選択を行うこととしたが、さらに、メソッド単位で選択を行うことも可能である。
上記実施形態においては、取得したログをHDDの任意の場所に保存していたが、ログの解析を容易に行うことができるよう、日付ごとに保存するようにしてもよい。
上記第9の実施形態では、日付ごとにログを保存する場合について述べたが、サイズ毎もしくは個数毎にログを分割して保存するようにしてもよい。
図34は、取得したログを一定数だけメモリに保存する場合のメモリの概要図である。
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
Claims (21)
- 所定の処理を行う関数を備えるプログラムの実行中のログを取得するログ取得方法であって、
ロードされた前記所定の処理を行う関数のアドレスを、ログ取得のための関数のアドレスに書き換える工程を備え、
前記ログ取得のための関数は、
前記所定の処理を行う関数を呼び出し、該所定の処理を実行させ、受け取った実行結果を前記プログラムに渡す工程と、
前記プログラム内の関数定義において、ポインタ・パラメータが所定の定義方法で定義されているか否かを判断する工程と、
ポインタ・パラメータが所定の定義方法で定義されていた場合、該定義方法に基づいて該ポインタ・パラメータの指すメモリの内容をログとして記録する工程と
を備えることを特徴とするログ取得方法。 - 前記ポインタ・パラメータの種類は、インデックス構造体により定義され、前記判断する工程は、当該インデックス構造体の指定されたメンバーを参照することにより、当該ポインタ・パラメータの種類を判断する工程を含むことを特徴とする請求項1に記載のログ取得方法。
- 前記インデックス構造体のメンバーのうちの少なくともいくつかは、様々な種類の非エクスポート関数であることを特徴とする請求項2に記載のログ取得方法。
- 前記インデックス構造体のメンバーの少なくともいくつかは、様々な種類の構造体であることを特徴とする請求項2に記載のログ取得方法。
- ログ取得のための前記関数は更に前記定義に基づいてメモリサイズを算出する工程を備え、前記記録工程は、前記ポインタ・パラメータの指すメモリの内容量であって、前記算出されたメモリサイズに等しい量を記録することを備えることを特徴とする請求項1乃至4のいずれかに記載のログ取得方法。
- 前記呼び出す工程の前に、ログ取得のための少なくとも1つの前記関数を選択する工程を備えることを特徴とする請求項1乃至4のいずれかに記載のログ取得方法。
- ログの記録を停止させるための少なくとも1つの関数を選択する工程と、
ログの記録を停止させるための少なくとも1つの関数が、ログの記録後にログの記録を停止する工程と
を備えることを特徴とする請求項1乃至4のいずれかに記載のログ取得方法。 - 前記ログ取得のための関数は、前記選択工程において選択された少なくとも1つの関数の実行中にエラーが発生していないか否かを判断する工程を更に備え、当該エラー判断工程においてエラーが発生したと判断された場合に、前記記録工程が開始されることを特徴とする請求項6に記載のログ取得方法。
- 前記ログ取得のための関数は、前記選択工程において選択された少なくとも1つの関数の実行中にエラーが発生していないか否かを判断する工程を更に備え、当該エラー判断工程においてエラーが発生したと判断された場合に、前記ログ記録の停止工程により、ログの記録が停止されることを特徴とする請求項7に記載のログ取得方法。
- COMサーバによりエクスポートされたインターフェースと、該インターフェースに属する関数とをツリー形式で表示する工程を更に備え、前記選択工程は前記表示を介して選択を実行することを特徴とする請求項6に記載のログ取得方法。
- COMサーバによりエクスポートされたインターフェースと、該インターフェースに属する関数とをツリー形式で表示する工程を更に備え、前記選択工程は前記表示を介して関数を選択することを特徴とする請求項7に記載のログ取得方法。
- 前記選択工程は、関数毎の基準で選択を実行することを特徴とする請求項10に記載のログ取得方法。
- 前記選択工程は、関数毎の基準で選択を実行することを特徴とする請求項11に記載のログ取得方法。
- 前記選択工程は、前記インターフェースを選択することにより、前記インターフェースに属する全ての関数を選択することを特徴とする請求項10に記載のログ取得方法。
- 前記選択工程は、前記インターフェースを選択することにより、前記インターフェースに属する全ての関数を選択することを特徴とする請求項11に記載のログ取得方法。
- 前記記録する工程は、日毎の基準でログを記録することを特徴とする請求項6に記載のログ取得方法。
- ログのサイズが所定のサイズを超えた場合に、前記ログ記録工程は、新たにファイルを生成することを特徴とする請求項6に記載のログ取得方法。
- ログの数が所定の数を超えた場合に、前記ログ記録工程は、新たにファイルを生成することを特徴とする請求項6に記載のログ取得方法。
- メモリ内にログとして記録する前記工程は、該メモリ内のログの数が所定の数を超えた場合に、ディスク装置に該ログを移動し保存することを特徴とする請求項6に記載のログ取得方法。
- 請求項1乃至19のいずれかに記載のログ取得方法をコンピュータによって実行させるための制御プログラムを格納した記録媒体。
- 請求項1乃至19のいずれかに記載のログ取得方法をコンピュータによって実現させるための制御プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101245667A CN100347669C (zh) | 2003-12-30 | 2003-12-30 | 运行日志取得方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005196779A true JP2005196779A (ja) | 2005-07-21 |
JP2005196779A5 JP2005196779A5 (ja) | 2007-01-18 |
JP4155583B2 JP4155583B2 (ja) | 2008-09-24 |
Family
ID=34800339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004377887A Expired - Fee Related JP4155583B2 (ja) | 2003-12-30 | 2004-12-27 | ログ取得方法およびプログラム、記憶媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7426660B2 (ja) |
JP (1) | JP4155583B2 (ja) |
CN (1) | CN100347669C (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009070170A (ja) * | 2007-09-13 | 2009-04-02 | Ricoh Co Ltd | 情報処理装置、情報処理プログラム、情報処理プログラムを記録する記録媒体 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4125169B2 (ja) * | 2003-04-02 | 2008-07-30 | キヤノン株式会社 | ログ取得方法 |
US8045474B2 (en) * | 2005-01-26 | 2011-10-25 | Cisco Technology, Inc. | Method and apparatus for tracking layer-2 (L2) resource of a switch |
JP4681923B2 (ja) * | 2005-04-01 | 2011-05-11 | キヤノン株式会社 | 情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体 |
US20070083792A1 (en) * | 2005-10-11 | 2007-04-12 | Mcdermott Andrew | System and method for error detection and reporting |
CN103092742B (zh) | 2011-10-31 | 2015-08-19 | 国际商业机器公司 | 程序日志记录优化方法和系统 |
US9436588B2 (en) | 2012-09-28 | 2016-09-06 | Identify Software Ltd. (IL) | Efficient method data recording |
US9501346B2 (en) * | 2014-01-21 | 2016-11-22 | Oracle International Corporation | Fine and coarse granularity logging handler |
CN107517128B (zh) * | 2017-08-24 | 2020-06-19 | 北京小米移动软件有限公司 | 数据传输方法、装置和设备 |
CN111767249B (zh) * | 2019-04-02 | 2022-11-04 | 上海寒武纪信息科技有限公司 | 确定函数自身运行时间的方法及装置 |
CN110727641B (zh) * | 2019-10-21 | 2023-10-27 | 中国民航信息网络股份有限公司 | 一种日志的查找方法及装置 |
CN114827636A (zh) * | 2021-01-18 | 2022-07-29 | 武汉斗鱼网络科技有限公司 | 一种视频播放异常的诊断方法及相关装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732272A (en) * | 1995-07-31 | 1998-03-24 | Apple Computer, Inc. | Subroutine execution time tracer |
JPH10269105A (ja) * | 1997-01-27 | 1998-10-09 | N T T Data Tsushin Kk | トレースシステム、リソース解放漏れ検出システム及び記録媒体 |
EP1027652A1 (en) * | 1997-11-07 | 2000-08-16 | Intergraph Corporation | Apparatus and method for logging information relating to function calls to a function library |
JP3284539B2 (ja) * | 1998-04-22 | 2002-05-20 | 日本電気株式会社 | プログラムライブラリ管理システム |
US7216056B2 (en) * | 2001-12-06 | 2007-05-08 | C-Live, Inc. | Access log analyzer and access log analyzing method |
US7086034B2 (en) * | 2002-06-28 | 2006-08-01 | Canon Kabushiki Kaisha | Method, program, and storage medium for acquiring logs |
US7188279B2 (en) * | 2002-06-28 | 2007-03-06 | Canon Kabushiki Kaisha | Method, program, and storage medium for acquiring logs |
-
2003
- 2003-12-30 CN CNB2003101245667A patent/CN100347669C/zh not_active Expired - Fee Related
-
2004
- 2004-12-27 JP JP2004377887A patent/JP4155583B2/ja not_active Expired - Fee Related
- 2004-12-28 US US11/022,951 patent/US7426660B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009070170A (ja) * | 2007-09-13 | 2009-04-02 | Ricoh Co Ltd | 情報処理装置、情報処理プログラム、情報処理プログラムを記録する記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
CN1635470A (zh) | 2005-07-06 |
JP4155583B2 (ja) | 2008-09-24 |
CN100347669C (zh) | 2007-11-07 |
US20050171731A1 (en) | 2005-08-04 |
US7426660B2 (en) | 2008-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5870607A (en) | Method and apparatus for selective replay of computer programs | |
US6779187B1 (en) | Method and system for dynamic interception of function calls to dynamic link libraries into a windowed operating system | |
JP4155583B2 (ja) | ログ取得方法およびプログラム、記憶媒体 | |
JP3290280B2 (ja) | 情報処理装置 | |
US7743228B2 (en) | Information processing apparatus and method for obtaining software processing log | |
US8887141B2 (en) | Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information | |
US7086034B2 (en) | Method, program, and storage medium for acquiring logs | |
US6792559B1 (en) | Performing operations in an environment recreated from system dump information | |
US7188279B2 (en) | Method, program, and storage medium for acquiring logs | |
JP4280749B2 (ja) | ログ取得方法およびプログラム、記憶媒体 | |
US20050114847A1 (en) | Method, apparatus and computer program for automatically determining compile-time module dependencies | |
US8209707B2 (en) | Gathering state information for an application and kernel components called by the application | |
CN101196848B (zh) | 运行日志获取方法 | |
US6735774B1 (en) | Method and apparatus for system call management | |
JP4125055B2 (ja) | ログ取得方法 | |
EP3635561B1 (en) | Asynchronous operation query | |
CN116909819A (zh) | 一种处理器调试方法、装置、计算机设备及处理器 | |
US8510757B2 (en) | Gathering pages allocated to an application to include in checkpoint information | |
CN110928779B (zh) | 文件处理方法、应用程序运行故障定位方法和设备 | |
JP4125053B2 (ja) | ログ取得方法 | |
JP4125056B2 (ja) | ログ取得方法 | |
JP4125054B2 (ja) | ログ取得方法 | |
US6789160B2 (en) | Multi-threaded random access storage device qualification tool | |
CN112130868B (zh) | 一种系统的灌装方法、系统、设备以及介质 | |
CN116248757A (zh) | 可执行文件的格式设置方法、数据流程序迁移方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061129 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A132 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: 20080414 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080612 |
|
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: 20080704 |
|
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: 20080707 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110718 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120718 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120718 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130718 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |