(57)【要約】  【課題】  ハードディスク等を持たないコンピュータでも異常原因解析に有用な異常事象の情報を好適に格納できる異常情報格納装置を提供する。  【解決手段】  コンピュータ１は、不揮発性メモリであるＦＲＯＭに格納されたプログラムをＣＰＵで実行する。例外フック処理部２９は、例外発生を検出して例外信号を生成する。例外情報保存部３１は、ＦＲＯＭの一部領域で構成されている。例外処理部４１は、例外フック処理部２９から例外信号を受け取ったときのＣＰＵレジスタ情報とＣＰＵ時刻情報から得られる例外発生アドレス情報と例外発生時刻情報を例外情報として例外情報保存部３１に格納する。例外処理部４１は、さらに、システムリセット処理を行ってから、例外情報保存部３１の例外情報を読み出して、ＦＲＯＭの一部である履歴情報格納部に履歴情報を格納する。【選択図】  図１
2006338445.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに格納されたプログラムをＣＰＵで実行するコンピュータに備えられた異常情報格納装置であって、
前記コンピュータでの例外発生を検出して例外信号を生成する例外検出部と、
前記不揮発性メモリの一部領域で構成された例外情報保存部と、
前記例外検出部から前記例外信号を受け取って、前記例外信号を受け取ったときのＣＰＵレジスタ情報とＣＰＵ時刻情報を取得し、前記ＣＰＵレジスタ情報と前記ＣＰＵ時刻情報から得られる例外発生アドレス情報と例外発生時刻情報を例外情報として前記例外情報保存部に格納する例外処理部と、
を備えたことを特徴とする異常情報格納装置。
【請求項２】
前記不揮発性メモリの一部領域で構成された履歴情報格納部を備え、
前記例外処理部は、前記例外情報保存部に前記例外情報を格納してからシステムリセット処理を行い、システムリセット後に前記例外情報保存部の前記例外情報を読み出して、前記例外情報に対応する履歴情報を前記履歴情報格納部に格納することを特徴とする請求項１に記載の異常情報格納装置。
【請求項３】
前記コンピュータで実行されるスレッドおよび該スレッド内の関数が展開されたアドレスのマップであるスレッド関数マップを生成するマップ生成部と、
前記不揮発性メモリの一部領域で構成され前記スレッド関数マップを記憶するマップ記憶部と、
を備えたことを特徴とする請求項１または２に記載の異常情報格納装置。
【請求項４】
前記例外検出部は、ウォッチドッグタイマーと、前記ウォッチドッグタイマーの動作に応じてＮＭＩ信号を前記例外信号として生成するＮＭＩ発生器とを備えることを特徴とする請求項１ないし３のいずれかに記載の異常情報格納装置。
【請求項５】
前記コンピュータにて発生した電源断を検出する電源断検出部を備え、
前記例外処理部は、前記電源断検出部により電源断が検出されたときに前記例外情報を前記例外情報保存部に格納することを特徴とする請求項１ないし４のいずれかに記載の異常情報格納装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ内で発生した異常の情報を格納する異常情報格納装置に関する。
【背景技術】
【０００２】
従来、各種のコンピュータの中には、ハードディスク、メモリカード、バックアップＳＲＡＭなどを実装しないコンピュータがある。このようなコンピュータとしては、組込系システムのコンピュータが挙げられる。組込系システムでは、ラックの複数のスロットの各々に基板が装着されており、各々の基板が１つのコンピュータを構成しており、ＣＰＵ等のコンピュータの基本構成を備えている。こうしたシステムは例えば交通信号制御機に見られる。
【０００３】
ところで、コンピュータでは暴走や電源断等により異常が発生する可能性があり、このような異常に適切に対処することが求められ、そのためには異常事象の情報を原因解析のために記録することが有効である。また、異常対策に関する従来技術としては、特許文献１のプログラムアボート自動対処方式および特許文献２のプログラミング装置もある。
【特許文献１】特開平４−１７８８４３号公報（第１−３ページ、図１）
【特許文献２】特開平６−１８０６６４号公報（第３−４ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の異常対策の技術は、ファイルシステムを必要としており、リセットがかかったような状況での異常の要因を特定できず、電源断時に異常情報を保存できない。また、ハード異常などのエラー種別が特定できない場合にシステムが停止してしまう。さらに、外部記憶装置がないと異常の情報を保存できない。したがって、組込系システムの基板型コンピュータのようにハードディスク等を持たないコンピュータには、従来の異常対処技術は上手く適用できない。そのため、従来は、異常原因を解析しようとすると、コンピュータのログ情報を予め通信で吸い上げておき、そして、異常現象に至るまでの動作再現手順と通信ログからシステムの動作遷移を構築し、再現環境を構築する必要がある。しかし、このような解析には時間がかかり、継続的なログ抽出のための通信費用が嵩み、しかも原因を特定できない場合も多いという問題があった。
【０００５】
本発明は、従来の問題を解決するためになされたもので、その目的は、障害解析時間を短縮可能なように異常原因解析用の情報を好適に格納できる異常情報格納装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の異常情報格納装置は、不揮発性メモリに格納されたプログラムをＣＰＵで実行するコンピュータに備えられた装置であって、前記コンピュータでの例外発生を検出して例外信号を生成する例外検出部と、前記不揮発性メモリの一部領域で構成された例外情報保存部と、前記例外検出部から前記例外信号を受け取って、前記例外信号を受け取ったときのＣＰＵレジスタ情報とＣＰＵ時刻情報を取得し、前記ＣＰＵレジスタ情報と前記ＣＰＵ時刻情報から得られる例外発生アドレス情報と例外発生時刻情報を例外情報として前記例外情報保存部に格納する例外処理部とを備えている。
【０００７】
この構成により、不揮発性メモリの一部領域で構成された例外情報保存部に例外発生アドレスと例外発生時刻情報といった例外情報を保存するので、異常原因解析に有用な異常事象の情報を好適に記録できる。不揮発性メモリは例えばＦＲＯＭであり、ＣＰＵで実行されるべきプログラムを格納する。本発明は、このような不揮発性メモリの存在に着目し、不揮発性メモリの一部領域を例外情報の格納に利用しており、これにより、ハードディスク等を持たないコンピュータでも異常原因解析用の情報の格納を可能にしている。
【０００８】
また、本発明の異常情報格納装置は、前記不揮発性メモリの一部領域で構成された履歴情報格納部を備え、前記例外処理部は、前記例外情報保存部に前記例外情報を格納してからシステムリセット処理を行い、システムリセット後に前記例外情報保存部の前記例外情報を読み出して、前記例外情報に対応する履歴情報を前記履歴情報格納部に格納するように構成されている。
【０００９】
この構成により、例外情報を保存した時点でシステムをリセットし、リセット後に例外情報に対応する履歴情報を履歴情報格納部に格納するので、履歴情報を残すことができる。履歴情報は、例外情報中の例外発生アドレスと例外発生時刻情報を含み、この点で例外情報と同様の情報である。履歴情報は、外部記録装置を使って出力され、また、ＬＡＮ等に出力され、そして異常解析に好適に利用される。ここでも、プログラム関連の不揮発性メモリの存在に着目し、不揮発性メモリの一部領域を履歴情報格納部として利用しており、これにより、ハードディスク等を持たないコンピュータでも異常原因解析用の情報の格納を可能にしている。
【００１０】
また、本発明の異常情報格納装置は、前記コンピュータで実行されるスレッドおよび該スレッド内の関数が展開されたアドレスのマップであるスレッド関数マップを生成するマップ生成部と、前記不揮発性メモリの一部領域で構成され前記スレッド関数マップを記憶するマップ記憶部とを備えている。
【００１１】
この構成により、スレッド関数マップを格納することで、保存された例外発生アドレスに対応するスレッドおよびその関数を正確にトレースでき、したがって異常原因解析に有効な情報が得られる。ここでも、プログラム関連の不揮発性メモリの存在に着目し、不揮発性メモリの一部領域をマップ記憶部として利用しており、これにより、ハードディスク等を持たないコンピュータでも異常原因解析用の情報の格納を可能にしている。
【００１２】
また、本発明の異常情報格納装置において、前記例外検出部は、ウォッチドッグタイマーと、前記ウォッチドッグタイマーの動作に応じてＮＭＩ信号を前記例外信号として生成するＮＭＩ発生器とを備えている。この構成により、プログラムの暴走のような異常が発生したときに例外情報を好適に格納できる。
【００１３】
また、本発明の異常情報格納装置は、前記コンピュータにて発生した電源断を検出する電源断検出部を備え、前記例外処理部は、前記電源断検出部により電源断が検出されたときに前記例外情報を前記例外情報保存部に格納する。この構成により、電源断が発生したときにも異常解析用の情報を好適に格納することができる。
【発明の効果】
【００１４】
本発明は、プログラムを格納する不揮発性メモリの存在に着目し、不揮発性メモリの一部領域で例外情報保存部を構成して、例外発生アドレスと例外発生時刻情報といった例外情報を保存することにより、異常原因解析に有用な異常事象の情報を好適に格納できるという効果を有する異常情報格納装置を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態の異常情報格納装置について、図面を用いて説明する。本実施の形態の異常情報格納装置は、ハードディスク、メモリカードといった外部記憶装置が実装されないコンピュータに備えられている。こうしたコンピュータは典型的には、組込系システムにてラックのスロットに挿入される基板型コンピュータであり、例えば、交通信号制御機のコンピュータである。
【００１６】
本発明の実施の形態に係る異常情報格納装置を内蔵したコンピュータを図１および図２に示す。図１はソフトウエア的な構成を示しており、図２はハードウエア的な構成を示している。まず、図２において、コンピュータ１は、ＣＰＵ３と、ＦＲＯＭ５と、ＲＡＭ７と、ＷＤＴ９と、ＮＭＩ発生器１１と、外部記憶装置装着部１３とを備えている。各構成は実際にはバス等でつながっていてよい。ＦＲＯＭ（Flush ROM）５にはプログラムが格納されており、このプログラム３がＲＡＭ７に展開されて、ＣＰＵ３により実行される。本実施の形態では、ＦＲＯＭ５が、通常のプログラムを格納する目的の他に、異常解析用の情報を格納する構成としても利用される。
【００１７】
ＷＤＴ（Watch Dog Timer）９は、定期監視機能を持ったチップであり、プログラム暴走等の例外事象が発生して定期クリアがなされなかったときにシステムリセットのためのＷＤＴ信号を発する。ＮＭＩ（Non Maskarable Interupt）発生器１１は、ＷＤＴ９からＷＤＴ信号を受け取るように構成され、ＷＤＴ９からの信号に応答してＮＭＩ信号を発生し、ＮＭＩ信号をＣＰＵ３に送る。外部記憶装置装着部１３は、外部記憶装置を装着するための構成である。通常は外部記憶装置は装着されていないが、異常解析データを吸い上げる必要が生じたときに外部記憶装置が装着される。
【００１８】
次に、図１を参照すると、コンピュータ１は、初期処理部２１、アプリケーション処理部２３、複数のスレッド２５、カーネル処理部２７、例外フック処理部２９、例外情報保存部３１およびメモリ部３３で構成されている。
【００１９】
図１において、初期処理部２１はシステム初期化の処理を行う。電源投入後、ＦＲＯＭ５からＲＡＭ７に実行プログラムが展開され実行される。アプリケーション処理部２３は、スレッド２５を起動する処理を行う。複数のスレッド２５が図２のＲＡＭ７に記憶されており、ＣＰＵ３により読み出されて実行される。各スレッド２５はアプリケーションプログラムに相当する。各スレッド２５は１または複数の関数を有している。また、カーネル処理部２７は、オペレーションシステムの機能を持っている。カーネル処理部２７には、通常の機能に加えて、本実施の形態の異常情報格納に関連して例外処理部４１とログ出力解析部４３が設けられている。
【００２０】
例外フック処理部２９は、図２のＷＤＴ９およびＮＭＩ発生器１１で構成されている。あるスレッド２５にて暴走等の例外事象が発生すると、ＷＤＴ９が機能してＷＤＴ信号をＮＭＩ発生器１１に供給する。ＮＭＩ発生器１１は、ＷＤＴ９からの信号に応答して、ＮＭＩ信号を生成し、カーネル処理部２７の例外処理部４１に供給する。ＮＭＩ信号は、例外発生検出の信号であり、本発明の例外信号に相当する。
【００２１】
例外処理部４１は、例外フック処理部２９からＮＭＩ信号を受け取ると、例外情報を生成して例外情報保存部３１に保存する処理を行う。例外情報は、例外発生アドレス情報と例外発生時刻情報を含んでいる。例外処理部４１は、ＣＰＵレジスタ情報とＣＰＵ時刻情報を取得し、ＣＰＵレジスタ情報とＣＰＵ時刻情報から例外情報を生成する。ＣＰＵレジスタ情報は、メモリ（ＲＡＭ７）のどのアドレスを処理中かを示している。したがって、ＮＭＩ信号を受け取ったときのＣＰＵレジスタ情報が示すアドレスが、例外発生アドレス（例外が発生したアドレス）である。また、ＮＭＩ信号を受け取ったときのＣＰＵ時刻情報が、例外発生時刻情報とされる。こうしてＮＭＩ信号発生時に例外情報が生成されて例外情報保存部３１に格納される。この例外情報保存部３１は、ＦＲＯＭ５の一部の領域によって構成されている。
【００２２】
例外処理部４１は、例外情報保存部３１に例外情報を格納してからシステムリセット処理を行う。ＮＭＩ信号に応答して例外処理部４１がシステムリセット処理を行うので、ＮＭＩ信号はリセット信号ともいえる。そして、例外処理部４１は、システムリセット後に、例外情報保存部３１から例外情報を読み出して、例外情報から履歴情報を生成して、履歴情報をメモリ部３３のログ解析出力保存部４５に格納する処理を行う。履歴情報も例外発生アドレスと例外発生時刻情報を含んだデータである。
【００２３】
メモリ部３３は、例外情報保存部３１と同じく、ＦＲＯＭ５で構成されている。メモリ部３３のログ解析出力保存部４５は、ログ解析のために出力されるべき情報を保存する構成であり、ＦＲＯＭ５の一部領域である。ログ解析出力保存部４５には複数の履歴情報が格納される。本実施の形態では、最大８個の履歴が格納されるが、格納可能な履歴の数は変更されてよい。ログ解析出力保存部４５の履歴情報は、カーネル処理部２７のログ出力解析部４３によって、外部記憶装置装着部１３に接続された外部記憶装置へと出力される。ログ出力解析部４３は、ＬＡＮ等の通信で履歴情報を出力してもよい。
【００２４】
また、メモリ部３３にはスレッド関数マップ記憶部４７も設けられており、スレッド関数マップ記憶部４７もＦＲＯＭ５の一部領域である。スレッド関数マップは、アプリケーション処理部２３によって、スレッド２５を起動するときに生成され、スレッド関数マップ記憶部４７に格納される。スレッド関数マップは、ＲＡＭ７上での各スレッドのアドレスおよび各関数のアドレスのテーブルである。一つのスレッドがＲＡＭ７に展開されると、スレッドと関数のアドレスがスレッド関数マップ記憶部４７に記録される。スレッド起動のたびにアドレスが記録され、これによりスレッド関数マップが得られる。
【００２５】
また、図２、図１のコンピュータ１において、電源断が発生すると、電源信号のＨからＬへの変化をコンピュータ１のハードウエアが認識してカーネル処理部２７のＯＳに割り込みをあげる。この割り込みにも例外情報保存部３１が応答し、瞬時に例外情報を生成して、例外情報保存部３１に格納する。そして、コンピュータ１の電源供給が停止することになる。
【００２６】
図３、図４を参照し、上記構成のコンピュータ１の動作を説明する。まず、初期処理部２１によりシステム初期化が行われ（Ｓ１）、アプリケーション処理部２３によって親タスクが起動され（Ｓ３）、スレッド２５が起動して子タスクが起動し（Ｓ５）、ＯＳ（カーネル処理部２７）が起動する（Ｓ７）。
【００２７】
続いて、スレッド２５の一つが起動してログ出力解析部４３によりログ出力処理が行われる。この処理は、スレッド関数マップ記憶部４７に格納されている異常履歴の情報を出力する処理であり、ＯＳ起動後に前回までに発生していた異常履歴を指定デバイス装置等に格納する処理である。ここでは、ＯＳ機能としてログ出力が指定されていれば、ログ出力機能が有り（Ｓ９、ＹＥＳ）、ログ解析出力保存部４５のデータが各種デバイスに出力されて（Ｓ１１）、出力保存処理が行われる（Ｓ１３）。典型的には、図２の外部記憶装置装着部１３に接続された外部記憶装置にデータが出力される。また、データは通信で出力されてよい。シリアル、ＬＡＮ、デバイス、ＳＤＲＡＭ、ＦＲＯＭ等がデータ出力に使われてよい。また、このとき、スレッド関数マップ記憶部４７のスレッド関数マップもログ解析のために出力される。
【００２８】
次に、例外が発生していなければ（Ｓ１５、ＮＯ）、通常処理が行われる（Ｓ１７）。通常処理では、複数のスレッド２５が機能してコンピュータ１が各種の動作を行う。
【００２９】
運用時に例外（アプリケーション異常およびハード異常を含む）が発生すると、ＷＤＴ９が機能し、例外フック処理部２９がＮＭＩ信号（例外信号）をカーネル処理部２７に送り、ステップＳ１５がＹＥＳになり、ステップ１９以降の処理が行われる。ここでは、ＷＤＴ９によるシステムのリセット信号が横取りされて、ＮＭＩの割り込み処理が発生し、そして、ＮＭＩハンドラ処理内で例外発生時刻情報等が取得される。すなわち、例外処理部４１がＮＭＩ信号を受け取ったときのＣＰＵ時刻情報を例外発生時刻情報として取得し（Ｓ１９）、さらに、例外処理部４１が、ＮＭＩ信号を受け取ったときのＣＰＵレジスタ情報に示されるアドレス情報を例外発生アドレスとして取得し（Ｓ２１）、そして、例外処理部４１は、例外発生アドレスと例外発生時刻情報とをもった例外情報を、ＦＲＯＭ５で構成された例外情報保存部３１へと保存する（Ｓ２３）。このとき、例外処理部４１は、例外情報保存部３１における例外発生フラグをオンにする処理を行い（Ｓ２５）。そして、例外処理部４１は、システムリセット処理を行う（Ｓ２７）。
【００３０】
図４は、図３のステップＳ２７でリセットがかかった後の処理を示している。再起動処理が行われて（Ｓ３１）、異常リセット判定処理が行われ、例外発生フラッグが立っているかが判定される（Ｓ３３）。ここでは、例外発生フラグが立っており、異常リセットが発生している。そして、メモリ初期化等のイニシャル処理が行われる（Ｓ３５）。
【００３１】
次に、例外処理部４１が、ＦＲＯＭ５で構成されるメモリ部３３のログ解析出力保存部４５に異常履歴を格納する（Ｓ３７）。ここでは、例外情報保存部３１の例外情報が読み出されて、履歴情報が例外情報から作られ、そして、例外情報がログ解析出力保存部４５に格納される。履歴情報は、上述の例外発生アドレスおよび例外発生時刻情報と共に例外発生フラグも含んでいる。
【００３２】
次に、ログ出力機能が有れば（Ｓ３９、ＹＥＳ）、ログ解析出力保存部４５のデータが各種デバイスに出力されて、データの出力保存処理が行われる（Ｓ４１、Ｓ４３）。スレッド関数マップ記憶部４７のスレッド関数マップも出力される。ステップＳ３９〜Ｓ４３の処理は、図３のステップＳ９〜Ｓ１３と同様である。そして、例外処理部４１が、例外情報保存部３１の例外発生フラグをクリアし（Ｓ４５）、起動処理が行われる（Ｓ４７）。起動処理では、図３のステップＳ１以降の処理が行われる。ただし、ログ出力は終わっているので、図３のステップＳ９はＮＯになる。
【００３３】
図５は、異常履歴情報の構造体を示している。図５において、符号５０は、例外情報保存部３１の構成であり、例外情報の格納領域を表している。そして、符号７０ａ〜７０ｈは、ログ解析出力保存部４５の構成であり、履歴情報の格納領域を表している。図示のように、本実施の形態では、最大で８個の履歴情報が格納される。ただし、この格納可能な数は変更されてよい。また、上記において、領域７０ａ〜７０ｈには、アプリケーション固有の情報を定義することが可能である。
【００３４】
図５の例外情報の格納領域５０において、状態保存５１は、例外発生の情報を保存する構成であり、具体的には例外発生フラグを保存する。状態保存５１は、例外発生フラグクリア処理時にリセットされる。状態保存５１において、ＳＡＶＥは、前回の異常リセット情報（例外発生フラグ）が保存されたことを示し、ＣＬＥＡＲは、前回の異常リセット情報（例外発生フラグ）がクリアされたことを示す。
【００３５】
カレント位置５２は、最新の異常ログが格納されている位置を表す。位置は、履歴情報の格納領域（位置）７０ａ〜７０ｈを示すデータ（８領域の一つを示すデータ）である。情報格納領域７０ａ〜７０ｈを８個の箱と考えれば、位置は、箱番号のデータといえる。正常ログ位置５３は、正常系のログが保存されている位置を表す。エラー位置５４は、異常系のログが保存されている位置を表す。空き位置５５は、情報格納位置で空いている位置を表す。基本的には、空き位置５５がカレント位置になる。例外情報は、さらに、ログ正常数５６、ログ異常数５７および空き数５８（位置の数）を持つ。そしてさらに、例外情報は、前述したように、例外発生アドレス５９と例外発生時刻６０を持っている。
【００３６】
一方、履歴情報の８個の格納領域７０ａ〜７０ｈの各々には、下記の情報が格納される。例外発生フラグ７１は、正常状態で０、異常状態で１である。次の正常番号７２は、次の正常状態が格納されている番号を表す。番号とは、８個の格納領域の番号（０番から７番のうちの一つのデータ）である。次の異常番号７３は、次の異常状態が格納されている番号を番号（０番〜７番）を表す。例外発生アドレス７４および例外発生時刻７５は、既に説明した例外発生時のプログラムアドレスおよびＣＰＵ時刻情報である。次の正常番号７２、次の異常番号７３および例外発生アドレス７４に入れるべきデータがないときには、−１が入る。
【００３７】
上記において、例外情報保存部３１は、正常および異常のマスター情報の格納領域として機能する。マスター情報が例外発生時に保存され、それからリセット処理後にログ解析出力保存部４５に移されて、過去の履歴と結合されることになる。
【００３８】
図６は、例外情報および履歴情報の具体例を示している。図６（ａ）は、正常状態におけるデータの例である。ここでは、まだ、履歴情報が一つも格納されていないとする。正常状態では、例外情報保存部３１の状態保存５１はＣＬＥＡＲであり、カレント位置５２は０番であり、正常ログ位置５３は０番であり、エラー位置５４は０番であり、空き位置５５は１番である。さらに、ログ正常数５６は０個、ログ異常数５７は０個、空き数５８は８個である。そして、例外発生アドレス５９および例外時刻情報６０には−１が入っている。
【００３９】
ここで、例外が発生したとする。このとき、まず、図６（ａ）に示すように、正常状態の情報が、ログ解析出力保存部４５における０番の情報格納領域（図５の領域７０ａ）に記録される。０番領域では、例外発生フラグ７１は、正常状態の０になる。また、この段階では、次の正常番号７２は−１であり、次の異常番号７３は−１であり、例外発生アドレス７４は−１であり、例外発生時刻７５は現在のＣＰＵ時刻になる。
【００４０】
また、例外が発生すると、例外情報保存部３１のデータが、図６（ｂ）の異常状態のデータになる。図６（ｂ）では、状態保存５１はＳＡＶＥであり、カレント位置５２は１番であり、正常ログ位置５３は０番であり、エラー位置５４は１番であり、空き位置５５は１番である。さらに、ログ正常数５６は１個、ログ異常数５７は１個、空き数５８は６個である。そして、例外発生アドレス５９および例外時刻情報６０には、それぞれのデータが入れられる。
【００４１】
さらに、例外が発生すると、リセット後に履歴情報がログ解析出力保存部４５の１番の情報格納領域（図５の領域７０ｂ）に記録される。１番領域では、例外発生フラグ７１は、異常状態の１になる。また、この段階では、次の正常番号７２は−１であり、次の異常番号７３は−１である。例外発生アドレス７４および例外発生時刻７５の領域にはそれぞれのデータが記録される。
【００４２】
上記のようなデータ保存処理が繰り返されて、正常ログと異常ログが記録されていく。ログ最大数が８なので、ログ数が８を越えると、古いものから順に上書きされていく。ただし、異常ログの記録を優先したいので、正常領域のログが優先的に上書きされる。また、異常ログ数が８を越えると、古い異常ログが上書きされる。
【００４３】
このように、本実施の形態では、通常状態（正常状態）のアプリ電文ログと異常発生時の電文ログが記録される。これらが出力されて、これらデータから逆生成を行い、原因のプロセスと原因箇所を特定することが可能となる。
【００４４】
なお、データ取得については、上述したように、外部記録装置を装着することによって現場のデータを取得することも可能であるし、リモートでの通信機能によってデータを取得することも可能である。この点について、従来技術では、原因解析を実現しようとすれば、通信でのログの吸い上げを常時行うことが必要であり、通信費用が嵩んでしまう。これに対して、本実施の形態では、異常発生時のみデータを取得すればよいので、通信費用を削減できる。また、従来技術では、異常発生の再現を試みても原因箇所が特定されないことがある。これに対して、本実施の形態では、例外発生アドレスを記録するので、原因箇所をより確実に特定できる。
【００４５】
図７は、スレッド関数マップの例を示している。図７において、タスクＡ、Ｂはスレッドに相当する。図７に示すように、スレッド関数マップは、スレッドおよび関数のアドレスのテーブルである。
【００４６】
スレッド関数マップは、履歴情報とともにコンピュータ１から出力されて、異常解析における関数のトレースに利用される。例えば、履歴情報において、例外発生アドレスが、０ｘ８２０５であったとする。この場合、タスクＡの関数１内で例外が発生したことが分かる。
【００４７】
次に、図８〜図１０は、電源断が発生したときのコンピュータ１の動作を説明する図である。図８〜図１０は、図４の各ステップ処理の後における例外情報保存部３１のデータ状態を示している。各図において、ポイントＡは図４のステップＳ３１とステップＳ３３の間のポイントであり、同様に、ポイントＢはステップＳ３３とステップＳ３５の間、ポイントＣはステップＳ３５とステップＳ３７の間、ポイントＤはステップＳ３７とステップＳ３９の間、ポイントＥはステップＳ３９とステップＳ４５の間、さらに、ポイントＦはステップＳ４５とステップＳ４７の前である。
【００４８】
図８では、リセットによって異常履歴が記録されるが、この過程で電源断は発生してない。ポイントＡでは、状態保存がＳＡＶＥであり、カレント位置が１であり、正常数が１、異常数が０、空き数が７である。ステップＳ３７でのログ解析出力保存部４５への履歴情報の記録に伴い、ポイントＤでカレント位置が２に変わり、異常数が１に変わり、空き数が６に変わっている。そして、ステップＳ４５で例外発生フラグがクリアされ、ポイントＦにて状態保存がＣＬＥＡＲに変わっている。
【００４９】
図９では電源断が発生している。まず、電源断の前の状態として、０番、２番、４番の領域に正常情報が時刻の古い順に格納されており、１番、３番、５番、６番に異常情報が時刻の古い順に格納されているとする。この場合、図示のように、正常ログが３個、異常ログが４個である。ポイントＡでは、状態保存がＳＡＶＥであり、カレント位置が７であり、正常数が３であり、異常数が４であり、空き数が１である。
【００５０】
そして、図９では、ポイントＡにて電源断が発生しており、リセットがかかっている。リセット後は、ポイントＡの空き数が０に変わっている。さらに、ステップＳ３７でのログ解析出力保存部４５への履歴情報の記録に伴い、ポイント（Ｄ）でカレント位置が０に変わり、異常数が５に増えている（空き数が０なので、カレント位置は、最も古い正常情報の位置になっている）。そして、ステップＳ４５で例外発生フラグがクリアされ、ポイント（Ｆ）にて状態保存がＣＬＥＡＲに変わっている。
【００５１】
図１０は、電源断のもう一つの例である。電源断の前の状態は、図９と同じである。そして、ポイント（Ｂ）にて電源断が発生しており、リセットがかかっている。リセット後のデータも、図９と同じである。すなわち、ポイント（Ａ）の空き数が０に変わっている。そして、ポイント（Ｄ）でカレント位置が０に変わり、異常数が５に増えている。さらに、ポイント（Ｆ）にて状態保存がＣＬＥＡＲに変わっている。
【００５２】
このように、ポイント（Ａ）とポイント（Ｂ）のどちらで電源断が発生しても、異常の情報が適切に保存される。ポイント（Ｃ）〜ポイント（Ｆ）で電源断が発生しても、同様の情報が格納される。
【００５３】
以上に本発明の実施の形態に係る異常情報格納装置について説明した。本実施の形態によれば、不揮発性メモリであるＦＲＯＭ５の一部領域で構成された例外情報保存部３１に例外発生アドレスと例外発生時刻情報といった例外情報を保存するので、異常原因解析に有用な異常事象の情報を好適に記録できる。不揮発性メモリであるＦＲＯＭ５は元々ＣＰＵ３のプログラムを格納する構成である。本実施の形態は、本来はプログラムを格納する不揮発性メモリの存在に着目し、不揮発性メモリの一部領域を例外情報の格納に利用している。すなわち、ＦＲＯＭ５を例外情報の一時キャッシュ手段として機能させ、また履歴情報のストレージ領域として機能させている。これにより、ハードディスク等を持たないコンピュータでも異常原因解析用の情報の格納を可能にしている。
【００５４】
なお、本実施の形態の変形例として、ＦＲＯＭに加えてＳＲＡＭが備えられてもよい。ＳＲＡＭには、ＯＳのレジストリ情報が好適に格納される。このような構成では、ＦＲＯＭとＳＲＡＭが不揮発性メモリに対応し、そして、例外情報は、ＦＲＯＭまたはＳＲＡＭに格納されてよい。履歴情報およびスレッド関数マップについても同様である。
【００５５】
また、本実施の形態によれば、例外情報を保存した時点でシステムをリセットし、リセット後に例外情報に対応する履歴情報を履歴情報格納部であるログ解析出力保存部４５に格納するので、履歴情報を残すことができる。履歴情報は、ＯＳ等の処理で外部記録装置に出力され、またはＬＡＮ等に出力され、異常解析に好適に利用される。ここでも、プログラム関連の不揮発性メモリの存在に着目し、不揮発性メモリの一部領域を履歴情報格納部として利用しており、これにより、ハードディスク等を持たないコンピュータでも異常原因解析用の情報の格納を可能にしている。
【００５６】
また、本実施の形態によれば、スレッド関数マップを格納することで、保存された例外発生アドレスに対応するスレッドおよびその関数を正確にトレースでき、したがって異常原因解析に有効な情報が得られる。ここでも、プログラム関連の不揮発性メモリの存在に着目し、不揮発性メモリの一部領域をマップ記憶部として利用しており、これにより、ハードディスク等を持たないコンピュータでも異常原因解析用の情報の格納を可能にしている。
【００５７】
また、本実施の形態によれば、例外検出部がウォッチドッグタイマー９とＮＭＩ発生器１１で構成されており、この構成により、プログラムの暴走のような異常が発生したときに適切な割り込み処理によって例外情報を好適に格納できる。
【００５８】
また、本実施の形態によれば、コンピュータ１にて発生した電源断を検出する電源断検出部を備えている。コンピュータ１のハードウエアが電源信号のＨからＬへの変化を認識してＯＳに割り込みを挙げることにより電源断が検出される。そして、例外処理部４１は、電源断検出部により電源断が検出されたときに例外情報を例外情報保存部に格納する。この構成により、電源断が発生したときにも異常解析用の情報を好適に格納することができる。
【００５９】
以上に本発明の好適な実施の形態を説明した。しかし、本発明は上述の実施の形態に限定されず、当業者が本発明の範囲内で上述の実施の形態を変形可能なことはもちろんである。
【産業上の利用可能性】
【００６０】
以上のように、本発明にかかる異常情報格納装置は、異常原因解析に有用な異常事象の情報を好適に格納できるという効果を有し、組込系システム用コンピュータ等として有用である。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施の形態に係る異常情報格納装置を備えたコンピュータのソフトウエア構成のブロック図
【図２】本発明の実施の形態に係る異常情報格納装置を備えたコンピュータのハードウエア構成のブロック図
【図３】異常情報格納装置を備えたコンピュータの動作を示すフローチャート
【図４】異常情報格納装置の動作を示すフローチャート
【図５】例外情報保存部およびログ解析出力保存部のデータ構造体を示す図
【図６】保存されるデータの例を示す図
【図７】スレッド関数マップの例を示す図
【図８】例外情報保存部に記録されるデータの例を示す図
【図９】電源断が発生したときに例外情報保存部に記録されるデータの例を示す図
【図１０】電源断が発生したときに例外情報保存部に記録されるデータの例を示す図
【符号の説明】
【００６２】
１  コンピュータ
３  ＣＰＵ
５  ＦＲＯＭ
７  ＲＡＭ
９  ＷＤＴ
１１  ＮＭＩ発生器
１３  外部記憶装置装着部
２１  初期処理部
２３  アプリケーション処理部
２５  スレッド
２７  カーネル処理部
２９  例外フック処理部
３１  例外情報保存部
３３  メモリ部
４１  例外処理部
４３  ログ出力解析部
４５  ログ解析出力保存部
４７  スレッド関数マップ記憶部
【図１】
2006338445.tif 000003
【図２】
2006338445.tif 000004
【図３】
2006338445.tif 000005
【図４】
2006338445.tif 000006
【図５】
2006338445.tif 000007
【図６】
2006338445.tif 000008
【図７】
2006338445.tif 000009
【図８】
2006338445.tif 000010
【図９】
2006338445.tif 000011
【図１０】
2006338445.tif 000012