(57)【要約】【課題】デバッグ工数を低減できるようにする。【解決手段】プログラム実行部は、指定されたプログラムを実行し、必要に応じてメモリとのデータの授受を行なう。スナップショット生成部は、プログラムの実行中の各時刻において、メモリの各アドレスに格納されているデータを含むスナップショットを生成する。プログラム実行中に障害が発生すると、プログラム実行部は、障害発生の要因となった障害データと、その障害発生データが記録されているメモリの障害発生アドレスを取得する。比較部は、スナップショットに含まれる障害発生アドレスのデータと、障害データとを比較して、障害が発生する要因となった処理の直前に生成されたスナップショットを特定する。本発明は、情報処理装置に適用することができる。【選択図】図２
2012256279.tif 000002
【特許請求の範囲】
【請求項１】
指定プログラムの実行中に、各時刻のスナップショットを生成するスナップショット生成部と、
前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとを取得する取得部と、
前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとを比較し、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットを特定する比較部と
を備える情報処理装置。
【請求項２】
前記比較部は、前記スナップショットの生成時刻が新しい順に、前記スナップショットに含まれる前記比較データと、前記障害データとを比較していき、前記アドレスの前記比較データが前記障害データとは異なる最初の前記スナップショットを、前記直前に生成された前記スナップショットとする
請求項１に記載の情報処理装置。
【請求項３】
前記アドレスは前記記録部の物理アドレスである
請求項２に記載の情報処理装置。
【請求項４】
保持している変換テーブルを用いて、前記記録部の物理アドレスと仮想アドレスの変換を行なうメモリ管理部をさらに備え、
前記スナップショット生成部は、前記記録部の物理アドレスに格納されているデータと、前記メモリ管理部に保持されている前記変換テーブルとを含む前記スナップショットを生成し、
前記取得部は、前記障害データと、前記障害データが格納される前記記録部の仮想アドレスとを取得し、
前記比較部は、前記スナップショットに含まれる前記変換テーブルに基づいて、前記取得部により取得された前記仮想アドレスを、前記記録部の前記物理アドレスに変換するとともに、前記スナップショットに含まれている、変換により得られた前記物理アドレスの前記比較データと、前記障害データとを比較する
請求項２に記載の情報処理装置。
【請求項５】
前記スナップショット生成部は、前記指定プログラムが複数のプロセスごとのプログラムから構成される場合、前記スナップショットの生成時に実行されている前記プロセスのコンテキストを特定するコンテキストＩＤをスナップショット名とする前記スナップショットを生成し、
前記取得部は、前記障害の発生時に実行されていた前記プロセスの前記コンテキストの前記コンテキストＩＤをさらに取得し、
前記比較部は、前記取得部により取得された前記コンテキストＩＤをスナップショット名とする前記スナップショットについて、前記比較データと前記障害データとを比較する
請求項４に記載の情報処理装置。
【請求項６】
前記スナップショット生成部は、前記指定プログラムが複数のプロセスごとのプログラムから構成され、前記障害が発生する前記プロセスの前記プログラムが既知である場合、前記障害が発生する前記プロセスの前記プログラムが実行されているときにのみ、前記スナップショットを生成する
請求項４に記載の情報処理装置。
【請求項７】
指定プログラムの実行中に、各時刻のスナップショットを生成するスナップショット生成部と、
前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとを取得する取得部と、
前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとを比較し、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットを特定する比較部と
を備える情報処理装置の情報処理方法であって、
前記スナップショット生成部が前記スナップショットを生成し、
前記取得部が前記障害データと前記アドレスを取得し、
前記比較部が前記比較データと前記障害データとを比較する
ステップを含む情報処理方法。
【請求項８】
指定プログラムの実行中に、各時刻のスナップショットを生成し、
前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとを取得し、
前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとを比較し、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットを特定する
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は情報処理装置および方法、並びにプログラムに関し、特に、デバッグ工数を低減させることができるようにした情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、プログラムの実行中に障害が発生した場合などに、システムを回復させるためにスナップショットと呼ばれる情報が利用されている（例えば、特許文献１参照）。スナップショットは、プログラムの実行中に、定期的にメモリ内の情報などシステムの回復に必要となる情報、つまりプログラムの再実行に必要となる情報をファイルに格納することで生成される。
【０００３】
例えば、スナップショットを用いてシステムを回復させれば、障害発生によるプログラムの異常終了地点、より詳細には、障害が発生する要因となった処理が行なわれた地点を特定することができる。そのため、障害発生の原因を究明しようとする場合に、異常終了地点から最も近い地点に戻って処理を実行することにより、プログラムの実行を最初から実施しなくてすむことになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５８−２０１１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した技術では、障害発生の原因調査に多くの工数がかかっていた。
【０００６】
すなわち、スナップショットを利用してプログラムの異常終了地点を特定しようとする場合、最後に取得されたスナップショットから順番に、スナップショットを用いてシステムを回復させてプログラムを再実行する処理を繰り返し行なう必要があった。このようにスナップショットごとに、システムの回復とプログラムの再実行を行なうと異常終了地点の特定に時間がかかり、デバッグ工数が多くなってしまう。
【０００７】
本技術は、このような状況に鑑みてなされたものであり、デバッグ工数を低減させることができるようにするものである。
【課題を解決するための手段】
【０００８】
本技術の一側面の情報処理装置は、指定プログラムの実行中に、各時刻のスナップショットを生成するスナップショット生成部と、前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとを取得する取得部と、前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとを比較し、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットを特定する比較部とを備える。
【０００９】
前記比較部には、前記スナップショットの生成時刻が新しい順に、前記スナップショットに含まれる前記比較データと、前記障害データとを比較させていき、前記アドレスの前記比較データが前記障害データとは異なる最初の前記スナップショットを、前記直前に生成された前記スナップショットとさせることができる。
【００１０】
前記アドレスを前記記録部の物理アドレスとすることができる。
【００１１】
情報処理装置には、保持している変換テーブルを用いて、前記記録部の物理アドレスと仮想アドレスの変換を行なうメモリ管理部をさらに設け、前記スナップショット生成部には、前記記録部の物理アドレスに格納されているデータと、前記メモリ管理部に保持されている前記変換テーブルとを含む前記スナップショットを生成させ、前記取得部には、前記障害データと、前記障害データが格納される前記記録部の仮想アドレスとを取得させ、前記比較部には、前記スナップショットに含まれる前記変換テーブルに基づいて、前記取得部により取得された前記仮想アドレスを、前記記録部の前記物理アドレスに変換させるとともに、前記スナップショットに含まれている、変換により得られた前記物理アドレスの前記比較データと、前記障害データとを比較させることができる。
【００１２】
前記スナップショット生成部には、前記指定プログラムが複数のプロセスごとのプログラムから構成される場合、前記スナップショットの生成時に実行されている前記プロセスのコンテキストを特定するコンテキストＩＤをスナップショット名とする前記スナップショットを生成させ、前記取得部には、前記障害の発生時に実行されていた前記プロセスの前記コンテキストの前記コンテキストＩＤをさらに取得させ、前記比較部には、前記取得部により取得された前記コンテキストＩＤをスナップショット名とする前記スナップショットについて、前記比較データと前記障害データとを比較させることができる。
【００１３】
前記スナップショット生成部には、前記指定プログラムが複数のプロセスごとのプログラムから構成され、前記障害が発生する前記プロセスの前記プログラムが既知である場合、前記障害が発生する前記プロセスの前記プログラムが実行されているときにのみ、前記スナップショットを生成させることができる。
【００１４】
本技術の一側面の情報処理方法またはプログラムは、指定プログラムの実行中に、各時刻のスナップショットを生成し、前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとを取得し、前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとを比較し、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットを特定するステップを含む。
【００１５】
本技術の一側面においては、指定プログラムの実行中に、各時刻のスナップショットが生成され、前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとが取得され、前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとが比較され、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットが特定される。
【発明の効果】
【００１６】
本技術の一側面によれば、デバッグ工数を低減させることができる。
【図面の簡単な説明】
【００１７】
【図１】情報処理装置のハードウェアの構成例を示す図である。
【図２】情報処理装置の機能的な構成例を示す図である。
【図３】プログラム実行処理を説明するフローチャートである。
【図４】プログラム実行処理の具体的な処理例を説明する図である。
【図５】情報処理装置の他の機能的な構成例を示す図である。
【図６】プログラム実行処理を説明するフローチャートである。
【図７】論物変換テーブルの一例を示す図である。
【図８】プログラム実行処理を説明するフローチャートである。
【図９】スナップショットの取得について説明する図である。
【図１０】プログラム実行処理を説明するフローチャートである。
【図１１】スナップショットの取得について説明する図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本技術を適用した実施の形態について説明する。
【００１９】
〈第１の実施の形態〉
［情報処理装置のハードウェアの構成例］
図１は、本技術を適用した情報処理装置の一実施の形態の構成例を示す図である。
【００２０】
この情報処理装置１１は、例えばコンピュータなどからなり、情報処理装置１１では、CPU（Central Processing Unit）２１，ROM（Read Only Memory）２２，RAM（Random Access Memory）２３が、バス２４により相互に接続されている。
【００２１】
バス２４には、さらに、入出力インターフェース２５が接続されている。入出力インターフェース２５には、キーボード、マウス、マイクロホンなどよりなる入力部２６、ディスプレイ、スピーカなどよりなる出力部２７、ハードディスクや不揮発性のメモリなどよりなる記録部２８、ネットワークインターフェースなどよりなる通信部２９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア３１を駆動するドライブ３０が接続されている。
【００２２】
例えば、情報処理装置１１では、CPU２１が、記録部２８に記録されているプログラムを、入出力インターフェース２５及びバス２４を介して、RAM２３にロードして実行することにより、各種の処理が行われる。
【００２３】
［情報処理装置の機能的構成例］
また、図２は情報処理装置１１の機能的な構成例を示す図である。すなわち、情報処理装置１１は、制御部６１、プログラム実行部６２、メモリ６３、スナップショット生成部６４、比較部６５、および補助記録装置６６から構成される。
【００２４】
例えば、情報処理装置１１がホストマシンとして所定の処理をプログラムの実行により行なう場合、制御部６１乃至比較部６５からなる仮想マシンを起動させ、仮想マシンにプログラムの処理を実行させる。
【００２５】
このとき、仮想マシンは、定期的に各時刻のスナップショットを取得し、補助記録装置６６に記録させておく。そして、仮想マシンは、プログラムの実行中に障害が発生した場合、補助記録装置６６に記録されているスナップショットに基づいて、障害発生の要因となった処理が行なわれた直前の時刻のスナップショットを特定する。さらに、仮想マシンは、特定されたスナップショットに基づいてシステムを回復させ、デバッグを行なう。なお、以下においては、プログラムの実行中に発生する障害の要因は、メモリ６３へのデータの上書きであるものとして説明を続ける。
【００２６】
このような仮想マシンを構成する制御部６１は、仮想マシン全体の動作を制御する。例えば、プログラム実行部６２は、制御部６１の制御にしたがってプログラムの処理を実行し、プログラムの実行に必要なデータを、メモリ６３に記録させたり、メモリ６３から読み出したりする。また、プログラム実行部６２は、プログラム実行中に障害が発生すると、障害発生の要因となったデータが記録されているメモリ６３のアドレスを特定し、特定されたアドレスと、そのアドレスに記録されていたデータとを制御部６１を介して比較部６５に供給する。
【００２７】
なお、以下、メモリ６３の所定のアドレスの領域に記録されているデータを、単にアドレスの値とも称することとする。また、障害発生の要因となったデータが記録されているメモリ６３のアドレスを障害発生アドレスとも称し、障害発生アドレスの値を障害発生アドレス値とも称することとする。
【００２８】
メモリ６３は、例えばRAM２３などの揮発性のメモリから構成され、プログラム実行部６２から供給されたデータを記録したり、記録されているデータをプログラム実行部６２に供給したりする。スナップショット生成部６４は、制御部６１の制御にしたがって、定期的にメモリ６３に記録されているデータの内容や、CPU２１のレジスタの値等を取得してスナップショットを生成し、補助記録装置６６に供給して記録させる。例えば、補助記録装置６６は、記録部２８やリムーバブルメディア３１などの不揮発性の記録媒体から構成される。
【００２９】
比較部６５は、プログラムの実行中に障害が発生すると、補助記録装置６６に記録されているスナップショットと、制御部６１から供給された障害発生アドレスおよび障害発生アドレス値とに基づいて、障害発生の要因となった処理が行なわれる直前のスナップショットを特定する。なお、以下、障害発生の要因となった処理の直前のスナップショットを、直前スナップショットと称する。
【００３０】
［プログラム実行処理の説明］
次に、情報処理装置１１の動作について説明する。情報処理装置１１は、所定のプログラムが指定されて、そのプログラムの実行が指示されると、プログラム実行処理を行なって、指定されたプログラムを実行する。以下、図３のフローチャートを参照して、情報処理装置１１によるプログラム実行処理について説明する。
【００３１】
なお、この例では、情報処理装置１１には、例えばMMU（Memory Management Unit）等のメモリ管理部が設けられておらず、プログラム実行中に障害が発生することが予め分かっているものとする。
【００３２】
ステップＳ１１において、情報処理装置１１は仮想マシンを起動させる。例えば、CPU２１が所定のプログラムを実行することで、仮想マシンを構成する制御部６１乃至比較部６５を実現させる。
【００３３】
ステップＳ１２において、プログラム実行部６２は、制御部６１の制御にしたがってユーザにより指定されたプログラムを実行する。このときプログラム実行部６２は、必要に応じてデータをメモリ６３に供給して、メモリ６３の所定の物理アドレスの領域にデータを記録させたり、メモリ６３の所定の物理アドレスの領域からデータを読み出したりする。
【００３４】
ステップＳ１３において、スナップショット生成部６４は、スナップショットを生成する。例えばスナップショット生成部６４は、メモリ６３の各物理アドレスのデータや、CPU２１のレジスタの値等を取得してスナップショットを生成し、補助記録装置６６に供給する。補助記録装置６６は、スナップショット生成部６４から供給されたスナップショットを時刻順に順序付けて記録する。
【００３５】
このようにして得られたスナップショットは、プログラムの処理工程のうち、スナップショットが取得された時点におけるメモリ６３の状態等を復元し、その時点からプログラムを再実行できるようにするためのものである。
【００３６】
ステップＳ１４において、制御部６１はプログラムの実行中に障害が発生したか否かを判定する。ステップＳ１４において、障害が発生していないと判定された場合、処理はステップＳ１３に戻り、上述した処理が繰り返される。すなわち、次の時刻のスナップショットが取得され、補助記録装置６６に記録される。
【００３７】
これに対して、ステップＳ１４において、障害が発生したと判定された場合、ステップＳ１５において、プログラム実行部６２は、障害箇所を特定する。
【００３８】
具体的には、プログラム実行部６２は、障害発生の要因となったデータが記録されているメモリ６３の物理アドレスを障害発生アドレスとして特定し、その障害発生アドレスと障害発生アドレス値を制御部６１に供給する。
【００３９】
プログラム実行部６２から制御部６１に障害発生アドレスと障害発生アドレス値が供給されると、ステップＳ１６において、制御部６１は、プログラム実行部６２を制御してプログラムの実行を停止させる。これにより、実行中のプログラムが停止される。すると、制御部６１は、プログラム実行部６２から供給された障害発生アドレスと障害発生アドレス値とを比較部６５に供給し、障害発生の要因となる処理の実行直前に取得された直前スナップショットの特定を指示する。
【００４０】
ステップＳ１７において、比較部６５は、補助記録装置６６からこれまでに取得されたスナップショットを読み出して、それらのスナップショットのうちの１つを選択する。例えば、最後に取得されたスナップショット、つまり取得された時刻の最も新しいスナップショットから、最初に取得されたスナップショットまで、時刻の新しい順に１つずつスナップショットが選択されていく。
【００４１】
ステップＳ１８において、比較部６５は、選択したスナップショットに含まれているメモリ６３の物理アドレスの値のうち、制御部６１から供給された障害発生アドレスと同じ物理アドレスの値と、制御部６１から供給された障害発生アドレス値とを比較する。なお、以下、スナップショット（スナップショットイメージ）に含まれている、メモリ６３上の障害発生アドレスと同じ物理アドレスの値を、比較アドレス値とも称することとする。
【００４２】
ステップＳ１９において、比較部６５は、ステップＳ１８の処理で比較した、障害発生アドレス値と比較アドレス値とが異なる値であるか否かを判定する。
【００４３】
ここで、ステップＳ１８の処理で障害発生アドレス値と比較された、処理対象のスナップショットの比較アドレス値は、そのスナップショットを取得した時刻において、メモリ６３上の障害発生アドレスに格納されていた値（データ）である。
【００４４】
この例では、プログラム実行における障害は、メモリ６３の所定のアドレスに格納されている値（データ）が、不適切な値に書き換えられることにより生じる。また、障害発生アドレス値は、障害発生時点において障害発生アドレスに格納されている値、すなわち障害発生の要因となった不適切な値である。
【００４５】
そのため、処理対象のスナップショットの比較アドレス値が、障害発生アドレス値と同じ値であれば、その比較アドレス値が含まれるスナップショットは、障害発生の要因となった処理により障害発生箇所のアドレス値が上書きされた後の時刻のものである。つまり、目的とする直前スナップショットの取得時刻よりも後の時刻のスナップショットである。
【００４６】
これに対して、処理対象のスナップショットの比較アドレス値が、障害発生アドレス値と異なる値であれば、その比較アドレス値が含まれるスナップショットは、障害発生要因の処理により障害発生箇所のアドレス値が上書きされる前の時刻のものである。
【００４７】
したがって、各時刻のスナップショットを時刻の新しい順に選択し、比較アドレス値と障害発生アドレス値を比較していったときに、最初に障害発生アドレス値と異なる値となった比較アドレス値が含まれるスナップショットが、直前スナップショットとなる。このように、上述したステップＳ１８では、スナップショットの静的な解析により直前スナップショットを特定することを目的として、比較アドレス値と障害発生アドレス値との比較が行なわれる。
【００４８】
ステップＳ１９において、比較アドレス値と障害発生アドレス値が異なる値でないと判定された場合、処理対象のスナップショットは直前スナップショットよりも後の時刻のスナップショットであるので、処理はステップＳ１７に戻り、上述した処理が繰り返される。すなわち、まだ処理対象とされていないスナップショットのうち、最も新しい時刻のスナップショットが新たに選択され、そのスナップショットが直前スナップショットであるかの特定が行なわれる。
【００４９】
一方、ステップＳ１９において、比較アドレス値と障害発生アドレス値が異なる値であると判定された場合、比較部６５は、処理対象となっているスナップショットを直前スナップショットとして制御部６１に供給し、処理はステップＳ２０に進む。
【００５０】
ステップＳ２０において、制御部６１は、比較部６５からの直前スナップショットに基づいてシステムを回復させ、デバッグを行なう。すなわち、制御部６１は直前スナップショットに基づいて仮想マシンの各部を制御し、メモリ６３やCPU２１内のレジスタを直前スナップショットが取得された時点の状態に戻し、デバッグを行なう。そしてデバッグが行なわれると、プログラム実行処理は終了する。
【００５１】
以上において説明したプログラム実行処理を具体的な例により説明すると、例えば図４の矢印Ａ１１に示すように仮想マシンが起動される。この工程は図３のステップＳ１１の処理に対応する。
【００５２】
次に、矢印Ａ１２に示すように指定されたプログラムの実行が開始され、その後、定期的にスナップショットが取得されて補助記録装置６６に記録されていく。この矢印Ａ１２に示す工程は図３のステップＳ１２の処理に対応する。
【００５３】
さらに、プログラムの実行が開始され、矢印Ａ１３に示すようにプログラムの処理において、所定のポインタｐの初期値として所定の値ｘにより示されるメモリ６３上のアドレスの値が設定される。例えば、値ｘにより示されるアドレスは、メモリ６３の物理アドレス「0x80000000」であり、この時点ではこのアドレスの領域には、ポインタｐの値として適切な値が格納されているとする。
【００５４】
このような矢印Ａ１２に示す工程から矢印Ａ１３に示す工程の間に、矢印Ａ１４に示すように、各時刻のスナップショットＳＰ１乃至スナップショットＳＰ２５が取得されたとする。
【００５５】
また、ポインタｐの初期値が設定されると、続いて矢印Ａ１５に示すように、ポインタｐの値が初期値から「０」に上書きされる。すなわち、ポインタｐの値が格納されているメモリ６３上の物理アドレス「0x80000000」の領域の値が、これまで記録されていた値から「０」に書き換えられる。
【００５６】
ここで、上書きされた新たなポインタｐの値「０」が不適切な値であり、この上書き処理が障害発生の要因となるとする。したがって、上書きされた物理アドレス「0x80000000」が障害発生アドレスとなり、この物理アドレスに格納されている値「０」が障害発生アドレス値となる。
【００５７】
このように矢印Ａ１３に示したポインタｐの初期値の設定から、矢印Ａ１５に示したポインタｐの上書きが行なわれる間に、矢印Ａ１６に示すように、各時刻のスナップショットＳＰ２６乃至スナップショットＳＰ５０が取得されたとする。
【００５８】
さらに、ポインタｐの値の上書き後、矢印Ａ１７に示すように、所定の値ｙとして、ポインタｐが示す変数の値が設定される。ところが、この時点におけるポインタｐの値「０」は値ｙとして不適切な値であるため、ここで障害が発生する。なお、矢印Ａ１５に示す工程から矢印Ａ１７に示す工程の間に、矢印Ａ１８に示すように、各時刻のスナップショットＳＰ５１乃至スナップショットＳＰ１００が取得されたとする。
【００５９】
矢印Ａ１７に示す工程で障害が発生すると、矢印Ａ１９に示すように障害発生箇所が特定される。この場合、障害発生の要因となったポインタｐが特定され、ポインタｐの値が格納されているメモリ６３上の物理アドレス「0x80000000」と、そのアドレスの値「０」とが、それぞれ障害発生アドレスおよび障害発生アドレス値として取得される。この工程は図３のステップＳ１５の処理に対応する。
【００６０】
そして、障害箇所が特定されると、スナップショットの取得が停止され、矢印Ａ２０に示すように、これまで行なわれていたプログラムの実行が停止される。
【００６１】
さらに、矢印Ａ２１に示すように、これまで取得されたスナップショットが、スナップショットＳＰ１００乃至スナップショットＳＰ１の順番で処理対象のスナップショットとされて、スナップショットの静的な解析が行なわれる。この処理が図３のステップＳ１７乃至ステップＳ１９の処理に対応する。
【００６２】
具体的には、処理対象のスナップショットに含まれる、障害発生アドレスである物理アドレス「0x80000000」の値が比較アドレス値とされて、比較アドレス値と障害発生アドレス値「０」との比較が行なわれ、直前スナップショットが特定される。この処理により、直前スナップショットとして、障害発生要因となる矢印Ａ１５の工程の処理直前に取得されたスナップショットＳＰ５０が特定されることになる。
【００６３】
以上のようにして、情報処理装置１１は、プログラムの実行中に障害が発生すると、障害発生要因である上書き処理が行なわれたメモリ６３のアドレスの値を用いた、スナップショットの静的な解析により直前スナップショットを特定する。
【００６４】
このように情報処理装置１１では、スナップショットの静的な解析という簡単な処理によって迅速に直前スナップショットを特定することができ、これによりデバッグ工数を低減させることができる。すなわち、スナップショットによりシステムを回復させてデバッガによりメモリの値を確認するという動的な処理を、スナップショットごとに行なう必要がなくなるので、障害発生の原因調査のための工数を大幅に短縮させることができる。
【００６５】
〈第２の実施の形態〉
［情報処理装置の機能的構成例］
なお、以上においては、情報処理装置１１にメモリ管理部が設けられていない場合を例として説明したが、情報処理装置にメモリ管理部が設けられていてもよい。そのような場合、情報処理装置は、例えば図５に示すように構成される。
【００６６】
図５は、MMUなどのメモリ管理部が設けられている場合における情報処理装置の機能的な構成例を示す図である。なお、図５において、図２における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
【００６７】
情報処理装置９１は、制御部６１、プログラム実行部６２、メモリ６３、スナップショット生成部６４、比較部６５、補助記録装置６６、およびメモリ管理部１０１から構成される。すなわち、図５の情報処理装置９１は、図２の情報処理装置１１に新たにメモリ管理部１０１が設けられた構成となっている。
【００６８】
情報処理装置９１では、プログラム実行部６２は、メモリ管理部１０１を介してメモリ６３とのデータの授受を行なう。また、プログラム実行部６２は、プログラムの実行中に授受されるデータの格納場所として、メモリ６３上の記録領域の仮想的なアドレス（以下、仮想アドレスと称する）を指定する。
【００６９】
メモリ管理部１０１は、例えばメモリ６３における記録領域のアドレス管理を行なうMMUなどからなり、メモリ６３の物理アドレスと仮想アドレス（論理アドレス）の間のアドレス変換を行なう論物変換テーブルを保持している。また、メモリ管理部１０１は、保持している論物変換テーブルを用いて、プログラム実行部６２とメモリ６３との間のデータの授受を管理する。
【００７０】
さらに、情報処理装置９１では、スナップショット生成部６４は、メモリ６３に記録されているデータの内容や、CPUのレジスタの値等とともに、メモリ管理部１０１の論物変換テーブルも取得してスナップショットを生成し、補助記録装置６６に供給する。
【００７１】
なお、情報処理装置９１のハードウェアの構成は、図１に示した情報処理装置１１の構成と同様であるので、その図示および説明は省略する。
【００７２】
［プログラム実行処理の説明］
次に、図６のフローチャートを参照して、情報処理装置９１により行われるプログラム実行処理について説明する。なお、この例では、情報処理装置９１により実行されるプログラムはシングルコンテキストであり、プログラム実行中に障害が発生することが予め分かっているものとする。
【００７３】
ステップＳ５１において、情報処理装置９１は仮想マシンを起動させる。例えば、制御部６１乃至比較部６５およびメモリ管理部１０１からなる仮想マシンが起動される。
【００７４】
ステップＳ５２において、プログラム実行部６２は、制御部６１の制御にしたがってユーザにより指定されたプログラムを実行する。
【００７５】
このとき、例えばプログラム実行部６２はメモリ管理部１０１に対して、メモリ６３の仮想アドレスを指定するとともに、その仮想アドレスに記録させるデータを供給する。するとメモリ管理部１０１は、指定された仮想アドレスを保持している論物変換テーブルにより物理アドレスに変換する。
【００７６】
例えば、メモリ管理部１０１は図７に示す論物変換テーブルを保持しており、プログラム実行部６２により仮想アドレス「0xc0000000」が指定されると、その仮想アドレスを対応する物理アドレス「0x80000000」に変換する。
【００７７】
指定された仮想アドレスを物理アドレスに変換すると、メモリ管理部１０１は、プログラム実行部６２から供給されたデータをメモリ６３に供給して、そのデータを変換で得られたメモリ６３上の物理アドレスに記録させる。
【００７８】
また、例えばプログラム実行部６２は、メモリ管理部１０１に対してメモリ６３上の仮想アドレスを指定し、その仮想アドレスに格納されているデータの読み出しを指示する。すると、メモリ管理部１０１は、プログラム実行部６２により指定された仮想アドレスを保持している論物変換テーブルを用いて物理アドレスに変換し、その結果得られたメモリ６３の物理アドレスからデータを読み出してプログラム実行部６２に供給する。
【００７９】
ステップＳ５３において、スナップショット生成部６４は、スナップショットを生成する。例えばスナップショット生成部６４は、メモリ６３の各物理アドレスのデータや、CPUのレジスタの値、メモリ管理部１０１に保持されている論物変換テーブル等を取得してスナップショットを生成し、補助記録装置６６に供給する。したがって、補助記録装置６６には、論物変換テーブルが含まれるスナップショットが記録されることになる。
【００８０】
ステップＳ５４において、制御部６１はプログラムの実行中に障害が発生したか否かを判定する。ステップＳ５４において、障害が発生していないと判定された場合、処理はステップＳ５３に戻り、上述した処理が繰り返される。
【００８１】
これに対して、ステップＳ５４において、障害が発生したと判定された場合、ステップＳ５５において、プログラム実行部６２は、障害箇所を特定する。
【００８２】
具体的には、プログラム実行部６２は、障害発生の要因となったデータが記録されているメモリ６３の仮想アドレス（以下、障害発生仮想アドレスと称する）を特定し、その仮想アドレスと、その仮想アドレスの値である障害発生アドレス値を制御部６１に供給する。ここで、障害発生仮想アドレスは、障害発生の要因となったデータが実際に記録されているメモリ６３の物理アドレス、つまり障害発生アドレスを示す仮想アドレスである。
【００８３】
障害発生仮想アドレスと障害発生アドレス値が制御部６１に供給されると、その後、ステップＳ５６およびステップＳ５７の処理が行われるが、これらの処理は図３のステップＳ１６およびステップＳ１７の処理と同様であるので、その説明は省略する。
【００８４】
但し、ステップＳ５６では、制御部６１は、プログラム実行部６２から供給された障害発生仮想アドレスと障害発生アドレス値とを比較部６５に供給し、直前スナップショットの特定を指示する。
【００８５】
ステップＳ５８において、比較部６５は、処理対象のスナップショットに含まれる論物変換テーブルを用いて、制御部６１から供給された仮想アドレスである障害発生仮想アドレスを、物理アドレスである障害発生アドレスに変換する。これにより、制御部６１から比較部６５に供給された障害発生アドレス値が実際に記録されている、メモリ６３の物理アドレスが特定される。
【００８６】
障害発生アドレスが特定されると、その後、ステップＳ５９乃至ステップＳ６１の処理が行われてプログラム実行処理は終了するが、これらの処理は図３のステップＳ１８乃至ステップＳ２０の処理と同様であるので、その説明は省略する。すなわち、各時刻のスナップショットから障害発生アドレスの値が比較アドレス値として抽出され、比較アドレス値と障害発生アドレス値とが比較されて、直前スナップショットが特定される。
【００８７】
以上において説明したプログラム実行処理では、例えば図４に示した矢印Ａ１１乃至矢印Ａ１７に示す工程で、情報処理装置１１による処理と同様の処理が行われる。但し、プログラム実行部６２により仮想アドレスが指定されて処理が行なわれる。
【００８８】
そして、プログラム実行中に障害が発生すると、矢印Ａ１９に示す工程では、障害発生要因のポインタｐが特定される。また、ポインタｐの値が格納されているメモリ６３の仮想アドレス「0xc0000000」と、その仮想アドレスの値「０」とが、それぞれ障害発生仮想アドレスおよび障害発生アドレス値として取得される。この工程は図６のステップＳ５５の処理に対応する。
【００８９】
障害箇所が特定されると、矢印Ａ２０に示す工程でプログラムの実行が停止され、矢印Ａ２１に示す工程でスナップショットの静的な解析が行なわれる。具体的には、取得されたスナップショットが、スナップショットＳＰ１００乃至スナップショットＳＰ１の順番で処理対象のスナップショットとされる。
【００９０】
また、例えばスナップショットに含まれる図７の論物変換テーブルから、障害発生仮想アドレス「0xc0000000」が、障害発生アドレス「0x80000000」に変換される。つまり、仮想アドレスから物理アドレスへの変換が行なわれる。
【００９１】
さらに、処理対象のスナップショットに含まれる、障害発生アドレス「0x80000000」の値が比較アドレス値とされて、比較アドレス値と障害発生アドレス値「０」との比較が行なわれ、直前スナップショットが特定される。
【００９２】
以上のようにして、情報処理装置９１は、プログラムの実行中に障害が発生すると、障害発生要因である上書き処理が行なわれたメモリ６３の仮想アドレスを物理アドレスに変換し、アドレス値の比較により直前スナップショットを特定する。このように仮想アドレスによりデータが管理される場合であっても、スナップショットの静的な解析という簡単な処理で迅速に直前スナップショットを特定し、デバッグ工数を低減させることができる。
【００９３】
〈第３の実施の形態〉
［プログラム実行処理の説明］
さらに、第２の実施の形態では、情報処理装置９１が実行するプログラムが、シングルコンテキストのプログラムである場合を例として説明したが、実行されるプログラムがマルチコンテキストであってもよい。
【００９４】
例えば、マルチコンテキストのプログラムが実行され、そのプログラムを構成する各プロセスのプログラムのうちの障害が発生するプログラムが未知である場合、情報処理装置９１は図８に示すプログラム実行処理を行う。この場合においてもプログラム実行中に障害が発生することが予め分かっているものとする。
【００９５】
以下、図８のフローチャートを参照して、情報処理装置９１によるプログラム実行処理について説明する。なお、ステップＳ９１およびステップＳ９２の処理は図６のステップＳ５１およびステップＳ５２の処理と同様であるので、その説明は省略する。
【００９６】
ステップＳ９３において、スナップショット生成部６４は、スナップショットを生成する。例えばスナップショット生成部６４は、ステップＳ９２で実行を開始したマルチコンテキストのプログラムの各プロセスのうち、現時点で実行されているプロセスのコンテキストを特定する情報を、コンテキストＩＤとして取得する。具体的には、コンテキストＩＤは、実行中のプロセスが使用している仮想空間を識別するためにオペレーティングシステムが付与するＩＤなどである。
【００９７】
さらに、スナップショット生成部６４は、メモリ６３の各物理アドレスのデータや、CPUのレジスタの値、メモリ管理部１０１に保持されている論物変換テーブル等を取得し、スナップショット名がコンテキストＩＤであるスナップショットを生成する。スナップショット生成部６４は、このようにして得られたスナップショットを補助記録装置６６に供給し、記録させる。
【００９８】
例えば、図９に示すように、プログラムの実行中、各時刻ｔｉ（但し、０≦ｉ≦ｎ）において、スナップショットＳＰｉ（但し、０≦ｉ≦ｎ）が取得される。そして、それらのスナップショットＳＰｉの名前が、スナップショットＳＰｉの取得時に実行されていたプロセスのコンテキストＩＤとされる。
【００９９】
図９の例では、各スナップショットを表す四角形内の文字が、そのスナップショットの名前となっており、例えば、時刻ｔ１に取得されたスナップショットＳＰ１の名前は、そのときに実行されていたプロセスのコンテキストＩＤである「pid1」とされている。
【０１００】
ステップＳ９３では、スナップショットが取得される時点で実行されているプロセスのコンテキストＩＤをスナップショット名とすることで、得られたスナップショットがどのプロセスのプログラムについてのものであるかを容易に特定することができる。
【０１０１】
スナップショットが取得されると、ステップＳ９４において、制御部６１はプログラムの実行中に障害が発生したか否かを判定する。ステップＳ９４において、障害が発生していないと判定された場合、処理はステップＳ９３に戻り、上述した処理が繰り返される。
【０１０２】
これに対して、ステップＳ９４において、障害が発生したと判定された場合、ステップＳ９５において、プログラム実行部６２は、障害箇所を特定する。
【０１０３】
具体的には、プログラム実行部６２は、障害発生時に実行していたプロセスのコンテキストのコンテキストＩＤを取得する。また、プログラム実行部６２は、障害発生の要因となったデータが記録されているメモリ６３の障害発生仮想アドレスを特定し、障害発生仮想アドレス、障害発生アドレス値、およびコンテキストＩＤを制御部６１に供給する。
【０１０４】
障害発生仮想アドレス、障害発生アドレス値、およびコンテキストＩＤが制御部６１を介して比較部６５に供給されると、その後、ステップＳ９６乃至ステップＳ１０１の処理が行なわれてプログラム実行処理は終了する。なお、これらの処理は図６のステップＳ５６乃至ステップＳ６１の処理と同様であるので、その説明は省略する。
【０１０５】
但し、ステップＳ９７では、比較部６５は、補助記録装置６６に記録されている各時刻のスナップショットのうち、スナップショット名が、制御部６１から供給されたコンテキストＩＤと同じであるスナップショットのみが選択される。つまり、障害が発生したプロセスのプログラム（コンテキスト）が特定されているので、そのプログラムのスナップショットのみを処理対象として解析すれば、迅速かつ確実に直前スナップショットを特定することができる。
【０１０６】
以上において説明したプログラム実行処理では、例えば図４の矢印Ａ１１乃至矢印Ａ１７に示す工程で、図６を参照して説明したプログラム実行処理の場合と同様の処理が行われる。但し、スナップショットの取得時には、その取得時に実行されていたプロセスのコンテキストのコンテキストＩＤが、スナップショット名とされる。
【０１０７】
そして、プログラム実行中に障害が発生すると、矢印Ａ１９の工程では、障害発生要因のポインタｐが特定されるとともに、障害発生時に実行していたプロセスのコンテキストのコンテキストＩＤが取得される。
【０１０８】
また、ポインタｐの値が格納されているメモリ６３の仮想アドレス「0xc0000000」と、その仮想アドレスの値「０」とが、それぞれ障害発生仮想アドレスおよび障害発生アドレス値として取得される。この工程は図８のステップＳ９５の処理に対応する。
【０１０９】
障害箇所が特定されると、矢印Ａ２０に示す工程でプログラムの実行が停止され、矢印Ａ２１に示す工程でスナップショットの静的な解析が行なわれる。
【０１１０】
具体的には、取得されたスナップショットＳＰ１乃至スナップショットＳＰ１００のうち、矢印Ａ１９に示す工程で取得されたコンテキストＩＤがスナップショット名となっているスナップショットのみが抽出される。また、抽出されたスナップショットが、取得時刻が新しい順に処理対象のスナップショットとされる。
【０１１１】
さらに、例えばスナップショット内の論物変換テーブルから、障害発生仮想アドレス「0xc0000000」が、障害発生アドレス「0x80000000」に変換される。そして処理対象のスナップショットに含まれる、障害発生アドレス「0x80000000」の値が比較アドレス値とされて、比較アドレス値と障害発生アドレス値「０」との比較が行なわれ、直前スナップショットが特定される。
【０１１２】
以上のようにして、情報処理装置９１は、プログラムの実行中に障害が発生すると、障害発生要因である上書き処理が行なわれたメモリ６３の仮想アドレスを物理アドレスに変換し、アドレス値の比較により直前スナップショットを特定する。このように仮想アドレスによりデータが管理される場合でも、スナップショットの静的な解析という簡単な処理で迅速に直前スナップショットを特定し、デバッグ工数を低減させることができる。
【０１１３】
特に、マルチコンテキストのプログラムを実行する場合でも、スナップショットの取得時に実行していたプロセスのコンテキストのコンテキストＩＤをスナップショット名とすれば、解析時に処理対象とすべきスナップショットを簡単に特定することができる。
【０１１４】
〈第４の実施の形態〉
［プログラム実行処理の説明］
第３の実施の形態では、情報処理装置９１が実行するプログラムがマルチコンテキストのプログラムであり、障害が発生するプロセスのプログラムが未知である場合を例として説明した。そのため、第３の実施の形態では、各スナップショットが、どのプロセスのプログラムのものであるかを特定するために、コンテキストＩＤがスナップショット名とされていた。
【０１１５】
これに対して、実行するマルチコンテキストのプログラムを構成する各プロセスのプログラムのうち、どのプログラムで障害が発生するかが既知である場合もある。そのような場合、スナップショットを生成すべきプログラムが予め特定されているので、そのプログラムのみを対象としてスナップショットを取得するようにすればよい。
【０１１６】
例えば、マルチコンテキストのプログラムが実行され、そのプログラムを構成する各プロセスのプログラムのうちの障害が発生するプログラムが既知である場合、情報処理装置９１は図１０に示すプログラム実行処理を行う。
【０１１７】
以下、図１０のフローチャートを参照して、情報処理装置９１によるプログラム実行処理について説明する。
【０１１８】
ステップＳ１３１において、情報処理装置９１は仮想マシンを起動させる。このとき情報処理装置９１は、ユーザにより実行が指定されたプログラムの各プロセスのうち、障害が発生するプロセスのコンテキストのコンテキストＩＤを、パラメータとして設定し、仮想マシンを起動させる。
【０１１９】
仮想マシンが起動されると、その後、ステップＳ１３２乃至ステップＳ１３４の処理が行われるが、これらの処理は図６のステップＳ５２乃至ステップＳ５４の処理と同様であるので、その説明は省略する。
【０１２０】
但し、ステップＳ１３３において、スナップショット生成部６４は、仮想マシンの起動時にパラメータとして設定されたコンテキストＩＤにより特定されるコンテキストを使用するプロセスのプログラムが実行されているときのみスナップショットを取得する。
【０１２１】
例えば、図１１に示すように、障害が発生するプロセスのコンテキストＩＤが「１６８」である場合、コンテキストＩＤ「１６８」により特定されるコンテキストのプロセスが実行されているときにだけ、スナップショットが取得される。
【０１２２】
すなわち、プログラムの実行中、各時刻ｔｉ（但し、０≦ｉ≦ｎ）において、コンテキストＩＤ「１６８」により特定されるコンテキスト（プログラム）のスナップショットＳＰｉ（但し、０≦ｉ≦ｎ）が取得される。図１１の例では、各スナップショットを表す四角形内の文字が、そのスナップショットが取得されたときに実行されていたプロセスのコンテキストＩＤを示しており、それらのコンテキストＩＤは全て「１６８」となっている。
【０１２３】
このように、ステップＳ１３３では、予め指定されたコンテキストＩＤにより特定される、障害が発生するプロセスのプログラムのスナップショットだけが生成される。これにより、必要なスナップショットだけを生成することができ、処理効率を向上させることができる。
【０１２４】
ステップＳ１３２乃至ステップＳ１３４の処理が行われると、ステップＳ１３５において、プログラム実行部６２は障害箇所を特定する。
【０１２５】
具体的には、プログラム実行部６２は、障害発生の要因となったデータが記録されているメモリ６３の障害発生仮想アドレスを特定し、障害発生仮想アドレス、および障害発生アドレス値を制御部６１に供給する。
【０１２６】
障害発生仮想アドレスと障害発生アドレス値が制御部６１を介して比較部６５に供給されると、その後、ステップＳ１３６乃至ステップＳ１４１の処理が行なわれてプログラム実行処理は終了する。なお、これらの処理は図６のステップＳ５６乃至ステップＳ６１の処理と同様であるので、その説明は省略する。
【０１２７】
以上において説明したプログラム実行処理では、例えば図４に示した矢印Ａ１１に示す工程で、各プロセスのうち、障害が発生するプロセスのコンテキストＩＤ「１６８」がパラメータとして設定され、仮想マシンが起動される。
【０１２８】
そして、その後、矢印Ａ１２、矢印Ａ１３、矢印Ａ１５、および矢印Ａ１７乃至矢印Ａ２１に示す工程が順番に行なわれ、直前スナップショットが特定される。これらの工程では、図６を参照して説明したプログラム実行処理の場合と同様の処理が行われる。
【０１２９】
但し、プログラムの実行時には、コンテキストＩＤ「１６８」により特定される、障害が発生するプロセスのプログラムが実行されているときにだけ、スナップショットが取得される。これにより、矢印Ａ１４、矢印Ａ１６、および矢印Ａ１８に示すように、スナップショットＳＰ１乃至スナップショットＳＰ１００が取得される。
【０１３０】
以上のようにして、情報処理装置９１は、プログラムの実行中に障害が発生すると、障害発生要因である上書き処理が行なわれたメモリ６３の仮想アドレスを物理アドレスに変換し、アドレス値の比較により直前スナップショットを特定する。このように仮想アドレスによりデータが管理される場合でも、スナップショットの静的な解析という簡単な処理で迅速に直前スナップショットを特定し、デバッグ工数を低減させることができる。
【０１３１】
特に、マルチコンテキストのプログラムを実行する場合、障害が発生するプロセスのプログラムが既知であるときには、そのプログラムの実行時にのみスナップショットを取得すれば、解析に必要となるスナップショットだけを簡単に得ることができる。
【０１３２】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１３３】
コンピュータが実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアである図１のリムーバブルメディア３１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１３４】
そして、プログラムは、リムーバブルメディア３１をドライブ３０に装着することにより、入出力インターフェース２５を介して、記録部２８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部２９で受信し、記録部２８にインストールすることができる。その他、プログラムは、ROM２２や記録部２８に、あらかじめインストールしておくことができる。
【０１３５】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１３６】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１３７】
さらに、本技術は、以下の構成とすることも可能である。
【０１３８】
［１］
指定プログラムの実行中に、各時刻のスナップショットを生成するスナップショット生成部と、
前記指定プログラムの実行中に障害が発生した場合、前記障害の発生要因となった障害データと、前記障害データが格納される記録部のアドレスとを取得する取得部と、
前記スナップショットに含まれる前記アドレスの比較データと、前記障害データとを比較し、前記障害の発生要因となった処理が行われる直前に生成された前記スナップショットを特定する比較部と
を備える情報処理装置。
［２］
前記比較部は、前記スナップショットの生成時刻が新しい順に、前記スナップショットに含まれる前記比較データと、前記障害データとを比較していき、前記アドレスの前記比較データが前記障害データとは異なる最初の前記スナップショットを、前記直前に生成された前記スナップショットとする
［１］に記載の情報処理装置。
［３］
前記アドレスは前記記録部の物理アドレスである
［１］または［２］に記載の情報処理装置。
［４］
保持している変換テーブルを用いて、前記記録部の物理アドレスと仮想アドレスの変換を行なうメモリ管理部をさらに備え、
前記スナップショット生成部は、前記記録部の物理アドレスに格納されているデータと、前記メモリ管理部に保持されている前記変換テーブルとを含む前記スナップショットを生成し、
前記取得部は、前記障害データと、前記障害データが格納される前記記録部の仮想アドレスとを取得し、
前記比較部は、前記スナップショットに含まれる前記変換テーブルに基づいて、前記取得部により取得された前記仮想アドレスを、前記記録部の前記物理アドレスに変換するとともに、前記スナップショットに含まれている、変換により得られた前記物理アドレスの前記比較データと、前記障害データとを比較する
［１］または［２］に記載の情報処理装置。
［５］
前記スナップショット生成部は、前記指定プログラムが複数のプロセスごとのプログラムから構成される場合、前記スナップショットの生成時に実行されている前記プロセスのコンテキストを特定するコンテキストＩＤをスナップショット名とする前記スナップショットを生成し、
前記取得部は、前記障害の発生時に実行されていた前記プロセスの前記コンテキストの前記コンテキストＩＤをさらに取得し、
前記比較部は、前記取得部により取得された前記コンテキストＩＤをスナップショット名とする前記スナップショットについて、前記比較データと前記障害データとを比較する
［４］に記載の情報処理装置。
［６］
前記スナップショット生成部は、前記指定プログラムが複数のプロセスごとのプログラムから構成され、前記障害が発生する前記プロセスの前記プログラムが既知である場合、前記障害が発生する前記プロセスの前記プログラムが実行されているときにのみ、前記スナップショットを生成する
［４］に記載の情報処理装置。
【符号の説明】
【０１３９】
１１  情報処理装置，  ６１  制御部，  ６２  プログラム実行部，  ６３  メモリ，  ６４  スナップショット生成部，  ６５  比較部，  ６６  補助記録装置，  ９１  情報処理装置，  １０１  メモリ管理部
【図１】
2012256279.tif 000003
【図２】
2012256279.tif 000004
【図３】
2012256279.tif 000005
【図４】
2012256279.tif 000006
【図５】
2012256279.tif 000007
【図６】
2012256279.tif 000008
【図７】
2012256279.tif 000009
【図８】
2012256279.tif 000010
【図９】
2012256279.tif 000011
【図１０】
2012256279.tif 000012
【図１１】
2012256279.tif 000013