JP4681868B2 - 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体 - Google Patents

情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体 Download PDF

Info

Publication number
JP4681868B2
JP4681868B2 JP2004364783A JP2004364783A JP4681868B2 JP 4681868 B2 JP4681868 B2 JP 4681868B2 JP 2004364783 A JP2004364783 A JP 2004364783A JP 2004364783 A JP2004364783 A JP 2004364783A JP 4681868 B2 JP4681868 B2 JP 4681868B2
Authority
JP
Japan
Prior art keywords
module
area
processing apparatus
information processing
determined
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
Application number
JP2004364783A
Other languages
English (en)
Other versions
JP2006172206A5 (ja
JP2006172206A (ja
Inventor
誠 三原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2004364783A priority Critical patent/JP4681868B2/ja
Priority to US11/300,391 priority patent/US7743228B2/en
Publication of JP2006172206A publication Critical patent/JP2006172206A/ja
Publication of JP2006172206A5 publication Critical patent/JP2006172206A5/ja
Application granted granted Critical
Publication of JP4681868B2 publication Critical patent/JP4681868B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体に関する。
再現率の低いソフトウェアの障害に対しては、ソフトウェアの処理ログを取得することによって対処している場合が多いが、従来、処理ログの取得はアプリケーションソフトウェアのモジュール自体に手を加えて、処理ログ取得ルーチンを追加することによって行なわれている。しかし、ログ取得コードを埋め込む等のアプリケーションソフトウェアの修正を必要とする上記の方式では、修正処理が煩雑化する。
そこで、複数にモジュール分けされているソフトウェアにおいて、アプリケーションソフトウェアに相当するモジュールから別のモジュール内に存在する関数への呼び出しを仲介し、当該呼び出しに応じた別モジュールにおける処理のログを取得するログ取得用モジュールを提供することにより、アプリケーションソフトウェア自体の煩雑な修正を行わずとも、処理ログを取得可能とする方法が提案されている。
このようなログ取得用モジュールによりログをバイナリデータとして取得する場合、関数のパラメータに定義されているメモリポインタに基づいてデータへアクセスし保存することとなる。この時、アプリケーションソフトウェアの障害等により、バイナリデータの一部もしくは全てがアクセス禁止となる不正な領域に置かれてしまった場合、ログ取得ソフトウェアがその領域にアクセスすることで例外が発生してしまうので、対応する例外処理を行なわなければならない(特許文献1参照)。
特開2004−38311号公報
これに対して、また、アプリケーションソフトウェア自体を変更しメモリの不正アクセスを検知する方法は提案されているが、アプリケーションソフトウェア自体の変更が煩雑であるため効果的ではない。
そこで、本発明では、アプリケーションソフトウェア自体の変更を行わずに、ログの不正領域への書き込み防止を可能とすることを目的とする。
上記課題を解決するために、第1のモジュールと、第2のモジュールと、前記第1のモジュールから前記第2のモジュール内の関数への呼び出しを仲介し、前記呼び出しに応じた前記第2のモジュールにおける処理のログを取得するための第3のモジュールと、を実行する情報処理装置であって、
前記第3のモジュールが、
前記ログを取得するログ取得手段と、
取得された前記ログから、前記第2のモジュール内の関数の引数として含まれている、バイナリデータの格納されている領域の先頭を表す書込開始アドレスと、データサイズとの情報を取得する情報取得手段と、
前記書込開始アドレスと前記データサイズとから、前記バイナリデータの書き込まれている領域を決定する領域決定手段と、
決定された前記領域へのアクセスが許可されているか否かをOSに問い合わせる問い合わせ手段と、
前記問い合わせの結果により前記決定された領域のうち一部の領域のみのアクセスが許可されている場合に、前記一部の領域に対応する前記バイナリデータの一部をメモリへ書込を行う書込制御手段と
を備える。
本発明によれば、アプリケーションソフトウェア自体の変更を行わずに、ログの不正領域への書き込みを防止することができる。
以下、添付する図面を参照して本発明の実施形態を説明する。
図1は、本実施形態に対応する情報処理装置の構成の一例を示す図である。説明を簡略化するために、本実施形態では、情報処理システムが1台のPC内部に構築されるものとするが、本発明の特徴は1台のPC内部に構築されるか、あるいは複数のPCにネットワークシステムとして構築されるかによらず有効である。
本情報処理装置には、CPU1、チップセット2、RAM3、ハードディスクコントローラ4、ディスプレイコントローラ5、ハードディスクドライブ6、CD-ROMドライブ7、ディスプレイ8が搭載されている。また、CPU1とチップセット2とを繋ぐ信号線11、チップセット2とRAM3とを繋ぐ信号線12、チップセット2と各種周辺機器4、5とを繋ぐ周辺機器バス13、ハードディスクコントローラ4とハードディスクドライブ6とを繋ぐ信号線14、ハードディスクコントローラ4とCD-ROMドライブ7とを繋ぐ信号線15、ディスプレイコントローラ5とディスプレイ8とを繋ぐ信号線16が搭載されている。
本実施形態に対応する情報処理装置を説明するために、まず図2を参照して、複数のモジュールに分かれたソフトウェアが、通常の状態でどのようにメモリにロードされるかを説明する。図2は、RAMの内部構成の一例を示す図である。
通常、複数のモジュールに分割されたソフトウェアは、全体の制御を行なう実行ファイルEXE(23)と、モジュールとして存在しEXEの補完的な役割を担うダイナミックリンクライブラリDLL(27)とに分かれて存在する。そして、RAM3には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個となっている。
EXEのコードセグメント28内にあるコードが関数Func AAを呼び出す場合には、まずインポート関数アドレステーブル内に書かれたFunc AAのアドレス(30)が読み込まれる。ここには実際にはA.DLLの一部として読み込まれたFunc AAコード(36)のアドレスが書かれており、そのアドレスをコールすることによって、EXEのコードはA.DLLのFunc AAを呼び出すことができる。
次に、ログ取得用のコードとしてIAT Patch(Import Address Table Patch)という手法を用いて関数呼び出しを仲介する場合の、情報処理装置のメモリ構成の一例を図3を参照して説明する。
ログ取得が開始されると、メモリ内には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)を呼び出す。
図4は、図3におけるIAT Patchの処理をあらわすタイミングチャートである。説明を簡略化するために、この図ではEXEがA.DLL内のFunc AAを呼び出す際に、IAT Patchによるログ取得コードがどのように動作するかの例をあらわしている。他の関数の場合についても同様の処理が行われることはいうまでもない。
EXE(91)がFunc AAをコールすると(94)、C.DLL内にあるログ取得コードがDLL名/関数名をメモリに保存し、呼び出し時刻をメモリに保存し、呼び出し時のパラメータをメモリに保存し、呼び出し時のポインタパラメータの指すメモリ内容を、メモリに保存する(95)。その後C.DLLは本来呼び出されるはずであった、A.DLL(93)内のFunc AAをコールする(96)。A.DLLのFunc AA処理(97)が終了し、C.DLLに制御がリターンすると(98)、C.DLLはリターン時の時刻をメモリに保存し、戻り値をメモリに保存し、リターン時にポインタパラメータが指すメモリ内容を、メモリに保存する(99)。その後、C.DLLは保存したログ情報をファイルに書き込み(100)、あたかもA.DLLのFunc AAが通常通りに終了したかのように、EXEにリターンする(101)。
図5は、本実施形態に対応する情報処理装置において実行形式ファイルEXEが実行される場合の動作の一例を示す図である。通常は実行形式のEXE(113)が、DLL-1(116)やDLL-2(117)内の関数を呼び出すが、ここではAPIトレーサと呼ばれるログ取得コードを埋め込み(114)、処理ログを生成している(115)。APIトレーサは、DLL-1やDLL-2の関数定義を記述したファイル(111)と、どのDLLのどの関数のインポート関数テーブルを書き換えてログを取得するかの設定シナリオ(112)を元に動作する。
図6は、本実施形態に対応する情報処理装置において、実行ファイルEXE(118)がCOM(Component Object Model:コンポーネント・オブジェクト・モデル)サーバでエクスポートされているインターフェースのインスタンスを作成する場合の、メモリ構成の一例を示す図である。
通常、インターフェースのインスタンス作成を行うと、COMサーバ内で、要求されたインターフェース(121, 122)と、そのメソッド(130〜135)が作成され、それらは共にメモリ上にロードされる。ここで、virtual address tableは作成された各インターフェース毎に作られ(118, 120)、作成要求を行ったEXEに渡される。このvirtual address tableには各メソッドについて作成されたアドレスが書かれている(124〜129)。EXEはこれら情報を利用し、各インターフェースに対して呼び出しを行う。図6では、1本のEXEがInterface A及びInterface Bの2つのインターフェースのインスタンスを作成しており、そのインターフェース内部のメソッドを使用している例を示しており、実際に使用されているメソッドは、Method AA, Method AB, Method AC, Method BA, Method BB, Method BCとなっている。
EXEのコードが関数Method AAを呼び出す場合には、まずvirtual address table内に書かれたMethod AAのアドレス(124)が読み込まれる。このアドレス(124)にはCOMサーバのInterface Aの一部として作成されたMethod AAコード(130)のアドレスが書かれており、そのアドレスをコールすることによって、EXEのコードはInterface AのMethod AAを呼び出すことができる。
図7は、本実施形態に対応する情報処理装置のメモリ構成をあらわす図であり、図6とは、ログ取得用のコードとしてVTable Patch(virtual address table Patch)という手法を用いて、メソッド呼び出しを仲介しているという点で異なっている。
ログ取得が開始されると、メモリ内にはVTable Patch用のDLL(143)がロードされる。このDLLはvirtual address table(136, 138)内に書かれたメソッドのアドレスを、DLL内のログ取得コードであるMethod A'A, Method A'B, Method A'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, Method BC(157〜162)を呼び出す。
図8は、図7におけるVTable Patchの処理をあらわすタイミングチャートである。説明を簡略化するために、この図ではEXEがCOMサーバ内のInterface AのMethod AAを呼び出す際に、VTable Patchによるログ取得コードがどのように動作するかの例をあらわしている。他のメソッドの場合についても同様の処理が行われることはいうまでもない。
EXE(163)がMethod AAをコールすると(166)、DLL内にあるログ取得コードがモジュール名/インターフェース名/メソッド名をメモリに保存し、呼び出し時刻をメモリに保存し、呼び出し時のパラメータをメモリに保存し、呼び出し時のポインタパラメータの指すメモリ内容を、メモリに保存する(167)。その後DLLは本来呼び出されるはずであった、COMサーバ(165)内のMethod AAをコールする(168)。COMサーバのMethod AA処理(169)が終了し、DLLに制御がリターンすると(170)、DLLはリターン時の時刻をメモリに保存し、戻り値をメモリに保存し、リターン時にポインタパラメータが指すメモリ内容を、メモリに保存する(171)。その後、DLLは保存したログ情報をファイルに書き込み(172)、あたかもCOMサーバのMethod AAが通常通りに終了したかのように、EXEにリターンする(173)。
図9は、本実施形態に対応する情報処理装置において実行形式ファイルEXEが実行される場合の動作の一例を示す図である。通常は実行形式のEXE(176)が、COMサーバ-1(179)やCOMサーバ-2(180)内のメソッドを呼び出すが、ここではAPIトレーサと呼ばれるログ取得コードを埋め込み(177)、処理ログを生成している(178)。APIトレーサは、COMサーバ-1(179)やCOMサーバ-2の関数定義を記述したファイル(174)と、どのCOMサーバのどのインターフェースのどのメソッドのvirtual address tableを書き換えてログを取得するかの設定シナリオ(175)を元に動作する。
図10は、本実施形態に対応する情報処理装置において利用される、関数及びメソッドのパラメータの形式や、戻り値の形式を指示する関数定義ファイルの一例を示す図である。この関数定義ファイルは、図5の関数定義111や図9の関数定義174に対応する。
関数定義ファイルは、DLL名及び関数/メソッド名を記述し、その関数/メソッドに対する、パラメータ及び戻り値の型が示されている。本実施形態は、この関数定義ファイルによって指示された内容に基づいて、それぞれの関数/メソッドがどのようなパラメータ/戻り値を有しているかが判定され、その内容がログとして取得される。
図10において示されたA.DLL内の関数FuncABに対する関数定義は、本発明の実施形態を最もよくあらわすものの一つである。引数には、データの格納先(書込開始アドレス)として示されるポインタpBufと、そのデータのサイズとして示されるdwBufSizeが定義されており、pBufとdwBufSizeとの相関、すなわちpBufに格納されたデータのサイズがdwBufSizeによって指示されているという相関が定義されている。
図11は、図10に示した関数定義ファイルを用いて、本発明の情報処理装置において取得されたログの一例を示す図である。それぞれの呼び出しに対して、関数/メソッドが呼び出された時刻、及びその際のパラメータ/戻り値が、ログとして生成される。
図11において示されたA.DLL内の関数FuncABに対する呼び出しのログは、図10の関数定義ファイルと共に、本発明の実施形態の特徴を最もよく表すものの一つである。図10に示した関数定義ファイルに基づいて、FuncABに対する呼び出しの際には、引数としてのpBufの値(0x5034206D)だけでなく、その値が指し示すアドレス上にある、dwBufSize分すなわち24byte分のデータが、通常のログとは別のバイナリログとして保存され、そのバイナリログファイル内に保存された該当するFuncABの呼び出しのID、すなわちDataIDが、追加情報としてログに保存される。
図12は、図11に示したログと共に保存されるバイナリログファイルの実体を一例として示す図である。ここでは、各バイナリログファイルを識別するためのタグとしてDataIDが保存され、そのDataID毎にバイナリデータの本体が保存されている。
図10乃至図12に示された関数定義ファイル、ログ、バイナリログは、指示するデータが入力データか出力データか、あるいは戻り値かに依存せずに有効である。例えば、関数からの出力パラメータとしてデータアドレスが戻され、更に関数からの戻り値としてデータサイズが出力された場合にも、同様にデータ本体のログを取得することが可能である。
[第1の実施形態]
以上の構成に基づいて、本発明の情報処理装置において実行される処理について説明する。図13は、本実施形態におけるバイナリログの保存にかかわる処理の一例に対応するフローチャートである。
図13(a)において、設定された関数/メソッドが呼び出されることによって、処理が開始されると(S1301)、本ソフトウェアはDLL名/関数名/呼び出し時の時刻をHDDに保存し(S1302)、その呼び出しに対してのパラメータをHDDに保存する(S1303)。次に本ソフトウェアは、パラメータがメモリアドレスとして定義されているかどうかを、第11図に示した関数定義ファイルに基づいて判断し(S1304)、定義されている場合はバイナリ保存処理(S1305)を行なう。このバイナリ保存処理の詳細は、図13(b)に示すとおりであり、ここでは関数定義のサイズをあらわす引数からデータサイズを取得し(S1314)、ポインタpBufで示されるメモリアドレス(書込開始アドレス)からデータサイズ分に相当するメモリ領域を算出し、算出されたメモリ領域が正しい領域であるかをOSへ問い合わせる(S1315)。正しい領域であると判定された場合のみ、そのサイズ分のデータをメモリから読み込んで(S1316)、DataIDをつけてデータをHDDのバイナリログファイルに保存する(S1317)。一方、正しい領域でないと判定された場合には、バイナリ保存処理をそのまま終了し、対応するデータのバイナリログファイルとしての保存を行わない。パラメータがメモリアドレスとして定義されていない場合には、データ保存処理そのものを行わない。
図13(a)に戻ると、関数内部の処理が終了すると(S1306)、本ソフトウェアはDLL名/関数名/終了時の時刻をHDDに保存し(S1307)、その呼び出しに対してのパラメータ及び戻り値をHDDに保存する(S1308)。次にパラメータがメモリアドレスとして定義されているかどうかを、図11に示した関数定義ファイルに基づいて判定し(S1309)、定義されている場合はバイナリ保存処理(S1310)を行なう。バイナリ保存処理は上述した図13(b)に示す処理と同様である。異常の処理は、評価対象となるプログラムが終了するまで(S1311)続行される。
以上のように、本実施形態に対応する本発明によれば、データを書き込むべきメモリアドレスとデータサイズに基づいてデータの書込領域が正しい領域であるかどうかを事前に問い合わせ、正しい領域との判定の上で書込を行うので、誤って不正領域にデータが書き込まれることがなくなり、不正領域にデータが書き込まれた場合に生ずるはずの例外処理を未然に防止することが可能となる。
[第2の実施形態]
上記の第1の実施形態では、保存するバイナリ領域全体として正しい領域でなければバイナリデータの保存処理を行わせないようにしていたが、本実施形態では、バイナリ領域に不正な領域が一部存在していた場合であっても、不正なメモリアドレスが存在する直前までのバイナリデータを保存可能とする。
以下、本発明の情報処理装置において実行される処理について説明する。図14は、本実施形態におけるバイナリログの保存にかかわる処理の一例に対応するフローチャートである。
図14(a)において、設定された関数/メソッドが呼び出されることによって、処理が開始されると(S1401)、本ソフトウェアはDLL名/関数名/呼び出し時の時刻をHDDに保存し(S1402)、その呼び出しに対してのパラメータをHDDに保存する(S1403)。次に本ソフトウェアは、パラメータがメモリアドレスとして定義されているかどうかを、図11に示した関数定義ファイルに基づいて判断し(S1404)、定義されている場合はバイナリ保存処理(S1405)を行なう。
ここでバイナリ保存処理の詳細は、図14(b)に示す通りであり、ここにおいて関数定義のサイズをあらわす引数からデータサイズを取得し(S1414)、データサイズ分のループ処理(S1415乃至S1418)でデータ領域を、1バイト単位に正しい領域に書き込まれるか否かの判定を行なう。取得を行なうメモリアドレスの先頭からnバイト目の1バイト分のメモリ領域が正しい領域であるか否かをOSへ問い合わせる(S1417)。正しい領域であると判定された場合のみ、次のデータ領域の判断を行なうため、nをインクリメントする(S1417))。不正な領域であると判定された場合には、そこ時点でデータ領域の判定を終了する。
S1415〜S1418までのループ処理が終了すると、正しい領域のバイト数はnとなるので、nが0であるか否かにより正しい領域があるか否かを判定し(S1419)、正しい領域があったと判定された場合には、そのサイズ分である、nバイトのデータをメモリ領域の先頭から読み込んで(S1420)、DataIDをつけてデータをHDDのバイナリログファイルに保存する(S1421)。一方、nが0であり、全領域が誤りであると判定された場合には、データの保存を行わずにバイナリ保存処理を終了する。また、パラメータがメモリアドレスとして定義されていない場合には、データ保存処理そのものを行わない。
関数内部の処理が終了すると(S1406)、本ソフトウェアはDLL名/関数名/終了時の時刻をHDDに保存し(S1407)、その呼び出しに対してのパラメータ及び戻り値をHDDに保存する(S1408)。次に、パラメータがメモリアドレスとして定義されているかどうかを、図11に示した関数定義ファイルに基づいて判断し(S1409)、定義されている場合はバイナリ保存処理を行なう。バイナリ保存処理は、上述の図14(b)における処理と同様である。以上の処理は、評価対象となるプログラムが終了するまで(S1411)続行される。
以上によれば、保存するバイナリ領域に不正な領域が一部存在していた場合であっても、不正なメモリアドレスが存在する直前までのバイナリデータを保存することができる。
[その他の実施形態]
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明の実施形態に対応する情報処理装置の構成の一例を示す図である。 本発明の実施形態に対応する情報処理装置のメモリに、複数のモジュールに分割されたソフトウェアがロードされる場合を説明する図である。 本発明の実施形態に対応する、ログ取得用のコードとしてIAT Patchを用いて関数呼び出しを仲介する場合の、情報処理装置のメモリ構成の一例を示す図である。 本発明の実施形態に対応する情報処理装置において、IAT Patchの処理を実行した場合のタイミングチャートの一例を示す図である。 本発明の実施形態に対応する情報処理装置において実行形式ファイルEXEが実行される場合の動作の一例を示す図である。 本発明の実施形態に対応する情報処理装置において、実行ファイルEXEがCOMサーバでエクスポートされているインターフェースのインスタンスを作成する場合の、メモリ構成の一例を示す図である。 本発明の実施形態に対応する情報処理装置のメモリ構成をあらわす図である。 本発明の実施形態に対応する情報処理装置において、VTable Patchの処理を実行した場合のタイミングチャートの一例を示す図である。 本発明の実施形態に対応する情報処理装置において実行形式ファイルEXEが実行される場合の動作の一例を示す図である。 本発明の実施形態に対応する情報処理装置において利用される、関数及びメソッドのパラメータの形式や、戻り値の形式を指示する関数定義ファイルの一例を示す図である。 図10に示した関数定義ファイルを用いて、本発明の実施形態に対応する情報処理装置において取得されたログの一例を示す図である。 図11に示したログと共に保存されるバイナリログファイルの実体を一例として示す図である。 本発明の第1の実施形態に対応する処理の一例のフローチャートである。 本発明の第2の実施形態に対応する処理の一例のフローチャートである。

Claims (10)

  1. 第1のモジュールと、第2のモジュールと、前記第1のモジュールから前記第2のモジュール内の関数への呼び出しを仲介し、前記呼び出しに応じた前記第2のモジュールにおける処理のログを取得するための第3のモジュールと、を実行する情報処理装置であって、
    前記第3のモジュールが、
    前記ログを取得するログ取得手段と、
    取得された前記ログから、前記第2のモジュール内の関数の引数として含まれている、バイナリデータの格納されている領域の先頭を表す書込開始アドレスと、データサイズとの情報を取得する情報取得手段と、
    前記書込開始アドレスと前記データサイズとから、前記バイナリデータの書き込まれている領域を決定する領域決定手段と、
    決定された前記領域へのアクセスが許可されているか否かをOSに問い合わせる問い合わせ手段と、
    前記問い合わせの結果により前記決定された領域のうち一部の領域のみのアクセスが許可されている場合に、前記一部の領域に対応する前記バイナリデータの一部のメモリへの書込を行う書込制御手段と
    を備えることを特徴とする情報処理装置。
  2. 前記書込制御手段は、前記問い合わせの結果により前記決定された全領域のアクセスが許可されている場合に、前記バイナリデータを前記決定された領域からメモリへ書き込むことを特徴とする請求項1に記載の情報処理装置。
  3. 前記書込制御手段は、前記問い合わせの結果により前記決定されたいずれの領域へのアクセスも許可されない場合に、前記バイナリデータの前記決定された領域からメモリへの書き込みを抑制することを特徴とする請求項1に記載の情報処理装置。
  4. 前記一部の領域は、1バイト単位に決定されることを特徴とする請求項1に記載の情報処理装置。
  5. 第1のモジュールと、第2のモジュールと、前記第1のモジュールから前記第2のモジュール内の関数への呼び出しを仲介し、前記呼び出しに応じた前記第2のモジュールにおける処理のログを取得するための第3のモジュールと、を実行する情報処理装置の制御方法であって、
    前記第3のモジュールが、
    前記ログを取得するログ取得工程と、
    取得された前記ログから、前記第2のモジュール内の関数の引数として含まれている、バイナリデータの格納されている領域の先頭を表す書込開始アドレスと、データサイズとの情報を取得する情報取得工程と、
    前記書込開始アドレスと前記データサイズとから、前記バイナリデータの書き込まれている領域を決定する領域決定工程と、
    決定された前記領域へのアクセスが許可されているか否かをOSに問い合わせる問い合わせ工程と、
    前記問い合わせの結果により前記決定された領域のうち一部の領域のみのアクセスが許可されている場合に、前記一部の領域に対応する前記バイナリデータの一部のメモリへの書込を行う書込制御工程と
    を実行することを特徴とする情報処理装置の制御方法。
  6. 前記書込制御工程では、前記問い合わせの結果により前記決定された全領域へのアクセスが許可されている場合に、前記バイナリデータ前記決定された領域からメモリに書き込まれることを特徴とする請求項5に記載の情報処理装置の制御方法。
  7. 前記書込制御工程では、前記問い合わせの結果により前記決定されたいずれの領域へのアクセスも許可されない場合に、前記バイナリデータの前記決定された領域からメモリへの書き込みが抑制されることを特徴とする請求項5に記載の情報処理装置の制御方法。
  8. 前記一部の領域は、1バイト単位に決定されることを特徴とする請求項5に記載の情報処理装置の制御方法。
  9. 請求項5乃至8のいずれか1項に記載の情報処理装置の制御方法をコンピュータに実行させるためのコンピュータプログラム。
  10. 請求項9に記載のコンピュータプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
JP2004364783A 2004-12-16 2004-12-16 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体 Expired - Fee Related JP4681868B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004364783A JP4681868B2 (ja) 2004-12-16 2004-12-16 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体
US11/300,391 US7743228B2 (en) 2004-12-16 2005-12-14 Information processing apparatus and method for obtaining software processing log

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004364783A JP4681868B2 (ja) 2004-12-16 2004-12-16 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体

Publications (3)

Publication Number Publication Date
JP2006172206A JP2006172206A (ja) 2006-06-29
JP2006172206A5 JP2006172206A5 (ja) 2008-02-14
JP4681868B2 true JP4681868B2 (ja) 2011-05-11

Family

ID=36597183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004364783A Expired - Fee Related JP4681868B2 (ja) 2004-12-16 2004-12-16 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体

Country Status (2)

Country Link
US (1) US7743228B2 (ja)
JP (1) JP4681868B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040028469A (ko) 2002-09-30 2004-04-03 엘지전자 주식회사 1 회 기록 가능한 광디스크의 디펙트 영역 관리방법
US7233550B2 (en) 2002-09-30 2007-06-19 Lg Electronics Inc. Write-once optical disc, and method and apparatus for recording management information on write-once optical disc
ATE462184T1 (de) * 2002-12-11 2010-04-15 Lg Electronics Inc Überschreibverfahren und informationsaufzeichnungsverfahren für eine einmalig beschreibbare optische diskette
US7355934B2 (en) 2003-01-27 2008-04-08 Lg Electronics Inc. Optical disc of write once type, method, and apparatus for managing defect information on the optical disc
EP2068322A3 (en) 2003-05-09 2009-09-23 LG Electronics Inc. Write once optical disc, and method and apparatus for recovering disc management information from the write once optical disc
KR20050119703A (ko) * 2003-05-09 2005-12-21 엘지전자 주식회사 데이터영역을 관리하기 위한 데이터구조를 구비한기록매체와 기록재생 방법 및 장치
KR20050009031A (ko) * 2003-07-15 2005-01-24 엘지전자 주식회사 1회 기록 가능한 광디스크 및 광디스크의 관리정보 기록방법
US7313065B2 (en) 2003-08-05 2007-12-25 Lg Electronics Inc. Write-once optical disc, and method and apparatus for recording/reproducing management information on/from optical disc
JP4373441B2 (ja) * 2003-09-08 2009-11-25 エルジー エレクトロニクス インコーポレイティド 追記型光ディスク及びその上に管理情報を記録するための方法
KR101049137B1 (ko) * 2003-09-08 2011-07-15 엘지전자 주식회사 1회 기록가능한 광디스크, 및 1회 기록가능한광디스크상에서 관리 정보를 기록하는 방법 및 장치
EP1665261B1 (en) * 2003-09-08 2013-11-27 LG Electronics Inc. Write-once optical disc, and method and apparatus for recording management information on the write-once optical disc
JP4681923B2 (ja) * 2005-04-01 2011-05-11 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体
JP4046753B2 (ja) 2006-06-22 2008-02-13 株式会社コナミデジタルエンタテインメント 線形状処理装置、線形状処理方法、ならびに、プログラム
US8578393B1 (en) * 2008-06-18 2013-11-05 Alert Logic, Inc. Log message collection employing on-demand loading of message translation libraries

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021429A (ja) * 2002-06-13 2004-01-22 Fujitsu Ltd 仮引数重複違反検出機能を備えたコンパイラプログラム、その記録媒体、およびコンパイラ装置
JP2004038314A (ja) * 2002-06-28 2004-02-05 Canon Inc ログ取得方法およびプログラム、記憶媒体
JP2004318524A (ja) * 2003-04-16 2004-11-11 Seiko Epson Corp デバイスドライバ制御モジュール、デバイスドライバ制御方法、デバイスドライバ制御プログラムおよびデバイスドライバ

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981411A (ja) * 1995-09-20 1997-03-28 Fujitsu Ltd コンパイラ
US6219728B1 (en) * 1996-04-22 2001-04-17 Nortel Networks Limited Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor
US6272611B1 (en) * 1999-02-09 2001-08-07 Yu-Te Wu Computer data storage medium having a virtual disk drive and memory management method therefor
JP3763992B2 (ja) * 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US7543290B2 (en) * 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US20030061273A1 (en) * 2001-09-24 2003-03-27 Intel Corporation Extended content storage method and apparatus
US6792504B2 (en) * 2002-01-25 2004-09-14 Seagate Technology Llc Read on arrival scheme for a disc drive
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US7188279B2 (en) * 2002-06-28 2007-03-06 Canon Kabushiki Kaisha Method, program, and storage medium for acquiring logs
JP4125053B2 (ja) 2002-06-28 2008-07-23 キヤノン株式会社 ログ取得方法
JP2004213435A (ja) * 2003-01-07 2004-07-29 Hitachi Ltd 記憶装置システム
US7299379B2 (en) * 2003-06-27 2007-11-20 Intel Corporation Maintaining cache integrity by recording write addresses in a log
US7210014B2 (en) * 2004-05-27 2007-04-24 Microsoft Corporation Alternative methods in memory protection
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
US7297584B2 (en) * 2005-10-07 2007-11-20 Samsung Electronics Co., Ltd. Methods of fabricating semiconductor devices having a dual stress liner

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021429A (ja) * 2002-06-13 2004-01-22 Fujitsu Ltd 仮引数重複違反検出機能を備えたコンパイラプログラム、その記録媒体、およびコンパイラ装置
JP2004038314A (ja) * 2002-06-28 2004-02-05 Canon Inc ログ取得方法およびプログラム、記憶媒体
JP2004318524A (ja) * 2003-04-16 2004-11-11 Seiko Epson Corp デバイスドライバ制御モジュール、デバイスドライバ制御方法、デバイスドライバ制御プログラムおよびデバイスドライバ

Also Published As

Publication number Publication date
US20060136134A1 (en) 2006-06-22
US7743228B2 (en) 2010-06-22
JP2006172206A (ja) 2006-06-29

Similar Documents

Publication Publication Date Title
US7743228B2 (en) Information processing apparatus and method for obtaining software processing log
US7478282B2 (en) Log acquisition method and its control program and storage medium
US9400667B2 (en) String cache file for optimizing memory usage in a Java virtual machine
US9286048B2 (en) Apparatus, non-transitory computer readable information recording medium and information recording method that determine identification information for identifying a program that has issued a use request
US7086034B2 (en) Method, program, and storage medium for acquiring logs
US11474855B2 (en) Information processing apparatus, information processing method, and storage medium
US7188279B2 (en) Method, program, and storage medium for acquiring logs
JP4280749B2 (ja) ログ取得方法およびプログラム、記憶媒体
US7426660B2 (en) Method, program, and storage medium for acquiring logs
US7886279B2 (en) Information processing apparatus, control method therefor, computer program, and storage medium
JP4125055B2 (ja) ログ取得方法
US11809881B2 (en) Target process injection prior to execution of marker libraries
US7519868B2 (en) Information processing apparatus, information processing method, computer program, and storage medium
JP4125053B2 (ja) ログ取得方法
JP4125056B2 (ja) ログ取得方法
US8191050B2 (en) Information processor, control method therefor, computer program and storage medium
JP2006031248A (ja) 関数呼び出しをフックしてログを生成するソフトウェア評価システム
JP3848171B2 (ja) 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法
JP4125054B2 (ja) ログ取得方法
EP2169555A1 (en) Cache controller, cache control method and cache control program
CN112631720A (zh) 内存控制方法、介质及设备
JP2006040021A (ja) 関数ログを取得し使用するカラーオブジェクトからカラー出力データを検出するソフトウェア評価システム
JP2006040020A (ja) 関数ログを取得しハンドルパラメータからカラー出力データを検出するソフトウェア評価システム
JP2006040216A (ja) 関数ログを取得しビットマップのカラー出力データを検出するソフトウェア評価システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071217

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20071217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100831

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: 20110131

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: 20110207

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: 20140210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees