(57)【要約】【課題】ソフトウェア動作を監視するにあたって、タスクの実行状態を確実に監視すること。異常発生原因を迅速に究明すること。実際の運用時にＭＰＵの性能が低下するのを防ぐこと。【解決手段】ＩＤレジスタ２１は、起動されたタスクに付されている識別情報ＩＤを格納する。ＩＤには、自タスクの前に実行されるタスクを特定する情報が含まれている。制御部２３は、今回起動されたタスクのＩＤとその前に起動された前回タスクのＩＤに基づいて、タスクの起動順序が正常であるか否かをハードウェアで監視する。ログレジスタ群２２は、ＩＤとともにこの監視結果の情報をログ情報として時系列に記憶する。ソフトウェアの実行状態に異常が発生し、タイマ監視部２５がウォッチドッグタイマ２４のタイムアウトを検出すると、ログレジスタ群２２から記録部１２にログ情報が退避される。【選択図】図１
2010009296.tif 000002
【特許請求の範囲】
【請求項１】
自タスクを識別する情報および自タスクの前に実行されるタスクを特定する情報を含む識別情報が付された複数のタスクから構成されるソフトウェアの動作を監視するソフトウェア動作監視装置であって、
今回起動されたタスクに付されている前記識別情報とその前に起動された前回タスクに付されている前記識別情報に基づいて、タスク起動順序を監視する監視手段、
を備えることを特徴とするソフトウェア動作監視装置。
【請求項２】
起動されたタスクの前記識別情報を起動順にログ情報として記憶するログ記憶手段、
をさらに備えることを特徴とする請求項１に記載のソフトウェア動作監視装置。
【請求項３】
前記ログ情報には、前記監視手段によるタスク起動順序の監視結果の情報が前記識別情報に対応付けられて含まれていることを特徴とする請求項２に記載のソフトウェア動作監視装置。
【請求項４】
前記ログ情報を記録する不揮発性の記録手段と、
前記ソフトウェアの実行状態に異常を検出したときに前記監視手段から前記記録手段へ前記ログ情報を転送する手段と、
をさらに備えることを特徴とする請求項２または３に記載のソフトウェア動作監視装置。
【請求項５】
自タスクを識別する情報および自タスクの前に実行されるタスクを特定する情報を含む識別情報が付された複数のタスクから構成されるソフトウェアの実行時に、今回起動されたタスクに付されている前記識別情報とその前に起動された前回タスクに付されている前記識別情報に基づいて、タスク起動順序を監視することを特徴とするソフトウェア動作監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェア動作監視装置およびソフトウェア動作監視方法に関する。
【背景技術】
【０００２】
従来、マルチタスク構成のコンピュータプログラムを実行する場合におけるデバッグ技術に関して、次のような情報処理装置がある。この情報処理装置は、タスクを識別するタスク識別情報と、該タスクが所定状態となった場合に停止させる少なくとも１つの停止対象タスクを識別する停止対象タスク識別情報と、を対応付けて記憶する記憶部と、前記タスクが前記所定状態となったことを検出するタスク状態管理部と、前記所定状態検出手段により前記所定状態となったことが検出された場合に、該所定状態となったタスクと対応付けて記憶される前記停止対象タスクを停止させる停止用タスクと、を含むことを特徴とする（例えば、特許文献１参照。）。
【０００３】
【特許文献１】特開２００６−１２７１６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前記特許文献１に開示された技術では、タスクの実行状態を実行中の別のタスクで監視するため、ソフトウェアの実行が暴走した場合、タスクの監視を正常に行うことができないという問題点がある。タスクの監視を正常に行えないと、停止用タスクを起動してソフトウェア全体の実行を停止させることができないという問題点がある。また、実際の運用時に異常が発生した場合には、タスクの情報など、発生原因を調べるのに必要な情報を取得することができないため、異常発生後、直ちに原因究明作業を開始することができないという問題点がある。また、実際の運用時には、マイクロプロセッサ（ＭＰＵ：Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）でのソフトウェアの実行速度が遅くなり、著しく性能が低下することが考えられる。また、停止用タスクのデバックに多大な工数が発生するという問題点がある。
【０００５】
この発明は、上述した従来技術による問題点を解消するため、タスクの実行状態を確実に監視することができるソフトウェア動作監視装置およびソフトウェア動作監視方法を提供することを目的とする。また、異常発生原因を迅速に究明することができるソフトウェア動作監視装置およびソフトウェア動作監視方法を提供することを目的とする。また、実際の運用時にマイクロプロセッサの性能が低下するのを防ぐことができるソフトウェア動作監視装置およびソフトウェア動作監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、このソフトウェア動作監視装置およびソフトウェア動作監視方法は、ソフトウェアを構成する複数のタスクに、自タスクを識別する情報および自タスクの前に実行されるタスクを特定する情報を含む識別情報を予め付与しておき、ソフトウェアの実行時にタスクが起動されるたびに、そのタスクの識別情報とその前に起動されたタスクの識別情報に基づいて、タスクの起動順序が正常であるか否かを監視することを要件とする。この監視結果を、タスクの識別情報とともにログ情報として記憶するようにしてもよい。また、ソフトウェアの実行状態に異常を検出したときに、不揮発性メモリなどの電源オフ後も情報を保持可能な媒体にログ情報を記録するようにしてもよい。
【０００７】
このソフトウェア動作監視装置およびソフトウェア動作監視方法によれば、ソフトウェアの実行状態をハードウェアで監視するので、ソフトウェアの実行が暴走した場合でも、タスクの動作を監視することができる。また、実際の運用時に異常が発生した場合、ログ情報を取得することによって、直ちに異常発生の原因究明作業を開始することができる。また、実際の運用時に、マイクロプロセッサがタスク動作の監視に関与しないので、マイクロプロセッサの負荷が軽減される。
【発明の効果】
【０００８】
このソフトウェア動作監視装置およびソフトウェア動作監視方法によれば、タスクの実行状態を確実に監視することができるという効果を奏する。また、異常発生原因を迅速に究明することができるという効果を奏する。また、実際の運用時にマイクロプロセッサの性能が低下するのを防ぐことができるという効果を奏する。
【発明を実施するための最良の形態】
【０００９】
以下に添付図面を参照して、このソフトウェア動作監視装置およびソフトウェア動作監視方法の好適な実施の形態を詳細に説明する。
【００１０】
（ソフトウェア動作監視装置の概略の説明）
図１は、実施の形態にかかるソフトウェア動作監視装置の概略を示すブロック図である。図１に示すように、ソフトウェア動作監視装置（以下、監視装置とする）１０は、ＩＤ監視部１１および記録部１２を備えている。ＩＤ監視部１１は、ＩＤレジスタ２１、ログレジスタ群２２、制御部２３、ウォッチドッグタイマ２４およびタイマ監視部２５を備えている。ソフトウェアを構成する複数のタスクには、それぞれ、識別情報（以下、ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）とする）が予め付与されている。このＩＤには、自タスクを識別する情報（以下、自己情報とする）と、自タスクの直前に実行されるタスクを特定する情報（以下、直前情報とする）が含まれている。
【００１１】
ソフトウェアの実行時にタスクが起動されるたびに、そのタスクに付されているＩＤがＩＤレジスタ２１に格納される。制御部２３は、今回起動されたタスクのＩＤとその前に起動された前回タスクのＩＤに基づいて、タスクの起動順序が正常であるか否かを監視する。この監視結果は、ＩＤとともにログ情報としてログレジスタ群２２に時系列に記憶される。ソフトウェアの実行状態に異常が発生し、タイマ監視部２５がウォッチドッグタイマ２４のタイムアウトを検出すると、ログ情報は、ログレジスタ群２２から記録部１２に退避される。
【００１２】
（ソフトウェア動作監視装置の詳細な構成の説明）
図２は、ソフトウェア動作監視装置の構成を示すブロック図である。図２に示すように、ＩＤ監視部１１は、上述した各機能ブロックの他に、アドレスデコード部２６、分周器２７、アンドゲート２８および第３インターフェース部２９を備えている。ＩＤ監視部１１は、特に限定しないが、例えばＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのハードウェアで構成されている。
【００１３】
アドレスデコード部２６は、監視対象であるソフトウェア４２を実行するマイクロプロセッサ（ＭＰＵ）４１から与えられるアドレス信号ａ１をデコードして、マイクロプロセッサ４１のアクセス先を特定するセレクト信号およびアドレス信号を生成する。分周器２７は、外部クロック源４３から送られてくるクロック信号を分周してカウントアップ信号を生成する。ウォッチドッグタイマ２４は、そのカウントアップ信号によりカウントアップされる。アンドゲート２８は、マイクロプロセッサ４１で起動されたタスクのＩＤがＩＤレジスタ２１に書き込まれるときに、クリア信号を生成する。ウォッチドッグタイマ２４は、そのクリア信号により初期値に設定される。タイマ監視部２５は、ウォッチドッグタイマ２４のタイムアウトを検出すると、障害通知信号を出力する。
【００１４】
ＩＤレジスタ２１は、マイクロプロセッサ４１によりタスクが起動されるたびに、マイクロプロセッサ４１から送られてくるＩＤを格納し、制御部２３へ転送する。制御部２３は、前回ＩＤレジスタ３１、最新ＩＤレジスタ３２、判定部３３、第２インターフェース部３４および第１インターフェース部３５を備えている。最新ＩＤレジスタ３２は、ＩＤレジスタ２１から送られてくるＩＤを格納する。前回ＩＤレジスタ３１は、ＩＤレジスタ２１から最新ＩＤレジスタ３２にＩＤが送られてくると、それまで最新ＩＤレジスタ３２に格納されていたＩＤを格納する。
【００１５】
つまり、最新ＩＤレジスタ３２には、直近に起動された最新タスクのＩＤ（以下、最新ＩＤとする）が格納され、前回ＩＤレジスタ３１には、その１回前に起動された前回タスクのＩＤ（以下、前回ＩＤとする）が格納される。ただし、初回に起動されるタスクのＩＤは、前回ＩＤレジスタ３１に格納される。判定部３３は、最新ＩＤの直前情報と前回ＩＤの自己情報を比較し、前回ＩＤの自己情報が最新ＩＤの直前情報に含まれていればタスクの起動順序が正常（ＯＫ）であると判定し、含まれていなければタスクの起動順序が異常（ＮＧ）であると判定する。
【００１６】
第２インターフェース部３４は、監視装置１０から、監視装置１０に接続される検出装置４４へログ情報を転送する際の仲介をする。検出装置４４は、タイマ監視部２５からの障害通知信号を受信して、マイクロプロセッサ４１でのソフトウェアの実行に障害が発生したことを検出する装置である。ユーザは、端末４６を操作することにより、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク４５を介して検出装置４４を遠隔操作し、ログレジスタ群２２または記録部１２からログ情報を取得することができる。
【００１７】
第１インターフェース部３５は、最新ＩＤレジスタ３２に格納されている最新ＩＤと、その最新ＩＤに対する判定部３３の判定結果の情報を、両者を対応付けてログレジスタ群２２へ転送する際の仲介をする。また、第１インターフェース部３５は、第２インターフェース部３４へ、ログレジスタ群２２から読み出されたログ情報または第３インターフェース部２９を介して記録部１２から読み出されたログ情報を転送する際の仲介をする。
【００１８】
ログレジスタ群２２は、第１インターフェース部３５から送られてくる、最新ＩＤおよびそれ対する起動順序の判定結果の情報を時系列に記憶する。図３は、ログレジスタ群の構成の一例を示す説明図である。図３に示すように、ログレジスタ群２２は、複数のレジスタ５１，５２，５３，５４で構成されている。これらのレジスタ５１，５２，５３，５４には、例えばＩＤ５６と、それに対応する起動順序の判定結果を示すフラグ（判定フラグ）５７のデータが、例えばアドレスの若い順から格納される。そして、ログレジスタ群２２の全てのレジスタにデータが格納されると、再び、アドレスが最も若いレジスタ５１からアドレスの若い順にデータが格納される。なお、起動順序の判定結果がＮＧである場合には、ＮＧ判定時の時刻情報（タイムスタンプ）、マイクロプロセッサ４１や周辺デバイスのレジスタ情報などを一緒に格納するようにしてもよい。
【００１９】
第３インターフェース部２９は、ログレジスタ群２２から記録部１２へログ情報を転送する際の仲介をする。また、第３インターフェース部２９は、記録部１２から第１インターフェース部３５へログ情報を転送する際の仲介をする。また、第３インターフェース部２９は、記録部１２からマイクロプロセッサ４１へログ情報を転送する際の仲介をする。つまり、マイクロプロセッサ４１は、第３インターフェース部２９を介して記録部１２からログ情報を読み出すことができる。また、マイクロプロセッサ４１は、ログレジスタ群２２を選択することによって、ログレジスタ群２２からもログ情報を読み出すことができる。
【００２０】
記録部１２は、不揮発性メモリで構成されており、第３インターフェース部２９を介してログレジスタ群２２から送られてくるログ情報を記録する。図４は、記録部に記録される情報の一例を示す説明図である。図４に示すように、記録部１２には、例えば装置種別や装置版数やソフト版数などの装置基本情報６１、ＩＤおよびそれに対応する判定フラグ（ＯＫ）からなるＩＤ判定ＯＫ時の情報６２、並びにＩＤおよびそれに対応する判定フラグ（ＮＧ）からなるＩＤ判定ＮＧ時の情報６３が記録される。図示例のように、ＩＤ判定ＮＧ時の情報６３として、ＮＧ判定時の時刻情報（タイムスタンプ）、マイクロプロセッサ４１や周辺デバイスのレジスタ情報、その他の障害解析に有効な情報などを一緒に記録するようにしてもよい。これらＮＧ判定時の付加情報は、障害要因を分析する際のスピード化に寄与する。
【００２１】
（ＩＤ付与方法の説明）
図５は、タスクの起動順序の一例を示す説明図である。図６は、図５に示すタスクの起動順序に基づいてＩＤを付与した例を示す説明図である。これらの図に示すように、ＩＤにおいて、最上位の値は、自己情報であり、自タスクのタスク番号（図５の各タスクの末尾に付された数字）を示す。タスク番号に続く下位の値は、直前情報であり、自タスクの直前に起動されるべきタスクのタスク番号を示す。例えば、ＩＤが「１０００」である場合、「１」がタスク番号であり、「０００」は直前に起動されるタスクがないことを示す。つまり、タスク番号が１であるタスク１は、先頭のタスクである。また、ＩＤが「２１５９」である場合には、「２」がタスク番号であり、「１５９」が直前に起動されるべきタスクのタスク番号である。従って、タスク２は、タスク１、タスク５またはタスク９からアクセスされるが、それ以外のタスクからはアクセスされないことになる。
【００２２】
（ＩＤ判定方法の説明）
図７は、ＩＤ判定方法を説明するためのログ情報の一例を示す説明図である。図７には、例えば、タスク３、タスク４、タスク５、タスク２、タスク８、タスク５、・・・の順に起動された場合に、ログレジスタ群２２に格納されたログ情報が示されている。この例では、アドレス０x０４のＩＤが「４３００」であるので、このタスク４の直前に起動されるべきタスクは、タスク３のみである。アドレス０x００のＩＤが「３２００」であるので、タスク４の直前に起動されたタスクは、タスク３である。従って、この２つのタスクの間の起動順序は正常であるので、ＩＤ判定ＯＫである。従って、タスク４に対する判定フラグは「００００」である。一方、アドレス０x１４のＩＤは「５４００」であるので、このタスク５の直前に起動されるべきタスクは、タスク４のみである。しかし、アドレス０x１０のＩＤは「８２７０」であるので、タスク５の直前に起動されたタスクは、タスク８である。従って、この２つのタスクの間の起動順序は異常であるので、ＩＤ判定ＮＧとなり、タスク５に対する判定フラグは「８０００」となる。
【００２３】
（正常時の動作の説明）
図８および図９は、それぞれ、実施の形態にかかるソフトウェア動作監視装置の正常時の動作を説明するシーケンス図およびタイミングチャートである。まず、正常動作時に関係のある信号について、図２を参照しながら説明する。図９において、アドレス信号ａ１、データ信号ｄ１および書き込み制御信号ｗ１は、マイクロプロセッサ４１からアドレスデコード部２６に与えられる。セレクト信号ｓ３、データ信号ｄ２および書き込み制御信号ｗ２は、アドレスデコード部２６からＩＤレジスタ２１に与えられる。データ信号ｄ３は、ＩＤレジスタ２１から前回ＩＤレジスタ３１または最新ＩＤレジスタ３２に与えられる。セレクト信号ｓ６、アドレス信号ａ６、データ信号ｄ６および書き込み制御信号ｗ６は、第１インターフェース部３５からログレジスタ群２２に与えられる。
【００２４】
図８および図９に示すように、初回のタスクが起動されると、マイクロプロセッサ４１は、ＩＤレジスタ２１のアドレス（アドレス信号ａ１）と初回のタスクのＩＤ（データ信号ｄ１）をアサートした後、書き込み制御信号ｗ１をアサートする。アドレスデコード部２６は、ＩＤレジスタ２１への書き込みであることを判定し、データを取り込む（ステップＳ１）。そして、アドレスデコード部２６は、ＩＤレジスタ２１に対して、セレクト信号ｓ３、データ信号ｄ２および書き込み制御信号ｗ２をアサートして、ＩＤレジスタ２１に初回のタスクのＩＤを書き込む（ステップＳ２）。
【００２５】
このとき、アンドゲート２８に入力するセレクト信号ｓ３と書き込み制御信号ｗ２がともにアサートされており、アンド条件を満たすので、アンドゲート２８はクリア信号をアサートする。それによって、ウォッチドッグタイマ２４が初期値に戻る（ステップＳ３）。また、ＩＤレジスタ２１は、データ信号ｄ３により初回のタスクのＩＤを制御部２３へ転送する（ステップＳ４）。制御部２３は、最初のＩＤの書き込みであることを判断して、このＩＤを前回ＩＤレジスタ３１に書き込む（ステップＳ５）。
【００２６】
２回目のタスクが起動されると、初回の場合と同様にして、ウォッチドッグタイマ２４が初期値に戻り、マイクロプロセッサ４１から制御部２３へＩＤが転送される（ステップＳ６〜ステップＳ９）。制御部２３は、ＩＤを最新ＩＤレジスタ３２に書き込む（ステップＳ１０）。次いで、判定部３３は、前回ＩＤレジスタ３１および最新ＩＤレジスタ３２からそれぞれ前回ＩＤおよび最新ＩＤを読み出し、上述したＩＤ判定方法によりタスクの起動順序が正常であるか否かを判定する（ステップＳ１１）。そして、制御部２３は、最新ＩＤレジスタ３２に格納されている最新ＩＤと判定部３３による判定結果の情報を対応付け、それをデータ信号ｄ６としてアサートするとともに、セレクト信号ｓ６およびログレジスタ群２２の先頭アドレス（アドレス信号ａ６）をアサートする。さらに、制御部２３は、書き込み制御信号ｗ６をアサートして、ログレジスタ群２２にＩＤとそれに対応する判定結果の情報を書き込む（ステップＳ１２）。
【００２７】
次いで、制御部２３は、最新ＩＤレジスタ３２に格納されている最新ＩＤを前回ＩＤレジスタ３１へ移動させる（ステップＳ１３）。そして、制御部２３は、次回のログレジスタ群２２へのデータの書き込みに備えて、ログレジスタ群２２のアドレスを自動更新する（ステップＳ１４）。３回目以降のタスクの起動については、２回目の場合と同様である。
【００２８】
（障害発生時の動作の説明）
図１０および図１１は、それぞれ、実施の形態にかかるソフトウェア動作監視装置の障害発生時の動作を説明するシーケンス図およびタイミングチャートである。まず、障害発生時に関係のある信号について、図２を参照しながら説明する。図１１において、ログレジスタ群２２からログ情報を読み出す際には、セレクト信号ｓ６、アドレス信号ａ６および読み出し制御信号ｒ６は、第１インターフェース部３５からログレジスタ群２２に与えられる。また、読み出したログ情報を記録部１２へ転送する際には、セレクト信号ｓ７、アドレス信号ａ６および書き込み制御信号ｗ６は、第１インターフェース部３５から第３インターフェース部２９に与えられる。そのどちらのタイミングにおいても、データ信号ｄ６は、ログレジスタ群２２から第３インターフェース部２９に与えられる。セレクト信号ｓ８、アドレス信号ａ８、データ信号ｄ８および書き込み制御信号ｗ８は、第３インターフェース部２９から記録部１２に与えられる。
【００２９】
図１０および図１１に示すように、ｎ回目のタスクが起動された後に、ソフトウェアの実行状態に異常が発生したとする。この異常発生によって、ウォッチドッグタイマ２４が初期値に戻らない場合、タイマ監視部２５は、カウンタオーバーフロー（ＯＶＦ）を検出し、制御部２３に対して障害通知信号をアサートする（ステップＳ２１）。制御部２３は、ログレジスタ群２２の先頭アドレス（アドレス信号ａ６）、セレクト信号ｓ６および読み出し制御信号ｒ６をアサートして、ログレジスタ群２２からログ情報（データ信号ｄ６）を読み出す（ステップＳ２２）。
【００３０】
続いて、制御部２３は、セレクト信号ｓ６および読み出し制御信号ｒ６をネゲートした後、セレクト信号ｓ７および書き込み制御信号ｗ６をアサートして、ログ情報を第３インターフェース部２９へ転送する（ステップＳ２３）。第３インターフェース部２９は、記録部１２の先頭アドレス（アドレス信号ａ８）、ログ情報（データ信号ｄ８）およびセレクト信号ｓ８をアサート後、書き込み制御信号ｗ８をアサートして、記録部１２にログ情報を書き込む（ステップＳ２４）。以後、ログレジスタ群２２および記録部１２のアドレスを自動更新しながら、ステップＳ２２〜ステップＳ２４を繰り返して全てのログ情報をログレジスタ群２２から記録部１２へ転送し、記録する。なお、障害通知信号のアサートをトリガとする以外にも、ユーザが端末４６を操作することにより、あるいはマイクロプロセッサ４１からの指示により、ログレジスタ群２２から記録部１２へログ情報を退避させることができる。
【００３１】
（ログ情報の遠隔読み出し動作の説明）
図１２および図１３は、それぞれ、実施の形態にかかるソフトウェア動作監視装置からログ情報を読み出す動作を説明するシーケンス図およびタイミングチャートである。まず、記録部１２からのログ情報の遠隔読み出し時に関係のある信号について、図２を参照しながら説明する。図１３において、アドレス信号ａ９および読み出し制御信号ｒ９は、検出装置４４から第２インターフェース部３４に与えられる。データ信号ｄ９は、第２インターフェース部３４から検出装置４４に与えられる。アドレス信号ａ１０および読み出し制御信号ｒ１０は、第２インターフェース部３４から第１インターフェース部３５に与えられる。データ信号ｄ１０は、第１インターフェース部３５から第２インターフェース部３４に与えられる。セレクト信号ｓ７、アドレス信号ａ６および読み出し制御信号ｒ６は、第１インターフェース部３５から第３インターフェース部２９に与えられる。データ信号ｄ６は、第３インターフェース部２９から第１インターフェース部３５に与えられる。セレクト信号ｓ８、アドレス信号ａ８および読み出し制御信号ｒ８は、第３インターフェース部２９から記録部１２に与えられる。データ信号ｄ８は、記録部１２から第３インターフェース部２９に与えられる。
【００３２】
図１２および図１３に示すように、ユーザが端末４６を操作して、記録部１２からログ情報を読み出そうとすると、検出装置４４は、端末４６からの読み取り指示を認識する（ステップＳ３１）。そして、検出装置４４は、記録部１２の先頭アドレス（アドレス信号ａ９）をアサートした後、読み出し制御信号ｒ９をアサートして、第２インターフェース部３４へログ情報の読み取りを要求する（ステップＳ３２）。第２インターフェース部３４は、アドレス信号ａ１０および読み出し制御信号ｒ１０をアサートして、第１インターフェース部３５へログ情報の読み取りを要求する（ステップＳ３３）。第１インターフェース部３５は、アドレス信号ａ６、セレクト信号ｓ７および読み出し制御信号ｒ６をアサートして、第３インターフェース部２９へログ情報の読み取りを要求する（ステップＳ３４）。第３インターフェース部２９は、アドレス信号ａ８、セレクト信号ｓ８および読み出し制御信号ｒ８をアサートして、記録部１２へログ情報の読み取りを要求する（ステップＳ３５）。
【００３３】
そして、第３インターフェース部２９は、記録部１２からログ情報（データ信号ｄ８）を読み出す（ステップＳ３６）。記録部１２からのログ情報（データ信号ｄ８）の出力確定後に、第３インターフェース部２９は、読み出し制御信号ｒ８をネゲートし、第１インターフェース部３５へログ情報（データ信号ｄ６）を出力する（ステップＳ３７）。第１インターフェース部３５は、ログ情報（データ信号ｄ６）の出力確定後に、読み出し制御信号ｒ６をネゲートし、第２インターフェース部３４へログ情報（データ信号ｄ１０）を出力する（ステップＳ３８）。第２インターフェース部３４は、ログ情報（データ信号ｄ１０）の出力確定後に、読み出し制御信号ｒ１０をネゲートし、検出装置４４へログ情報（データ信号ｄ９）を出力する（ステップＳ３９）。検出装置４４は、ログ情報（データ信号ｄ９）の出力確定後に、読み出し制御信号ｒ９をネゲートし、ログ情報を一時蓄積する。以後、検出装置４４は、記録部１２からログ情報を読み出すためのアドレスを自動更新しながら、ステップＳ３２〜ステップＳ３９を繰り返して全てのログ情報を記録部１２から読み出し、読み出したログ情報を一括した結果報告を端末４６へ転送する（ステップＳ４０）。
【００３４】
なお、ステップＳ３４で、第１インターフェース部３５がセレクト信号ｓ７の代わりにセレクト信号ｓ６をアサートしてログレジスタ群２２を選択すれば、記録部１２からではなく、ログレジスタ群２２からログ情報を読み出すことができる。また、マイクロプロセッサ４１は、アドレスデコード部２６を介してセレクト信号ｓ４によりログレジスタ群２２を選択し、アドレス信号ａ４によりログレジスタ群２２の先頭アドレスを指定することによって、ログレジスタ群２２からログ情報を読み出すことができる。さらに、マイクロプロセッサ４１は、アドレスデコード部２６を介してセレクト信号ｓ５により第３インターフェース部２９を選択し、アドレス信号ａ４により記録部１２の先頭アドレスを指定することによって、記録部１２からログ情報を読み出すことができる。
【００３５】
以上の構成において、ＩＤ監視部１１は監視手段としての機能を有する。また、記録部１２は記録手段としての機能を有する。また、ログレジスタ群２２はログ記憶手段としての機能を有する。第３インターフェース部２９は、監視手段から記録手段へのログ転送手段としての機能を有する。
【００３６】
以上説明したように、本実施の形態によれば、ＩＤ監視部１１がハードウェアで構成されているので、ソフトウェアの実行状態をハードウェアで監視することができる。従って、ソフトウェアの実行が暴走した場合でも、タスクの動作を監視することができる。従って、タスクの実行状態を確実に監視することができる。また、実際の運用時に異常が発生した場合、例えばユーザが端末４６を操作してログ情報を取得することによって、直ちに異常発生の原因究明作業を開始することができる。従って、異常発生原因を迅速に究明することができる。また、実際の運用時に、マイクロプロセッサ４１がタスク動作の監視に関与しないので、マイクロプロセッサ４１の負荷が軽減される。従って、実際の運用時にマイクロプロセッサ４１の性能が低下するのを防ぐことができる。また、記録部１２にログ情報を退避することによって、電源断やリセット時にログ情報が消滅するのを回避することができる。また、ログ情報を記録しておくことによって、ソフトウェアの実行状態に異常が発生してウォッチドッグタイマ２４がタイムアウトした場合や、その他の原因による障害が発生した場合に、その原因となるタスクを容易に特定することができる。これらの効果は、実際の運用時に限らず、ソフトウェアのデバッグ時にも、有効である。また、実際の運用中でも、ユーザが端末４６を操作してログ情報を取得することによって、障害に至らぬ程度の軽微な不具合を認識して対処することが可能となるので、監視対象装置の信頼性の向上に寄与する。
【００３７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００３８】
（付記１）自タスクを識別する情報および自タスクの前に実行されるタスクを特定する情報を含む識別情報が付された複数のタスクから構成されるソフトウェアの動作を監視するソフトウェア動作監視装置であって、
今回起動されたタスクに付されている前記識別情報とその前に起動された前回タスクに付されている前記識別情報に基づいて、タスク起動順序を監視する監視手段、を備えることを特徴とするソフトウェア動作監視装置。
【００３９】
（付記２）起動されたタスクの前記識別情報を起動順にログ情報として記憶するログ記憶手段、をさらに備えることを特徴とする付記１に記載のソフトウェア動作監視装置。
【００４０】
（付記３）前記ログ情報には、前記監視手段によるタスク起動順序の監視結果の情報が前記識別情報に対応付けられて含まれていることを特徴とする付記２に記載のソフトウェア動作監視装置。
【００４１】
（付記４）前記ログ情報を記録する不揮発性の記録手段と、前記ソフトウェアの実行状態に異常を検出したときに前記監視手段から前記記録手段へ前記ログ情報を転送する手段と、をさらに備えることを特徴とする付記２または３に記載のソフトウェア動作監視装置。
【００４２】
（付記５）ネットワークに接続された他装置と前記監視手段の間で、前記監視手段から前記他装置へ前記ログ情報を転送する際の仲介をするインターフェース、をさらに備えることを特徴とする付記２〜４のいずれか一つに記載のソフトウェア動作監視装置。
【００４３】
（付記６）前記監視手段は、前記ソフトウェアを実行している処理装置へ前記ログ情報を転送する手段、をさらに備えることを特徴とする付記２〜５のいずれか一つに記載のソフトウェア動作監視装置。
【００４４】
（付記７）自タスクを識別する情報および自タスクの前に実行されるタスクを特定する情報を含む識別情報が付された複数のタスクから構成されるソフトウェアの実行時に、今回起動されたタスクに付されている前記識別情報とその前に起動された前回タスクに付されている前記識別情報に基づいて、タスク起動順序を監視することを特徴とするソフトウェア動作監視方法。
【図面の簡単な説明】
【００４５】
【図１】実施の形態にかかるソフトウェア動作監視装置の概略を示すブロック図である。
【図２】実施の形態にかかるソフトウェア動作監視装置の構成を示すブロック図である。
【図３】ログレジスタ群の構成の一例を示す説明図である。
【図４】記録部に記録される情報の一例を示す説明図である。
【図５】タスクの起動順序の一例を示す説明図である。
【図６】ＩＤの付与例を示す説明図である。
【図７】ＩＤ判定方法を説明するためのログ情報の一例を示す説明図である。
【図８】実施の形態にかかるソフトウェア動作監視装置の正常時の動作を説明するシーケンス図である。
【図９】実施の形態にかかるソフトウェア動作監視装置の正常時の動作を説明するタイミングチャートである。
【図１０】実施の形態にかかるソフトウェア動作監視装置の障害発生時の動作を説明するシーケンス図である。
【図１１】実施の形態にかかるソフトウェア動作監視装置の障害発生時の動作を説明するタイミングチャートである。
【図１２】実施の形態にかかるソフトウェア動作監視装置からログ情報を読み出す動作を説明するシーケンス図である。
【図１３】実施の形態にかかるソフトウェア動作監視装置からログ情報を読み出す動作を説明するタイミングチャートである。
【符号の説明】
【００４６】
１０  ソフトウェア動作監視装置
１１  監視手段
１２  記録手段
２２  ログ記憶手段
２９  監視手段から記録手段へのログ転送手段
【図１】
2010009296.tif 000003
【図２】
2010009296.tif 000004
【図３】
2010009296.tif 000005
【図４】
2010009296.tif 000006
【図５】
2010009296.tif 000007
【図６】
2010009296.tif 000008
【図７】
2010009296.tif 000009
【図８】
2010009296.tif 000010
【図９】
2010009296.tif 000011
【図１０】
2010009296.tif 000012
【図１１】
2010009296.tif 000013
【図１２】
2010009296.tif 000014
【図１３】
2010009296.tif 000015