(57)【特許請求の範囲】
【請求項１】
監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶する記憶部と，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させる更新部と，
特定の事象が発生したことに応じて，全ての前記監視対象が前記特定の資源の使用をしていないことを前記判定値が示しているか否かを判定する判定部と，
前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないと判定された場合，前記監視対象において異常が検知された際に参照されるトレース情報が前記記憶部に記憶されていないと判定し，前記記憶部に記憶したトレース情報を削除する処理部と，を有する，
情報処理装置。
【請求項２】
請求項１において，
前記監視対象は，コンピュータ上で動作するプログラムを順次動作させるジョブであり，
前記特定の資源は，コンピュータが有するメモリであり，
前記更新部は，前記プログラムが前記メモリの領域を獲得したときに前記判定値を増加させ，前記プログラムが前記メモリの領域を解放したときに前記判定値を減少させる情報処理装置。
【請求項３】
請求項１において，
前記処理部は，前記判定値が０を下回っているときには，前記トレース情報の削除を行わない情報処理装置。
【請求項４】
請求項１において，
前記記憶部は，前記トレース情報を該トレース情報の取得時間と対応付けて記憶し，
前記処理部は，前記監視対象の実行状態が正常と判定された場合に，前記取得時間に基づき前記判定を行った時間の所定期間前までに記憶された前記トレース情報を削除する情報処理装置。
【請求項５】
請求項１において，
前記記憶部は，全ての前記監視対象が前記特定の資源を使用していないときに記憶された前記トレース情報を識別する識別情報を記憶し，
前記処理部は，前記監視対象の実行状態が正常と判定された場合であって，前記記憶された識別情報の数が所定値と同じ場合に，最初に前記記憶された識別情報が識別するトレース情報よりも前に記憶されたトレース情報を削除し，前記記憶された識別情報のうち最初に記憶された識別情報を削除する情報処理装置。
【請求項６】
請求項２において，
前記特定の事象は，前記ジョブの終了，または，前記プログラムによる他のプログラムの呼び出しである情報処理装置。
【請求項７】
監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶部に記憶し，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させ，
特定の事象が発生したことに応じて，全ての前記監視対象が前記特定の資源の使用をしていないことを前記判定値が示しているか否かを判定し，
前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないと判定された場合，前記監視対象において異常が検知された際に参照されるトレース情報が前記記憶部に記憶されていないと判定し，前記記憶部に記憶したトレース情報を削除する，
情報処理方法。
【請求項８】
監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶部に記憶し，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させ，
特定の事象が発生したことに応じて，全ての前記監視対象が前記特定の資源の使用をしていないことを前記判定値が示しているか否かを判定し，
前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないと判定された場合，前記監視対象において異常が検知された際に参照されるトレース情報が前記記憶部に記憶されていないと判定し，前記記憶部に記憶したトレース情報を削除する，
処理をコンピュータに実行させる情報プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，情報処理装置，情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
例えば，プログラムが動作するコンピュータにおいて，プログラムの動作状態やプログラムによる資源（メモリやディスク等）の使用状態に関するトレース情報を取得する場合がある。このトレース情報は，例えば，動作中のプログラムが所定の処理（例えば，資源の獲得や解放等）を行う毎に取得される。そして，運用管理者は，例えば，プログラムの処理結果に異常があった場合に，取得したトレース情報を参照することにより，異常の原因究明（異常が発生したプログラムの特定等）を行うことが可能になる。
【０００３】
具体的に，例えば，コンピュータにおいて複数のプログラムが並行して動作する場合，メモリ等の資源が複数のプログラムによって同時に使用される場合がある。この場合，運用管理者は，トレース情報を参照することにより，例えば，資源を使用しているプログラムの数（以下，カウンタ情報とも呼ぶ）を把握することができる。これにより，運用管理者は，例えば，全てのプログラムの処理が終了しているにも関わらず，カウンタ情報が資源を使用しているプログラムが存在することを示している場合，バグ等によって資源の解放が行われていないプログラムが存在すること（以下，これを資源の解放漏れとも呼ぶ）を検知することができる。（例えば，特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１−３２０５５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
運用管理者は，プログラムによる資源の解放漏れ等の異常が発生した場合，利用者へのサービスに影響が及ぶことを防ぐために，迅速に原因究明を行う必要がある。しかしながら，取得したトレース情報の中には，プログラムが正常に動作しているときに取得されたトレース情報が多く存在する。そのため，運用管理者は，異常の原因究明を行う際に，異常に関する情報を含むトレース情報を特定するまでに多大な時間を要する場合がある。また，トレース情報を記憶する記憶媒体の容量は有限であるため，取得したトレース情報を十分な時間記憶しておくことができない場合がある。
【０００６】
そこで，一つの実施の形態の目的は，調査に用いるトレース情報を効率的に取得する情報処理装置，情報処理方法及び情報処理プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
実施の形態の一つの側面によれば，監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶する記憶部と，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させ，前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないことを検知した場合に，前記記憶部に記憶したトレース情報を削除する処理部と，を有する。
【発明の効果】
【０００８】
一つの側面によれば，調査に用いるトレース情報を効率的に取得する。
【図面の簡単な説明】
【０００９】
【図１】監視対象装置の全体構成を示す図である。
【図２】監視対象装置のハードウエア構成を示す図である。
【図３】図２の監視対象装置の機能ブロック図である。
【図４】第１の実施の形態におけるトレース情報管理処理の概略を示すフローチャート図である。
【図５】第１の実施の形態におけるトレース情報管理処理の概略を示すフローチャート図である。
【図６】第１の実施の形態におけるトレース情報管理処理の概略を示すフローチャート図である。
【図７】第１の実施の形態におけるトレース情報管理処理の概略を説明する図である。
【図８】第１の実施の形態におけるトレース情報管理処理の詳細を示すフローチャート図である。
【図９】第１の実施の形態におけるトレース情報管理処理の詳細を示すフローチャート図である。
【図１０】第１の実施の形態におけるトレース情報管理処理の詳細を示すフローチャート図である。
【図１１】第１の実施の形態におけるトレース情報管理処理の詳細を説明する図である。
【図１２】第１の実施の形態におけるトレース情報管理処理の詳細を説明する図である。
【図１３】第１の実施の形態におけるトレース情報管理処理の詳細を説明する図である。
【図１４】第１の実施の形態におけるトレース情報管理処理の詳細を説明する図である。
【図１５】第２の実施の形態におけるトレース情報管理処理を説明するフローチャート図である。
【図１６】第２の実施の形態におけるトレース情報管理処理を説明する図である。
【図１７】第３の実施の形態におけるトレース情報管理処理を説明するフローチャート図である。
【図１８】第３の実施の形態におけるトレース情報管理処理を説明する図である。
【図１９】第３の実施の形態におけるトレース情報管理処理を説明する図である。
【図２０】トレース情報管理終了処理を説明するフローチャート図である。
【図２１】監視対象プログラムが動作する物理マシンが複数に分かれている場合を説明する図である。
【発明を実施するための形態】
【００１０】
［監視対象装置の構成］
図１は，監視対象装置の全体構成を示す図である。図１に示す監視対象装置１０（以下，情報処理装置１０とも呼ぶ）は，物理マシンであり，例えば，監視対象プログラム１（以下，単に監視対象１とも呼ぶ）と，監視対象プログラム１を監視するための監視プログラム３とが動作する。また，図１に示す監視対象装置１０内には，監視対象プログラム１が使用可能な資源（例えば，メモリ等）である共有資源２（以下，資源２または特定の資源２とも呼ぶ）と，監視対象プログラム１の実行状態に関するトレース情報を記憶する記憶媒体４とが設けられている。
【００１１】
監視対象装置１０は，例えば，利用者にサービスを提供する業務システムが構築される物理マシンである。そして，監視対象プログラム１は，例えば，監視対象装置１０内のＣＰＵで動作することにより，利用者に対するサービスの提供を実現するために各処理を行う。また，各監視対象プログラム１は，例えば，監視対象装置１０上で動作する他の監視対象プログラムと連携して処理を行うものであってよい。具体的に，各監視対象プログラム１は，監視対象装置１０上で動作する他の監視対象プログラムを呼び出して，その監視対象プログラムに処理を実行させるものであってもよい。なお，図１の例においては，監視対象装置１０上において３つの監視対象プログラム１が動作する例について説明するが，これ以外の数の監視対象プログラム１が動作するものであってもよい。
【００１２】
共有資源２は，例えば，監視対象プログラム１がアクセス可能なメモリやディスク等である。具体的に，例えば，各監視対象プログラム１は，必要に応じて共有資源２にアクセスし，その共有資源の獲得処理または解放処理を行う。
【００１３】
監視プログラム３は，例えば，監視対象装置１０内のＣＰＵで動作することにより，監視対象プログラム１の実行状態に関するトレース情報を取得する。具体的に，監視プログラム３は，例えば，監視対象プログラム１が共有資源２の獲得処理または解放処理が行ったときに，トレース情報を取得するものであってよい。
【００１４】
記憶媒体４は，監視プログラム３が取得したトレース情報を記憶する。なお，図１の例における記憶媒体４は，監視対象装置１０の内部に設けられているが，外部に設けられたものであってもよい。
【００１５】
なお，図１に示す各監視対象プログラム１は，プログラムを順次動作させるジョブを構成するものであり，ある処理を行うために連携して動作するものであってもよい。この場合，監視プログラム３は，ジョブ単位に監視を行うものであってよい。
【００１６】
［トレース情報の管理］
運用管理者は，監視対象装置１０において異常が発生した場合に，図１の例においては記憶媒体４に記憶されたトレース情報を参照することにより，異常が発生したプログラムの特定等の原因究明を行う。ここで，例えば，発生した異常がプログラムによる共有資源２の解放漏れであった場合，共有資源２の不足が発生し，他のプログラムの実行を妨げる場合がある。そのため，運用管理者は，発生した異常の内容によっては，発生した異常の原因究明を可能な限り迅速に行い，必要な対応を行う必要がある。
【００１７】
しかし，記憶媒体４に記憶されたトレース情報の中には，プログラムが正常に動作しているときに記憶されたトレース情報が多く存在する。そのため，運用管理者がトレース情報を参照する場合，異常に関する情報を含むトレース情報を特定するまでに多大な時間を要する場合がある。すなわち，運用管理者は，多くのトレース情報を記憶していたことにより，トレース情報による異常の原因究明を効率的に行うことができない場合がある。
【００１８】
また，トレース情報を記憶する記憶媒体４の容量は有限である。そのため，記憶媒体４に空き容量がなくなった場合に，例えば，記憶時期が古いトレース情報から削除する等の対応を行う必要がある。しかし，記憶するトレース情報の量が多い場合，トレース情報を記憶してから削除するまでの時間が十分に確保できない場合がある。そのため，運用管理者は，トレース情報の一部が既に消去されているために，異常発生時において必要な調査を行うことができない可能性がある。
【００１９】
そこで，本実施の形態では，共有資源２を使用している監視対象プログラム１の数に基づいて，共有資源２が使用されているか否かについて検知する。そして，共有資源２が使用されていないことを検知した場合に，記憶されている監視対象プログラム１の実行状態に関するトレース情報を削除する。これにより，監視対象プログラム１による共有資源２の解放漏れが発生した場合に，トレース情報に基づく調査の時間を短縮させることができる。
【００２０】
［監視対象装置のハードウエア構成］
次に，監視対象装置１０の構成について説明する。図２は，監視対象装置のハードウエア構成を示す図である。監視対象装置１０は，プロセッサであるＣＰＵ１０１と，メモリ１０２と，外部インターフェース（Ｉ／Ｏユニット）１０３と，記憶媒体１０４とを有する。各部は，バス１０５を介して互いに接続される。記憶媒体１０４は，例えば，記憶媒体１０４内のプログラム格納領域に，トレース情報の管理を行うための処理（以下，トレース情報管理処理とも呼ぶ）を行うためのプログラム１１０（以下，トレース情報管理プログラムとも呼ぶ）を記憶する。ＣＰＵ１０１は，図２に示すように，プログラム１１０の実行時に，プログラム１１０を記憶媒体１０４からメモリ１０２にロードし，プログラム１１０と協働してトレース情報管理処理を行う。また，記憶媒体１０４は，例えば，トレース情報管理処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下，記憶部１３０とも呼ぶ）を有する。なお，プログラム１１０は，図１における監視プログラム３に対応する。また，情報格納領域１３０は，例えば，図１における記憶媒体４として機能する。
【００２１】
[監視対象装置のソフトウエア構成]
図３は，図２の監視対象装置の機能ブロック図である。ＣＰＵ１０１は，プログラム１１０と協働することにより，例えば，トレース情報作成部１１１と，トレース情報記憶部１１２と，資源監視部１１３と，カウンタ情報記憶部１１４と，実行状態判定部１１５と，トレース情報削除部１１６として動作する。また，ＣＰＵ１０１は，プログラムと協働することにより，取得時間情報記憶部１１７と，識別情報記憶部１１８と，トレース情報出力部１１９と，エラー出力部１２０として動作する。具体的に，これらの機能は，監視対象装置１０のオペレーティングシステム（以下，ＯＳ）に実装された機能の一部であってよい。なお，以下，実行状態判定部１１５とトレース情報削除部１１６とを合わせて処理部とも呼ぶ。また，情報格納領域１３０には，例えば，トレース情報１３１と，カウンタ情報１３２と，取得時間情報１３３と，識別情報１３４とが記憶されている。
【００２２】
トレース情報作成部１１１は，例えば，監視対象プログラム１の実行状態に関するトレース情報１３１を作成する。トレース情報作成部１１１は，例えば，監視対象プログラム１が所定の動作をした場合に，これを検知してトレース情報１３１を作成する。この所定の動作は，例えば，監視対象プログラム１による共有資源２の一部の領域の獲得や解放であってよい。
【００２３】
トレース情報記憶部１１２は，例えば，トレース情報作成部１１１がトレース情報１３１を作成したことに応答して，作成されたトレース情報１３１の記憶を行う。具体的に，トレース情報記憶部１１２は，例えば，情報格納領域１３０にトレース情報１３１を記憶するものであってよい。なお，トレース情報１３１は，図１におけるトレース情報に対応する。
【００２４】
資源監視部１１３は，例えば，所定のタイミングにおいて共有資源２の監視を行う。例えば，資源監視部１１３は，共有資源２を獲得している監視対象プログラム１の数（監視対象プログラム１の処理の数）を検知する。そして，資源監視部１１３は，例えば，後述するカウンタ情報記憶部１１４に，検知した監視対象プログラム１の数に関する情報（以下，カウンタ情報１３２とも呼ぶ）を情報格納領域１３０に記憶するための指示を行う。なお，所定のタイミングは，例えば，１０（ｍｓ）毎等，定期的なタイミングであってよい。
【００２５】
カウンタ情報記憶部１１４は，例えば，資源監視部１１３からカウンタ情報１３２を記憶する指示を受けた時に，情報格納領域１３０にカウンタ情報１３２を記憶する。具体的に，カウンタ情報記憶部１１４は，例えば，資源監視部１１３が共有資源２を新たに獲得した監視対象プログラム１の存在を検知した場合に，カウンタ情報１３２が示す値（以下，判定値とも呼ぶ）を所定の値（例えば，１）だけ増加させる。また，カウンタ情報記憶部１１４は，例えば，資源監視部１１３が共有資源２を解放した監視対象プログラム１の存在を検知した場合に，判定値を所定の値（例えば，１）だけ減少させる。なお，カウンタ情報記憶部１１４は，例えば，情報格納領域１３０に既にカウンタ情報１３２が記憶されている場合には，記憶されているカウンタ情報１３２に上書きする形で新たなカウンタ情報１３２を記憶するものであってよい。
【００２６】
実行状態判定部１１５は，例えば，判定値に基づき，全ての監視対象プログラム１が共有資源２を使用していないこと（解放していること）を検知する。具体的に，実行状態判定部１１５は，例えば，判定値が０である場合，共有資源２を獲得している監視対象プログラム１は存在しないと判断し，これを検知するものであってよい。なお，実行状態判定部１１５は，例えば，監視対象プログラム１が他のプログラムの呼び出しを行った場合や，監視対象プログラム１が含まれるジョブの処理が終了した場合に，判定値に基づく検知を行うものであってよい。
【００２７】
トレース情報削除部１１６は，例えば，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を解放していることを検知したときに，情報格納領域１３０に記憶されているトレース情報１３１を削除する。
【００２８】
取得時間情報記憶部１１７は，例えば，トレース情報記憶部１１２がトレース情報１３１を記憶する際に，そのトレース情報１３１が作成された時間に関する情報である取得時間情報１３３を情報格納領域１３０に記憶する。
【００２９】
識別情報記憶部１１８は，例えば，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を解放していると判定した場合，その判定時に記憶されたトレース情報１３１を識別する識別情報１３４を記憶する。
【００３０】
トレース情報出力部１１９は，例えば，所定の条件に合致した場合に，例えば，情報格納領域１３０に記憶されたトレース情報１３１を外部の記憶媒体に記憶する。所定の条件は，例えば，ジョブの処理が終了したにもかかわらず，全ての監視対象プログラム１が共有資源２を解放していない場合であってよい。
【００３１】
エラー出力部１２０は，例えば，情報格納領域１３０に記憶されている判定値が異常値（例えば，０を下回る値）である場合に，エラーを出力する。なお，エラー出力部１２０は，エラーを出力する場合に，トレース情報削除部１１６にトレース情報１３１の削除を中止するように指示を行うものであってもよい。
【００３２】
［第１の実施の形態］
次に，第１の実施の形態について説明する。図４から図６は，第１の実施の形態におけるトレース情報管理処理の概略を示すフローチャート図である。また，図７は，第１の実施の形態におけるトレース情報管理処理の概略を説明する図である。図７を参照しながら図４から図６のトレース情報管理処理の概略について説明する。なお，トレース情報管理処理のうちトレース情報を記憶する処理をトレース情報記憶処理とも呼ぶ。また，トレース情報管理処理のうちトレース情報を削除する処理をトレース情報削除処理とも呼ぶ。以下，トレース情報記憶処理について説明する。
【００３３】
[トレース情報記憶処理] 
図４は，監視対象プログラム１が共有資源２の使用を開始する場合のトレース情報記憶処理に関するフローチャートであり，図５は，監視対象プログラム１が共有資源２の使用を終了する場合のトレース情報記憶処理に関するフローチャートである。なお，以下，トレース情報１３１は，監視対象プログラム１が共有資源２の使用を開始したとき，または，共有資源２の使用を終了したときに，トレース情報作成部１１１により作成されるものとして説明を行う。
【００３４】
図４に示すトレース情報記憶処理において，初めに，監視対象装置１０は，例えば，監視対象プログラム１による共有資源２の使用開始を検知するまで待機する（Ｓ１１のＮＯ）。すなわち，監視対象装置１０は，例えば，監視対象プログラム１による共有資源２の獲得を検知するまで待機する。そして，監視対象装置１０が監視対象プログラム１による共有資源２の使用開始を検知した場合（Ｓ１１のＹＥＳ），監視対象装置１０は，例えば，情報格納領域１３０に記憶されたカウンタ情報１３２を所定の値（例えば，１）だけ増加させる（Ｓ１２）。さらに，この場合，監視対象装置１０は，例えば，共有資源２の使用を開始した監視対象プログラム１の実行状態に関するトレース情報１３１を作成する（Ｓ１３）。そして，監視対象装置１０は，例えば，作成したトレース情報１３１を情報格納領域１３０に記憶する（Ｓ１４）。
【００３５】
すなわち，監視対象装置１０は，カウンタ情報１３２の記憶を行うことにより，共有資源２を使用している監視対象プログラム１の数の管理を行う。これにより，後述するように，監視対象装置１０は，カウンタ情報１３２が示す値に基づいて，情報格納領域１３０に記憶したトレース情報１３１を削除するか否かの判断を行うことができる。
【００３６】
次に，監視対象プログラム１が共有資源２の使用を終了する場合のトレース情報記憶処理を説明する。図５に示すトレース情報記憶処理において，監視対象装置１０は，例えば，監視対象プログラム１による共有資源２の使用終了を検知するまで待機する（Ｓ２１のＮＯ）。すなわち，監視対象装置１０は，例えば，監視対象プログラム１による共有資源２の解放を検知するまで待機する。そして，監視対象装置１０が監視対象プログラム１による共有資源２の使用終了を検知した場合（Ｓ２１のＹＥＳ），監視対象装置１０は，例えば，情報格納領域１３０に記憶されたカウンタ情報１３２を所定の値だけ減少させる（Ｓ２２）。このカウンタ情報１３２を減少させる所定の値は，例えば，共有資源２が獲得された場合にカウンタ情報１３２を増加させる値と同じ値である必要がある。さらに，監視対象装置１０は，例えば，共有資源２の使用を終了した監視対象プログラム１の実行状態に関するトレース情報１３１を作成する（Ｓ２３）。そして，監視対象装置１０は，例えば，作成したトレース情報１３１を情報格納領域１３０に記憶する（Ｓ２４）。
【００３７】
すなわち，監視対象装置１０は，例えば，監視対象プログラム１によって共有資源２が獲得されたことを検知した場合，カウンタ情報１３２を増加させる。そして，監視対象装置１０は，監視対象プログラム１によって共有資源２が解放されたことを検知した場合，共有資源２が獲得されたときにカウンタ情報１３２を増加させた分だけ，カウンタ情報１３２を減少させる。これにより，後述するように，監視対象装置１０は，カウンタ情報が０である場合に，全ての監視対象プログラム１が共有資源２を解放している状態であると判定することができる。
【００３８】
[トレース情報削除処理]  
次に，トレース情報削除処理について説明する。図６は，トレース情報削除処理に関するフローチャートである。図６に示すトレース情報削除処理において，初めに，監視対象装置１０は，例えば，全ての監視対象プログラム１による共有資源２の使用終了を検知するまで待機する（Ｓ３１のＮＯ）。すなわち，監視対象装置１０は，例えば，全ての監視対象プログラム１による共有資源２の解放を検知するまで待機する。具体的に，監視対象装置１０は，例えば，定期的に，情報格納領域１３０に記憶されたカウンタ情報１３２の確認を行い，カウンタ情報１３２が示す値が０であるときに，全ての監視対象プログラム１が共有資源２を解放したと判定するものであってよい。
【００３９】
そして，監視対象装置１０が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合（Ｓ３１のＹＥＳ），監視対象装置１０は，図７に示すように，例えば，情報格納領域１３０に記憶されたトレース情報１３１を削除する（Ｓ３２）。監視対象装置１０が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合，共有資源２を獲得した全ての監視対象プログラム１は，共有資源２を解放していることになる。そのため，監視対象装置１０は，この場合，監視対象プログラム１による資源の解放漏れが発生していないと判定する。そして，監視対象装置１０は，この場合，情報格納領域１３０に記憶されたトレース情報１３１を削除する。
【００４０】
すなわち，監視対象装置１０は，全ての監視対象プログラム１が共有資源２を使用していない場合，共有資源２の解放漏れは発生していないと判定し，現在記憶されているトレース情報１３１には，異常発生時に確認すべき情報が含まれていないと判断する。そして，この場合，監視対象装置１０は，例えば，情報格納領域１３０に記憶されている全てのトレース情報１３１の削除を行う。一方，監視対象装置１０は，共有資源２を使用している監視対象プログラム１が存在する場合，カウンタ情報１３２に基づいて資源の解放漏れが発生しているか否かを判定することはできない。そのため，監視対象装置１０は，この場合には，トレース情報１３１の削除を行わない。
【００４１】
このように，第１の実施の形態によれば，監視対象装置１０は，監視対象１の実行状態に関するトレース情報１３１と，監視対象１が使用可能な共有資源２を使用している監視対象１の数である判定値とを記憶する記憶部１３０を有する。また，監視対象装置１０は，監視対象１が共有資源２の使用を開始したときに，判定値を所定の値だけ増加させ，監視対象１が共有資源２の使用を終了したときに判定値を所定の値だけ減少させる。そして，監視対象装置１０は，判定値に基づいて全ての監視対象１が共有資源２の使用をしていないことを検知した場合に，記憶部１３０に記憶したトレース情報１３１を削除する処理部を有する。これにより，監視対象装置１０は，全ての共有資源２が監視対象１によって使用をしていないことを検知した場合に，共有資源２の解放漏れが発生した際に検証する必要はないトレース情報１３１を削除することができる。そのため，監視対象装置１０は，共有資源２の解放漏れの発生時における調査に要する時間を短縮させることが可能になる。
【００４２】
なお，図４及び図５に示すトレース情報記憶処理は，例えば，ＯＳの他の機能が共有資源２の獲得を検出した場合に，これを検知して処理を開始するものであってもよい。また，図６に示すトレース情報削除処理は，例えば，ＯＳの他の機能が共有資源２の解放を検出した場合に，これを検知して処理を開始するものであってもよい。
【００４３】
[第１の実施の形態の詳細]
次に，第１の実施の形態の詳細について説明する。図８から図１０は，第１の実施の形態におけるトレース情報管理処理の詳細を説明するフローチャート図である。また，図１１から図１４は，第１の実施の形態におけるトレース情報管理処理の詳細を説明する図である。図１１から図１４を参照しながら，図８から図１０のトレース情報管理処理の詳細を説明する。
【００４４】
[共有資源獲得時のトレース情報記憶処理の詳細]
初めに，共有資源２の獲得が行われた場合のトレース情報記憶処理の詳細について説明する。図８に示すように，監視対象装置１０の資源監視部１１３は，例えば，監視対象プログラム１による共有資源２の使用開始を検知するまで待機する（Ｓ４１のＮＯ）。すなわち，資源監視部１１３は，例えば，監視対象プログラム１による共有資源２の獲得を検知するまで待機する。
【００４５】
そして，資源監視部１１３が監視対象プログラム１による共有資源２の使用開始を検知した場合（Ｓ４１のＹＥＳ），資源監視部１１３は，例えば，前回，カウンタ情報１３２を更新した際のカウンタ情報１３２（以下，前回のカウンタ情報１３２とも呼ぶ）の値を取得する。さらに，資源監視部１１３は，例えば，前回のカウンタ情報１３２と現在のカウンタ情報１３２の値とを比較する（Ｓ４２）。その結果，前回のカウンタ情報１３２と，現在のカウンタ情報１３２の値とが同じである場合（Ｓ４２のＹＥＳ），カウンタ情報記憶部１１４は，例えば，情報格納領域１３０に記憶されたカウンタ情報１３２の値を所定の値（例えば，１）だけ増加させる（Ｓ４３）。
【００４６】
すなわち，共有資源２の獲得または解放の発生に基づいてカウンタ情報１３２の値を増加または減少した後，次に，共有資源２の獲得または解放の発生に基づいてカウンタ情報１３２の値を増加または減少する前に，カウンタ情報１３２の値が更新される可能性がある。具体的に，例えば，他のプログラムによるメモリの破壊等，共有資源２の獲得または解放以外の要因（以下，外的要因とも呼ぶ）によって，カウンタ情報１３２が更新された場合がこれに該当する。そして，この場合，カウンタ情報１３２は，共有資源２を使用している監視対象プログラム１の数に関する情報を正しく記憶していないことになる。そのため，資源監視部１１３は，前回のカウンタ情報１３２の値と，現在のカウンタ情報１３２の値とが同じであることを確認することにより，カウンタ情報１３２が外的要因によって更新されていないことを確認する。
【００４７】
そして，トレース情報作成部１１１は，カウンタ情報記憶部１１４がカウンタ情報１３２を増加させた後（Ｓ４３），例えば，共有資源２の使用を開始した監視対象プログラム１の実行状態に関するトレース情報１３１を取得する（Ｓ４４）。そして，トレース情報記憶部１１２は，例えば，トレース情報作成部１１１が作成したトレース情報１３１を情報格納領域１３０に記憶する（Ｓ４５）。
【００４８】
なお，前回のカウンタ情報１３２は，例えば，情報格納領域１３０に記憶済のトレース情報１３１を参照することにより取得するものであってよい。すなわち，トレース情報記憶部１１２は，トレース情報１３１に各トレース情報１３１を作成したときのカウンタ情報１３２を含める形で記憶する。そして，資源監視部１１３は，監視対象プログラム１が共有資源２の使用を開始したことを検知したときに（Ｓ４１のＹＥＳ），情報格納領域１３０に記憶されているトレース情報１３１を参照して，前回のカウンタ情報１３２を取得するものであってよい。トレース情報１３１の詳細については後述する。
【００４９】
一方，前回のカウンタ情報１３２と，現在のカウンタ情報１３２の値とが異なる場合（Ｓ４２のＮＯ），監視対象装置１０のエラー出力部１２０は，例えば，運用管理者にエラーを通知する（Ｓ４６）。すなわち，この場合，エラー出力部１２０は，外的要因によってカウンタ情報１３２が更新されていると判断し，運用管理者にその旨を通知する。そして，エラー出力部１２０がエラーを出力した場合（Ｓ４６），監視対象装置１０のトレース情報出力部１１９は，例えば，情報格納領域１３０に記憶されているトレース情報１３１を出力する（Ｓ４７）。この場合，トレース情報出力部１１９は，例えば，トレース情報１３１をトレース情報削除部１１６によって削除されることがない他の記憶媒体等に記憶させるものであってよい。すなわち，トレース情報出力部１１９は，この場合，後に運用管理者がその原因究明を行うことができるように，情報格納領域１３０に記憶されているトレース情報１３１の他の記憶媒体等に出力する。
【００５０】
さらに，エラー出力部１２０がエラーを出力した場合（Ｓ４６），監視対象装置１０のトレース情報削除部１１６は，例えば，情報格納領域１３０に記憶された全てのトレース情報１３１を削除するものであってよい（Ｓ４８）。
【００５１】
なお，エラー出力部１２０がエラーを出力した場合（Ｓ４６），エラー出力部１２０は，例えば，図８に示すように，トレース情報管理処理を一度終了させる。すなわち，エラーが発生した場合，その後作成されるトレース情報１３１も発生したエラーの影響を受けている可能性がある。そのため，監視対象装置１０は，この場合，トレース情報管理処理を終了させるものであってよい。そして，運用管理者は，エラーの原因究明及び必要な対応が終了したときに，トレース情報管理処理を再度実行させるものであってよい。
【００５２】
[共有資源解放時のトレース情報記憶処理の詳細]
次に，共有資源２の解放が行われた場合のトレース情報記憶処理の詳細について説明する。図９に示すように，資源監視部１１３は，例えば，監視対象プログラム１による共有資源２の使用終了を検知するまで待機する（Ｓ５１のＮＯ）。すなわち，資源監視部１１３は，例えば，監視対象プログラム１による共有資源２の解放を検知するまで待機する。
【００５３】
そして，資源監視部１１３が監視対象プログラム１による共有資源２の使用終了を検知した場合（Ｓ５１のＹＥＳ），資源監視部１１３は，例えば，図８の場合と同様に，前回のカウンタ情報１３２の値と，現在のカウンタ情報１３２の値とを比較する（Ｓ５２）。前回のカウンタ情報１３２の値と，現在のカウンタ情報１３２の値とを比較については図８で説明したため，ここでは省略する。そして，前回のカウンタ情報１３２と，現在のカウンタ情報１３２の値とが同じである場合（Ｓ５２のＹＥＳ），カウンタ情報記憶部１１４は，例えば，情報格納領域１３０に記憶されたカウンタ情報１３２を所定の値だけ減少させる（Ｓ５３）。
【００５４】
一方，前回更新時のカウンタ情報１３２と，現在のカウンタ情報１３２の値とが異なる場合（Ｓ５２のＮＯ），エラー出力部１２０は，例えば，運用管理者にエラーを通知する（Ｓ５７）。また，この場合，トレース情報出力部１１９は，例えば，トレース情報１３１の出力を行うものであってもよく（Ｓ５８），トレース情報削除部１１６は，トレース情報１３１の削除を行うものであってもよい（Ｓ５９）。エラー出力部１２０がエラー出力した場合については図８で説明したため，ここでは詳細な説明を省略する。
【００５５】
次に，カウンタ情報記憶部１１４は，カウンタ情報１３２の値を減少させた後（Ｓ５３），カウンタ情報１３２が負の数であるか否かを確認する（Ｓ５４）。そして，カウンタ情報１３２が負の数であった場合（Ｓ５４のＮＯ），エラー出力部１２０は，例えば，エラーを出力する（Ｓ５７）。すなわち，カウンタ情報記憶部１１４は，共有資源２が獲得されたことを資源監視部１１３が検知した場合にカウンタ情報１３２を増加させ，共有資源２が解放されたことを資源監視部１１３が検知した場合にカウンタ情報１３２を減少させる。そのため，カウンタ情報１３２が示す値は，通常運用時においては常に０以上の値になる。したがって，エラー出力部１２０は，例えば，図９に示すように，カウンタ情報１３２が負の数になっている場合，プログラムに内在するバグ等に起因して異常が発生しているものと判定し，エラーを出力する。
【００５６】
そして，トレース情報作成部１１１は，図８で説明した場合と同様に，例えば，共有資源２の使用を終了した監視対象プログラム１の実行状態に関するトレース情報１３１を作成する（Ｓ５５）。そして，トレース情報記憶部１１２は，例えば，トレース情報作成部１１１が作成したトレース情報１３１を情報格納領域１３０に記憶する（Ｓ５６）。
【００５７】
[トレース情報削除処理の詳細]
次に，トレース情報削除処理の詳細について説明する。図１０において，初めに，監視対象装置１０の実行状態判定部１１５は，例えば，実行状態判定を行うべきタイミングになるまで待機する（Ｓ６１のＮＯ）。この実行状態判定を行うタイミングは，例えば，監視対象プログラム１が他のプログラムを呼び出した場合や，監視対象プログラム１を含むジョブの処理が終了した場合であってよい。そして，実行状態判定を行うべきタイミングになった場合（Ｓ６１のＹＥＳ），実行状態判定部１１５は，例えば，全ての監視対象プログラム１による共有資源２の使用が終了しているか否かの検知を行う（Ｓ６２）。その結果，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合（Ｓ６２のＹＥＳ），トレース情報削除部１１６は，例えば，情報格納領域１３０に記憶された全てのトレース情報１３１を削除する（Ｓ６３）。
【００５８】
すなわち，実行状態判定部１１５は，全ての監視対象プログラム１が共有資源２を解放していることを検知した場合，その時点において共有資源２の解放漏れは発生していないと判定できる。そのため，この時点におけるトレース情報１３１は，解放漏れの異常に関する情報は含まれておらず，将来共有資源２の解放漏れが発生した場合に，検証する必要がないトレース情報である。したがって，トレース情報削除部１１６は，この場合，情報格納領域１３０に記憶された全てのトレース情報１３１を削除する。これにより，運用管理者は，将来共有資源２の解放漏れが発生した場合に，検証する必要があるトレース情報の量を抑制することが可能になる。したがって，運用管理者は，共有資源２の解放漏れが発生した際に，異常が発生したプログラムの特定等，原因究明を迅速に行うことが可能になる。
【００５９】
一方，共有資源２を使用している監視対象プログラム１が存在することを実行状態判定部１１５が検知した場合（Ｓ６２のＮＯ），トレース情報出力部１１９は，例えば，記憶されているトレース情報１３１の出力を行うタイミングであるか否かについて判定する（Ｓ６４）。このトレース情報１３１の出力を行うタイミングは，例えば，Ｓ６１の実行状態判定タイミングのうち，監視対象プログラム１が含まれるジョブが終了したときであってよい。すなわち，監視対象プログラム１が含まれるジョブが終了したにもかかわらず，共有資源２を使用している監視対象プログラム１が存在する場合，バグ等によって共有資源２の解放漏れが発生している可能性が高い。そのため，この場合，トレース情報出力部１１９は，運用管理者による異常の原因究明を可能にするため，トレース情報１３１を出力する。
【００６０】
なお，トレース情報出力部１１９は，例えば，Ｓ６１の実行状態判定タイミングのうち，監視対象プログラム１が他のプログラムを呼び出したときには，トレース情報１３１の出力（Ｓ６６）を行わないものであってよい。すなわち，監視対象プログラム１による他のプログラムの呼出しは，監視対象プログラム１によって共有資源２が使用された状態においても行われる。そのため，監視対象プログラム１によって共有資源２が使用されているときに，監視対象プログラム１による他のプログラムの呼出しが発生した場合においては，トレース情報出力部１１９は，トレース情報１３１の出力を行わないものであってよい。
【００６１】
そして，トレース情報出力部１１９がトレース情報１３１を行うタイミングであると判定した場合（Ｓ６４のＹＥＳ），エラー出力部１２０は，例えば，運用管理者にエラーを通知する（Ｓ６５）。また，この場合，トレース情報出力部１１９は，例えば，トレース情報１３１の出力を行い（Ｓ６６），トレース情報削除部１１６は，トレース情報１３１の削除を行う（Ｓ６７）。エラー出力部１２０がエラー出力した場合の処理については，図８で説明したため，ここでは詳細な説明を省略する。
【００６２】
[トレース情報とカウンタ情報の具体例]
次に，トレース情報１３１とカウンタ情報１３２の具体例を説明する。図１１は，トレース情報１３１の具体例であり，図１２は，カウンタ情報１３２の具体例である。
【００６３】
図１１に示すトレース情報１３１は，トレース情報１３１を識別する「トレース識別ＩＤ」と，実行中のジョブを識別する「ジョブ識別ＩＤ」と，実行中のジョブに含まれるプログラムを識別する「プログラム識別ＩＤ」と，発生した事象である「発生事象」とを項目として有している。また，図１１に示すトレース情報１３１は，実行するプログラムが遷移した場合における遷移元のプログラムを識別する「遷移元プログラム識別ＩＤ」と，発生した事象を発生させる命令が格納されたアドレスを示す「発生事象呼出し元アドレス」とを項目として有している。さらに，図１１に示すトレース情報１３１は，トレース情報１３１の作成前のカウンタ情報１３２の値である「更新前カウンタ値」と，作成後のカウンタ情報１３２の値である「更新後カウンタ値」と，トレース情報１３１の作成時刻である「時刻」を項目として有している。
【００６４】
なお，トレース情報１３１は，図１１に示すように，例えば，ジョブ識別ＩＤが同じトレース情報１３１（図１１の例では，項目「ジョブ識別ＩＤ」がＪＯＢ１であるトレース情報１３１）をまとめた状態で情報格納領域１３０に記憶するものであってもよい。また，同じメモリ領域を使用するジョブが複数ある場合には，その複数のジョブに関するトレース情報をまとめた状態で情報格納領域１３０に記憶するものであってもよい。
【００６５】
また，項目「発生事象」は，トレース情報１３１を作成する契機となった事象を記憶するものであり，図１１の例においては，項目「プログラム識別ＩＤ」が示すプログラムによる共有資源２の獲得を示す「獲得」や共有資源２の解放を示す「解放」とが含まれる。さらに，項目「発生事象」には，図１１の例においては，プログラムの呼出しまたは呼出しの終了があったことを示す「遷移」と，ジョブの処理が終了した場合を示す「終了」とが含まれる。
【００６６】
具体的に，図１１において，項目「トレース識別ＩＤ」が１であるトレース情報１３１は，ＪＯＢ１に含まれるプログラムであるＰＧ１−１が共有資源２を獲得したときの情報を含んでいる。そして，共有資源２の獲得前におけるカウンタ情報１３２が示す値（以下，カウンタ値とも呼ぶ）が０であり，共有資源２の獲得後におけるカウンタ値が１であることを示す情報を含んでいる。また，このトレース情報１３１は，共有資源２を獲得するための命令が格納されたアドレスがＰＧ１−１の１０番地であり，トレース情報１３１の作成時刻が２０１４年９月８日１３時００分３１秒であることを示す情報を含んでいる。
【００６７】
次に，図１１において，項目「トレース識別ＩＤ」が２であるトレース情報１３１は，ＰＧ１−１が共有資源２を解放したときの情報を含んでいる。そして，共有資源２の解放前におけるカウンタ値が１であり，共有資源２の解放後におけるカウンタ値が０であることを示す情報を含んでいる。また，このトレース情報１３１は，共有資源２を解放するための命令が格納されたアドレスがＰＧ１−１の３０番地であり，トレース情報１３１の作成時刻が２０１４年９月８日１３時１０分２３秒であることを示す情報を含んでいる。
【００６８】
さらに，図１１において，項目「トレース識別ＩＤ」が３であるトレース情報１３１は，ＰＧ１−２がＰＧ１−１によって呼び出されたときの情報を含んでいる。また，図１１において，項目「トレース識別ＩＤ」が１１であるトレース情報１３１は，ＪＯＢ１に含まれるプログラム（図１１の例では，ＰＧ１−１，ＰＧ１−２，ＰＧ１−３）の処理が全て終了したときの情報を含んでいる。図１１のトレース情報１３１に含まれるその他の情報については，上記の場合と同様であるため，その説明を省略する。
【００６９】
なお，図１１の例において，プログラムの呼出し及びジョブによる処理の終了が発生した場合についてもトレース情報１３１を作成する場合について説明したが，共有資源２の獲得及び解放が発生した場合のみトレース情報１３１を作成するものであってもよい。
【００７０】
次に，カウンタ情報１３２の具体例について説明する。図１２（Ａ）は，トレース情報１３１とカウンタ情報１３２を対応付ける情報（以下，制御情報とも呼ぶ）の具体例である。図１２（Ａ）に示す制御情報は，共有資源２を識別する「資源識別ＩＤ」と，項目「資源識別ＩＤ」が示す共有資源２を使用するジョブに関するトレース情報１３１が記憶されているアドレスを示す「トレース情報記憶アドレス」とを項目として有する。また，図１２（Ａ）に示す制御情報は，項目「資源識別ＩＤ」が示す共有資源２を使用するジョブに関するカウンタ情報１３２が記憶されているアドレスを示す「カウンタ情報記憶アドレス」を項目として有する。なお，図１２に示す各メモリ領域は，例えば，図１に示す共有資源２の一部に対応するものである。
【００７１】
具体的に，図１２（Ａ）において，メモリ領域１−１に関する制御情報は，メモリ領域１−１を獲得または解放する可能性があるジョブに関するトレース情報１３１が記憶されているアドレスであるＡＡＡの情報を含んでいる。例えば，メモリ領域１−１を使用するジョブが図１１に示すＪＯＢ１である場合，アドレスＡＡＡには，図１１に示すトレース情報１３１が記憶される。そして，アドレスＢＢＢ，ＣＣＣ，ＤＤＤにも同様に，それぞれメモリ領域１−２，１−３，１−４に対応するトレース情報が記憶される。
【００７２】
そして，図１２（Ｂ）は，メモリ領域１−１を獲得しているプログラムの数に関するカウンタ情報１３２の具体例である。図１２（Ｂ）に示すカウンタ情報１３２は，例えば，メモリ領域１−１を獲得しているプログラムの数である「カウンタ値」を項目として有している。具体的に，図１２（Ｂ）の例におけるカウンタ情報１３２は，メモリ領域１−１を獲得しているプログラムの数として２を記憶している。なお，アドレスＦＦＦ，ＧＧＧ、ＨＨＨにも同様に，それぞれメモリ領域１−２，１−３，１−４に対応するカウンタ情報が記憶されている。
【００７３】
すなわち，図１１及び図１２の例において，図１１に示すトレース情報１３１に含まれる情報と，図１２（Ｂ）に示すカウンタ情報１３２に含まれる情報とは，図１１（Ａ）に示す制御情報に含まれる情報によって対応付けられている。これにより，図１１（Ａ）に示す制御情報の項目「資源識別ＩＤ」毎に，図１１におけるトレース情報１３１と，図１２（Ｂ）におけるカウンタ情報１３２とを対応させながら管理することが可能になる。
【００７４】
[トレース情報管理処理の具体例]
次に，図１１に示すトレース情報１３１及び図１２に示すカウンタ情報１３２を参照しながら，トレース情報管理処理の具体例について説明する。図１３及び図１４は，トレース情報管理処理の具体例を説明する図である。具体的に，図１３及び図１４は，図１１において説明したＪＯＢ１がメモリ領域１−１の獲得または解放を行う場合のトレース情報管理処理の流れについて説明する。なお，以下，図１３及び図１４に示すように，実行状態判定部１１５は，プログラムの呼出し及びジョブの処理の終了があったときに，トレース情報１３１を削除するか否かの判定を行うものとして説明を行う。
【００７５】
図１３に示す例において，ＪＯＢ１の開始と同時にＰＧ１−１が実行される。この時点でメモリ領域１−１を獲得しているプログラムは存在しないため，カウンタ情報１３２が示す値は０である。そして，ＰＧ１−１は，その実行に伴い，メモリ領域１−１を獲得し，その後メモリ領域１−１を解放する（図１３の（１），（２））。この場合，カウンタ情報記憶部１１４は，メモリ領域１−１が獲得されたときに，図１２のカウンタ情報１３２における項目「カウンタ値」を０から１に更新し，メモリ領域１−１が解放されたときに，１から０に更新する。また，トレース情報作成部１１１は，メモリ領域１−１が獲得及び解放が行われたため，図１１の項目「トレース識別ＩＤ」が１及び２であるトレース情報１３１を作成し，トレース情報記憶部１１２は，作成したトレース情報１３１を情報格納領域１３０に記憶する。
【００７６】
次に，図１３に示す例において，ＰＧ１−１は，その実行に伴い，ＰＧ１−２を呼び出す（図１３の（３））。この場合，監視対象プログラム１による共有資源２の獲得または解放は行われないため，カウンタ情報記憶部１１４は，カウンタ情報１３２を更新しない。また，トレース情報作成部１１１は，図１１の項目「トレース識別ＩＤ」が３であるトレース情報１３１を作成する。そして，この場合，図１３の例における実行状態判定部１１５は，カウンタ値を参照してトレース情報１３１を削除するか否かの判定を行う。具体的に，図１３の例において，ＰＧ１−２の呼出し時におけるカウンタ値は０であるため，トレース情報削除部１１６は，図１１の項目「トレース識別ＩＤ」が１から３であるトレース情報１３１を削除する。すなわち，この場合，実行状態判定部１１５は，図１３における（１）から（３）までの間に実行された処理において，共有資源２の解放漏れが発生していないと判定する。したがって，トレース情報削除部１１６は，トレース情報１３１の削除を行う。
【００７７】
そして，図１３に示す例では，ＰＧ１−２は，その実行に伴い，メモリ領域１−１の獲得を２回行った後，ＰＧ１−１の呼出し（ＰＧ１−１への復帰）を行う（図１３の（４），（５），（６））。この場合，カウンタ情報記憶部１１４は，図１２のカウンタ情報１３２における項目「カウンタ値」を０から１に更新し，さらに，１から２に更新する。また，トレース情報作成部１１１は，図１１の項目「トレース識別ＩＤ」が４，５及び６であるトレース情報１３１を作成する。そして，図１３に示す例では，ＰＧ１−１は，その実行に伴い，メモリ領域１−１を解放する（図１３の（７））。この場合，カウンタ情報記憶部１１４は，図１２のカウンタ情報１３２における項目「カウンタ値」を，２から１に更新する。また，トレース情報作成部１１１は，メモリ領域１−１の解放が行われたため，図１１の項目「トレース識別ＩＤ」が７であるトレース情報１３１を作成する。
【００７８】
さらに，図１３に示す例では，ＰＧ１−１は，ＰＧ１−３を呼び出す（図１３の（８））。この場合，図１３の（３）の場合と同様に，カウンタ情報１３２は更新されない。また，トレース情報作成部１１１は，プログラムの呼出しが行われたため，図１１の項目「トレース識別ＩＤ」が８であるトレース情報１３１を作成する。さらに，実行状態判定部１１５は，カウンタ値を参照してトレース情報１３１を削除するか否かの判定を行う。具体的に，図１３の例において，ＰＧ１−２の呼出し時におけるカウンタ値は１であるため，トレース情報削除部１１６は，現在記憶されているトレース情報１３１（図１１の項目「トレース識別ＩＤ」が４から８であるトレース情報１３１）の削除を行わない。
【００７９】
次に，図１３に示す例では，ＰＧ１−３は，その実行に伴い，メモリ領域１−１を解放し，ＰＧ１−１の呼出し（ＰＧ１−１への復帰）を行う（図１３の（９），（１０））。この場合，カウンタ情報記憶部１１４は，図１２のカウンタ情報１３２における項目「カウンタ値」を，１から０に更新する。また，トレース情報作成部１１１は，図１１の項目「トレース識別ＩＤ」が９及び１０であるトレース情報１３１を作成する。
【００８０】
その後，図１３に示す例では，ＰＧ１−１，１−２，１−３の処理の終了に伴い，ＪＯＢ１は終了する（図１３の（１１））。この場合，監視対象プログラム１による共有資源２の獲得または解放は行われないため，カウンタ情報記憶部１１４は，カウンタ情報１３２を更新しない。また，トレース情報作成部１１１は，図１１の項目「トレース識別ＩＤ」が１１であるトレース情報１３１を作成する。そして，実行状態判定部１１５は，カウンタ値を参照してトレース情報１３１を削除するか否かの判定を行う。具体的に，図１３の例において，ジョブ終了時におけるカウンタ値は０であるため，トレース情報削除部１１６は，図１１の項目「トレース識別ＩＤ」が４から１１であるトレース情報１３１を削除する。すなわち，図１３に示す例において，ジョブの終了時（図１３の（１１））におけるカウンタ値が０であるため，ＪＯＢ１の実行中（図１３の（１）から（１１））において共有資源２の解放漏れは発生しなかったものと判定する。
【００８１】
なお，実行状態判定部１１５がトレース情報１３１の削除を行うか否かの判定を行う場合，トレース情報作成部１１１は，実行状態判定部１１５がトレース情報１３１の削除を行わない旨の判定を行った後に，トレース情報１３１を作成するものであってもよい。これにより，直後に削除されることになるトレース情報１３１の作成を防ぐことができる。また，実行状態判定部１１５がトレース情報１３１の削除を行うか否かの判定を行う場合には，トレース情報作成部１１１は，トレース情報１３１を作成しないものであってもよい。
【００８２】
図１４は，図１３の例において共有資源２の解放漏れが発生した場合の例である。具体的に，図１４に示す例は，図１３の（９）において行われるべき共有資源２を解放が行われなかった場合の例である。図１４に示す例において，共有資源２の解放漏れが１回発生しているため，ジョブの終了時（図１４の（１０））におけるカウンタ値は１である。そのため，エラー出力部１２０は，この場合，例えば，資源の解放漏れが発生した旨のエラーを出力する（図１０のＳ６５）。そして，トレース情報出力部１１９は，例えば，情報格納領域１３０に記憶されているトレース情報を他の記憶媒体等に記憶する処理を行う（図１０のＳ６６）。
【００８３】
具体的に，図１４の例において，ジョブの終了時（図１４の（１０））において，情報格納領域１３０に記憶されているトレース情報１３１は，図１１の項目「トレース識別ＩＤ」が４から１１であるトレース情報１３１である。そのため，トレース情報出力部１１９は，例えば，図１１の項目「トレース識別ＩＤ」が４から１１であるトレース情報１３１を出力する。ここで，図１４の例におけるジョブの終了時において，図１１の項目「トレース識別ＩＤ」が１から３であるトレース情報１３１は，既に削除されている。そのため，運用管理者は，図１４のジョブ終了時（異常発生時）において，異常に関する情報が含まれていないと判定した情報（項目「トレース識別ＩＤ」が１から３であるトレース情報１３１）の検証を行う必要がない。したがって，運用管理者は，第１の実施の形態におけるトレース情報管理処理により，異常の原因となったプログラム（図１４の例においてはＰＧ１−３）を特定するための時間を短縮させることが可能になる。
【００８４】
［第２の実施の形態］
次に，第２の実施の形態について説明する。図１５は，第２の実施の形態におけるトレース情報管理処理を示すフローチャートである。また，図１６は，第２の実施の形態におけるトレース情報管理処理を説明する図である。図１６を参照しながら，図１５のトレース情報管理処理について説明する。
【００８５】
第１の実施の形態で説明したカウンタ情報１３２は，プログラムに内在する誤った資源解放によって，運用管理者が意図しない更新が行われる可能性がある。この場合，トレース情報削除部１１６は，実際には共有資源２を使用している監視対象プログラム１が存在するにも関わらず，トレース情報１３１を削除してしまう可能性がある。その場合，余分な資源解放が行われたことになるので，０以上の値をとるべきカウンタがいずれ負になる。この点，第１の実施の形態においては，図９のＳ５４で説明したように，カウンタ情報１３２の更新の検知を行うことで，運用管理者にエラーが発生したことを通知することができる。しかし，意図しないタイミングでの資源解放が発生した場合，運用管理者にエラーの発生を通知する前に，トレース情報削除部１１６は，トレース情報１３１を削除してしまっている可能性がある。
【００８６】
そこで，第２の実施の形態におけるトレース情報管理処理は，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合においても，所定の条件を満たすまでトレース情報１３１の削除を行わない。これにより，意図しないタイミングでカウンタ情報１３２が更新された場合に，適切ではないタイミングでトレース情報１３１が削除される可能性を，さらに低減させることができる。以下，第２の実施の形態におけるトレース情報管理処理について説明する。
【００８７】
[第２の実施の形態のトレース情報削除処理]
初めに，第２の実施の形態におけるトレース情報削除処理について説明する。なお，トレース情報記憶処理は，第１の実施の形態における処理を同じ処理であるため，ここでは説明を省略する。
【００８８】
図１５において，初めに，実行状態判定部１１５は，第１の実施の形態と同様に，例えば，実行状態判定を行うべきタイミングになるまで待機する（Ｓ７１）。そして，実行状態判定を行うべきタイミングになった場合（Ｓ７１のＹＥＳ），実行状態判定部１１５は，例えば，全ての監視対象プログラム１による共有資源２の使用が終了しているか否かの検知を行う（Ｓ７２）。その結果，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合（Ｓ７２のＹＥＳ），トレース情報削除部１１６は，例えば，情報格納領域１３０に記憶されている識別情報１３４の数が最大数であるか否かについて確認する（Ｓ７３）。識別情報１３４は，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を解放していると判定した場合において，その判定時に記憶されるトレース情報１３１を識別するための情報である。また，情報格納領域１３０に記憶可能な識別情報１３４は，例えば，最大５個の情報であってよい。なお，識別情報１３４の詳細については後述する。
【００８９】
そして，識別情報１３４の数が最大数である場合（Ｓ７３のＹＥＳ），トレース情報削除部１１６は，例えば，最初に情報格納領域１３０に記憶された識別情報１３４が識別するトレース情報１３１よりも前に記憶されたトレース情報１３１の削除を行う（Ｓ７４）。さらに，トレース情報記憶部１１２は，例えば，情報格納領域１３０に最初に記憶された識別情報１３４を削除する（Ｓ７５）。一方，識別情報１３４の数が最大数でない場合（Ｓ７３のＮＯ），トレース情報削除部１１６は，例えば，識別情報１３４及びトレース情報１３１の削除を行わない。
【００９０】
すなわち，トレース情報削除部１１６は，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合であっても，情報格納領域１３０に記憶された識別情報の数が最大数でない場合には，トレース情報１３１の削除を行わない。そして，トレース情報削除部１１６は，情報格納領域１３０に記憶された識別情報１３４の数が最大数である場合に，最初に記憶された識別情報１３４が識別するトレース情報１３１よりも前に記憶されたトレース情報１３１のみを削除する。これにより，トレース情報削除部１１６は，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合において，トレース情報１３１を削除するまでに猶予時間を設けることができる。また，トレース情報削除部１１６は，外的要因等によってカウンタ情報１３２が運用管理者の意図しないタイミングで更新された場合に，誤ったカウンタ情報１３２に基づいてトレース情報１３１が削除される可能性を低減させることができる。
【００９１】
そして，トレース情報記憶部１１２が最初に記憶された識別情報１３４を削除した後（Ｓ７５），トレース情報記憶部１１２は，例えば，直近に記憶したトレース情報１３１に含まれるトレース識別情報ＩＤを識別情報１３４として記憶する（Ｓ７６）。また，情報格納領域１３０に記憶された識別情報１３４の数が最大数ではない場合も同様に（Ｓ７３のＮＯ），トレース情報記憶部１１２は，例えば，直近に記憶したトレース情報１３１に含まれるトレース識別情報ＩＤを識別情報１３４として記憶する（Ｓ７６）。
【００９２】
また，共有資源２を使用している監視対象プログラム１が存在することを実行状態判定部１１５が検知した場合（Ｓ７２のＮＯ），トレース情報出力部１１９は，例えば，情報格納領域１３０に記憶されているトレース情報１３１の出力を行うか否かについて判定する（Ｓ７７）。そして，トレース情報出力部１１９がトレース情報１３１を行うタイミングであると判定した場合（Ｓ７７のＹＥＳ），エラー出力部１２０は，例えば，運用管理者にエラーを通知する（Ｓ７８）。また，この場合，トレース情報出力部１１９は，例えば，トレース情報１３１の出力を行い（Ｓ７９），トレース情報削除部１１６は，トレース情報１３１の削除を行う（Ｓ８０）。エラー出力部１２０がエラー出力した場合については図８で説明したため，ここでは詳細な説明を省略する。
【００９３】
[識別情報の具体例]
図１６は，識別情報１３４の具体例である。図１６に示す識別情報１３４は，「トレース識別ＩＤ」を項目として有する。なお，図１６に示す識別情報１３４は，最大５つのトレース識別ＩＤを記憶できるものとして説明を行う。
【００９４】
具体的に，図１６に示す識別情報１３４は，項目「トレース識別ＩＤ」として，８，１５，２６，４１，６９である５個の情報を記憶している。すなわち，図１６に示す識別情報１３４は，項目「トレース識別ＩＤ」が８，１５，２６，４１，６９であるトレース情報１３１が記憶されたときに，全ての監視対象プログラム１が共有資源２を解放していたことを示している。また，図１６に示す識別情報１３４は，５つのトレース識別ＩＤを記憶している状態であるため，記憶できる最大数のトレース識別情報ＩＤを含んでいる。そのため，図１６の例において，実行状態判定部１１５が全ての共有資源２が解放されていることを検知した場合，トレース情報記憶部１１２は，項目「トレース識別ＩＤ」である８が示すトレース情報１３１よりも前に記憶されたトレース情報１３１を削除する（Ｓ７４）。そして，トレース情報記憶部１１２は，実行状態判定部１１５が全ての共有資源２が解放されていることを検知した際に記憶したトレース情報１３１を示すトレース識別ＩＤを，識別情報１３４として情報格納領域１３０に記憶する（Ｓ７５，Ｓ７６）。
【００９５】
すなわち，第２の実施形態におけるトレース情報管理処理では，トレース情報記憶部１１２は，全ての共有資源２が解放されていることを検知した場合に，その検知時に記憶されたトレース情報１３１を識別する識別情報１３４を記憶する。そして，トレース情報削除部１１６は，記憶された識別情報１３４の数が最大値である場合に，最初に記憶した識別情報１３４に含まれるトレース識別ＩＤが示すトレース情報１３１よりも前に記憶されたトレース情報１３１を削除する。これにより，トレース情報削除部１１６は，全ての共有資源２が解放されていることを検知した際に，情報格納領域１３０に記憶されたトレース情報１３１のうち，猶予期間が経過した一部のトレース情報１３１のみを削除することができる。そのため，誤ったカウンタ情報１３２に基づいて，トレース情報１３１が削除される可能性を低減させることができる。
【００９６】
［第３の実施の形態］
次に，第３の実施の形態について説明する。図１７は，第３の実施の形態におけるトレース情報管理処理を示すフローチャートである。また，図１８は，第３の実施の形態におけるトレース情報管理処理を説明する図である。図１８を参照しながら，図１７のトレース情報管理処理について説明する。
【００９７】
第３の実施の形態におけるトレース情報管理処理は，第２の実施の形態と同様に，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合において，トレース情報１３１を削除するまでに猶予時間を設ける。具体的に，第３の実施の形態では，第２の実施の形態と異なり，各トレース情報１３１を記憶した際に，そのトレース情報１３１を取得した時間である取得時間情報１３３を記憶する。そして，トレース情報削除部１１６は，取得時間情報１３３を参照してトレース情報１３１の削除を行う。これにより，第２の実施の形態と同様に，誤った資源の解放によってカウンタ情報１３２が更新された場合に，実際の共有資源２を使用している監視対象プログラム１の数（監視対象プログラム１の処理の数）を反映していない情報に基づいて，トレース情報１３１が削除される可能性を低減させることができる。以下，第３の実施の形態におけるトレース情報管理処理について説明する。
【００９８】
[トレース情報削除処理]
初めに，第３の実施の形態におけるトレース情報削除処理について説明する。なお，トレース情報記憶処理は，第１の実施の形態における処理を同じ処理であるため，ここでは説明を省略する。
【００９９】
図１７に示すように，初めに，実行状態判定部１１５は，第１の実施の形態と同様に，例えば，実行状態判定を行うべきタイミングになるまで待機する（Ｓ８１のＮＯ）。そして，実行状態判定を行うべきタイミングになった場合（Ｓ８１のＹＥＳ），全ての監視対象プログラム１による共有資源２の使用が終了しているか否かの検知を行う（Ｓ８２）。その結果，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していないことを検知した場合（Ｓ８２のＹＥＳ），トレース情報削除部１１６は，例えば，情報格納領域１３０に記憶されている取得時間情報１３３を参照する。そして，トレース情報削除部１１６は，例えば，現在時間から所定時間以上前に記憶されたトレース情報１３１のみを削除する（Ｓ８３）。この所定時間は，トレース情報１３１を最低限記憶しておく必要がある時間であり，例えば，５分間等であってよい。現在時間から所定時間以上前に記憶されたトレース情報１３１を検出する場合の具体例については後述する。
【０１００】
また，実行状態判定部１１５が全ての監視対象プログラム１が共有資源２を使用していることを検知した場合（Ｓ８２のＮＯ），トレース情報出力部１１９は，第１の実施形態等と同様に，例えば，トレース情報１３１の出力を行うか否かについて判定する（Ｓ８４）。そして，トレース情報出力部１１９がトレース情報１３１を行うタイミングであると判定した場合（Ｓ８４のＹＥＳ），エラー出力部１２０は，例えば，運用管理者にエラーを通知する（Ｓ８５）。また，この場合，トレース情報出力部１１９は，例えば，トレース情報１３１の出力を行い（Ｓ８６），トレース情報削除部１１６は，トレース情報１３１の削除を行う（Ｓ８７）。エラー出力部１２０がエラー出力した場合については図８で説明したため，ここでは詳細な説明を省略する。
【０１０１】
[取得時間情報の具体例（１）]
図１８及び図１９は，取得時間情報１３３の具体例である。図１８及び図１９に示す取得時間情報１３３は，トレース情報１３１を識別する「トレース識別ＩＤ」と，そのトレース情報１３１を記憶した時間を示す「時刻」とを項目として有している。具体的に，図１８に示す取得時間情報１３３は，例えば，項目「トレース識別ＩＤ」が１であるトレース情報１３１が記憶された時間は，１３時１０分１２秒であることを示している。図１８に示す取得時間情報１３３のその他の情報については説明を省略する。以下，Ｓ８３の所定時間が５分間である場合について説明する。
【０１０２】
図１８の例において，例えば，現在時刻が１３時１８分００秒である場合，図１８に示す取得時間情報１３３のうち，項目「時刻」が現在時刻から５分以上前の時刻を示す情報は，項目「トレース識別ＩＤ」が１から６である情報である。そのため，図１８の例におけるトレース情報削除部１１６は，情報格納領域１３０に記憶されたトレース情報１３１のうち，項目「トレース識別ＩＤ」が１から６であるトレース情報１３１を削除する（Ｓ８３）。
【０１０３】
すなわち，第３の実施の形態によれば，トレース情報記憶部１１２は，情報格納領域１３０にトレース情報１３１を記憶する際に，そのトレース情報１３１が記憶された時間である取得時間情報１３３についても記憶する。これにより，トレース情報削除部１１６は，トレースの削除を行う場合に，取得時間情報１３３を参照して，予め定められた時間を経過したトレース情報１３１のみを削除することが可能になる。
【０１０４】
[取得時間情報の具体例（２）]
次に，取得時間情報１３３の他の具体例について説明を行う。図１９は，取得時間情報１３３の一部のみが情報格納領域１３０に記憶される場合の具体例である。
【０１０５】
取得時間情報記憶部１１７は，例えば，トレース情報１３１を記憶しておく必要がある時間（Ｓ８５の所定時間）が経過したトレース情報１３１のうち，一部（例えば，１つ）のトレース情報１３１に関する取得時間情報１３３を記憶するものであってもよい。例えば，取得時間情報記憶部１１７は，トレース情報１３１を記憶しておく必要がある時間が経過したトレース情報１３１のうち，最も新しいトレース情報１３１を示すトレース識別ＩＤに関する取得時間情報１３３を一定間隔で記憶する。そして，トレース情報削除部１１６は，この取得時間情報１３３を参照して，トレース情報１３１の削除を行う。これにより，トレース情報削除部１１６は，全てのトレース情報１３１に関する取得時間情報を記憶することなく，トレース情報１３１の削除を行うことが可能になる。以下，図１９の例を参照して，具体例についての説明を行う。
【０１０６】
図１９（Ａ）に示す例は，１３時２５分００秒の時点における取得時間情報１３３の例である。そして，図１９（Ａ）に示す取得時間情報１３３は，１３時１９分５３秒に作成されたトレース情報であり，トレース識別ＩＤが１２であるトレース情報１３１に関する情報を含んでいる。すなわち，取得時間情報記憶部１１７は，トレース情報１３１を記憶しておく必要がある時間が経過したトレース情報１３１に関する情報（図１９（Ａ）の例では，１つのトレース情報１３１に関する情報）を，取得時間情報１３３として記憶している。これにより，トレース情報削除部１１６は，図１９（Ａ）における取得時間情報１３３を参照し，取得時間情報１３３に含まれるトレース情報ＩＤが示すトレース情報１３１より前に作成されたトレース情報１３１の削除を行うことが可能になる。なお，取得時間情報記憶部１１７は，例えば，トレース情報１３１を記憶しておく必要がある時間が経過したトレース情報１３１のうち，最も新しいトレース情報１３１に関する情報を，取得時間情報１３３として記憶することが好ましい。
【０１０７】
次に，図１９（Ｂ）に示す例は，１３時２７分００秒の時点における取得時間情報１３３の例である。図１９（Ｂ）に示す取得時間情報１３３は，１３時２１分５９秒に作成されたトレース情報であり，トレース識別ＩＤが２５であるトレース情報１３１に関する情報を含んでいる。図１９（Ｂ）に示す取得時間情報１３３は，図１９（Ａ）に示す取得時間情報１３３が更新されたものである。この取得時間情報１３３の更新は，例えば，取得時間情報記憶部１１７によって，一定時間間隔（２分間隔等）で行われるものであってよい。すなわち，取得時間情報記憶部１１７が情報格納領域１３０に記憶された取得時間情報１３３を更新することにより，削除可能なトレース情報１３１を示す情報である取得時間情報１３３を更新することが可能になる。これにより，トレース情報削除部１１６は，取得時間情報１３３を参照して，削除可能なトレース情報１３１に関する情報を取得することが可能になる。そして，トレース情報削除部１１６は，削除可能なトレース情報１３１に関する情報に基づいて，トレース情報１３１を削除することが可能になる。
【０１０８】
具体的に，例えば，１３時２６分１５秒にプログラムの呼出しが発生した場合，トレース情報削除部１１６は，図１９（Ａ）の状態の取得時間情報１３３を参照し，トレース識別ＩＤが１２であるトレース情報１３１よりも前のトレース情報１３１を削除する。また，例えば，１３時２７分１０秒にジョブが終了した場合，トレース情報削除部１１６は，図１９（Ｂ）の状態の取得時間情報１３３を参照し，トレース識別ＩＤが２５であるトレース情報１３１よりも前のトレース情報１３１を削除する。これにより，トレース情報削除部１１６は，予め定められた数（図１９の例においては１つ）のトレース情報１３１に関する情報のみが記憶された取得時間情報１３３を参照するだけで，削除すべきトレース情報１３１を特定することができる。そのため，トレース情報削除部１１６は，各時間におけるトレース情報１３１の作成頻度のばらつきに左右されることなく，安定した処理時間によって，削除すべきトレース情報１３１を特定することができる。
【０１０９】
なお，図１１に示すように，トレース情報１３１が作成時刻に関する情報を有する場合，トレース情報削除部１１６は，トレース情報１３１を参照して削除すべきトレース情報１３１を特定するものであってもよい。
【０１１０】
[トレース情報管理終了処理]
次に，第１の実施の形態から第３の実施の形態において，運用管理者がトレース情報管理処理を終了する場合の処理（以下，トレース情報管理終了処理とも呼ぶ）を説明する。図２０は，トレース情報管理終了処理を説明するフローチャートである。以下，トレース情報管理終了処理について説明する。
【０１１１】
図２０に示すように，初めに，実行状態判定部１１５は，例えば，運用管理者からトレース情報終了処理を開始する旨の入力があるまで待機する（Ｓ９１のＮＯ）。そして，運用管理者からトレース情報終了処理を開始する旨の入力があった場合（Ｓ９１のＹＥＳ），実行状態判定部１１５は，例えば，全ての監視対象プログラム１による共有資源２の使用が終了しているか否かの検知を行う（Ｓ９２）。その結果，全ての監視対象プログラム１による共有資源２の使用が終了していない場合（Ｓ９２のＮＯ），トレース情報出力部１１９は，例えば，情報格納領域１３０に記憶されているトレース情報１３１の出力を行う（Ｓ９３）。そして，全ての監視対象プログラム１による共有資源２の使用が終了している場合（Ｓ９２のＹＥＳ），または，トレース情報１３１の出力を行った場合（Ｓ９３），トレース情報削除部１１６は，例えば，情報格納領域１３０に記憶されているトレース情報１３１を削除する（Ｓ９４）。
【０１１２】
すなわち，運用管理者によってトレース情報管理処理が終了する場合，例えば，トレース情報管理処理を実行するために確保していたメモリ領域を解放する必要がある。そのため，全ての監視対象プログラム１による共有資源２の使用が終了している場合（Ｓ９２のＹＥＳ），トレース情報削除部１１６は，情報格納領域１３０に記憶されているトレース情報１３１を削除し，トレース情報管理処理のために確保していたメモリ領域を解放する。また，全ての監視対象プログラム１による共有資源２の使用が終了していない場合（Ｓ９２のＮＯ），トレース情報出力部１１９は，情報格納領域１３０に記憶されているトレース情報１３１の出力を行ってから，トレース情報管理処理のために確保していたメモリ領域を解放する。これにより，トレース情報管理終了処理が実行されたときのカウンタ情報１３２の内容に関わらず，トレース情報管理処理のために確保していたメモリ領域を解放することが可能になる。
【０１１３】
[監視対象プログラムが複数の物理マシンに分かれている場合]
次に，監視対象プログラム１が複数の物理マシンに分かれている場合について説明を行う。図２１は，監視対象プログラムが動作する物理マシンが複数に分かれている場合を説明する図である。
【０１１４】
図１に示す複数の監視対象プログラム１は，１台の物理マシンである監視対象装置１０に設けられている。また，図１に示す共有資源２及び監視プログラム３も同様に，監視対象装置１０に設けられている。これに対し，監視対象プログラム１は，複数の監視対象装置１０（物理マシン）において動作するものであってよい。
【０１１５】
具体的に，図２１に示す例において，監視対象プログラム１は，複数の監視対象装置１０において動作する。そして，図２１における共有資源１２，監視装置１３及び記憶媒体１４は，監視対象装置１０の外部に設けられている。そして，図２１に示す各監視対象装置１０内の監視対象プログラム１は，それぞれ共有資源１２を使用する。この監視対象プログラム１は，例えば，他の監視対象装置内の監視対象プログラム１と協働して処理を行うものである。そして，図２１の例における監視装置１３は，例えば，共有資源１２を使用している監視対象プログラム１の数を検出し，共有資源１２を使用している監視対象プログラム１の数が０になったときに，記憶媒体１４に記憶されているトレース情報を削除する。
【０１１６】
すなわち，第１の実施の形態から第３の実施の形態において説明したトレース情報管理処理は，図１に示すように，監視対象プログラム１，共有資源２等が１つの物理マシンに集中して設けられている場合に限らず，図２１に示すように，それぞれ異なる物理マシン内に設けられている場合にも適用可能である。
【０１１７】
以上の実施の形態をまとめると，以下の付記のとおりである。
【０１１８】
（付記１）
監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶する記憶部と，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させ，前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないことを検知した場合に，前記記憶部に記憶したトレース情報を削除する処理部と，を有する，
情報処理装置。
【０１１９】
（付記２）
付記１において，
前記監視対象は，コンピュータ上で動作するプログラムを順次動作させるジョブであり，
前記特定の資源は，コンピュータが有するメモリであり，
前記処理部は，前記プログラムが前記メモリの領域を獲得したときに前記判定値を増加させ，前記プログラムが前記メモリの領域を解放したときに前記判定値を減少させる情報処理装置。
【０１２０】
（付記３）
付記２において、
前記処理部は，前記ジョブが終了した場合または前記プログラムが他のプログラムを呼び出した場合に，前記判定値に基づいて全ての前記プログラムが前記メモリの領域を解放しているか否かの検知を行う情報処理装置。
【０１２１】
（付記４）
付記１において，
前記処理部は，前記判定値が０を下回っているときには，前記トレース情報の削除を行わない情報処理装置。
【０１２２】
（付記５）
付記１において，
前記処理部は，前記特定の資源の使用の開始または終了に基づき前記判定値を増加または減少させた後，次に前記特定の資源の使用の開始または終了に基づき前記判定値を増加または減少させる前に，前記判定値が増加または減少した場合，前記トレース情報の削除を行わない情報処理装置。
【０１２３】
（付記６）
付記１において，
前記記憶部は，前記トレース情報を該トレース情報の取得時間と対応付けて記憶し，
前記処理部は，前記監視対象の実行状態を正常と判定した場合に，前記取得時間に基づき前記判定を行った時間の所定期間前までに記憶された前記トレース情報を削除する情報処理装置。
【０１２４】
（付記７）
付記１において，
前記記憶部は，全ての前記監視対象が前記特定の資源を使用していないときに記憶された前記トレース情報を識別する識別情報を記憶し，
前記処理部は，前記監視対象の実行状態を正常と判断した場合であって，前記記憶された識別情報の数が所定値と同じ場合に，最初に前記記憶された識別情報が識別するトレース情報よりも前に記憶されたトレース情報を削除し，前記記憶された識別情報のうち最初に記憶された識別情報を削除する情報処理装置。
【０１２５】
（付記８）
監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶し，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させ，前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないことを検知した場合に，前記記憶部に記憶したトレース情報を削除する，
情報処理方法。
【０１２６】
（付記９）
監視対象の実行状態に関するトレース情報と，前記監視対象が使用可能な特定の資源を使用している前記監視対象の数である判定値とを記憶し，
前記監視対象が前記特定の資源の使用を開始したときに前記判定値を所定の値だけ増加させ，前記監視対象が前記特定の資源の使用を終了したときに前記判定値を前記所定の値だけ減少させ，前記判定値に基づいて全ての前記監視対象が前記特定の資源の使用をしていないことを検知した場合に，前記記憶部に記憶したトレース情報を削除する，
処理をコンピュータに実行させる情報プログラム。
【符号の説明】
【０１２７】
１：監視対象プログラム      ２：共有資源
３：監視装置                ４：記憶媒体
１０：監視対象装置（情報処理装置）
【図１】
0006428005.tif 000002
【図２】
0006428005.tif 000003
【図３】
0006428005.tif 000004
【図４】
0006428005.tif 000005
【図５】
0006428005.tif 000006
【図６】
0006428005.tif 000007
【図７】
0006428005.tif 000008
【図８】
0006428005.tif 000009
【図９】
0006428005.tif 000010
【図１０】
0006428005.tif 000011
【図１１】
0006428005.tif 000012
【図１２】
0006428005.tif 000013
【図１３】
0006428005.tif 000014
【図１４】
0006428005.tif 000015
【図１５】
0006428005.tif 000016
【図１６】
0006428005.tif 000017
【図１７】
0006428005.tif 000018
【図１８】
0006428005.tif 000019
【図１９】
0006428005.tif 000020
【図２０】
0006428005.tif 000021
【図２１】
0006428005.tif 000022