JP5528536B2 - プログラムトレース装置 - Google Patents
プログラムトレース装置 Download PDFInfo
- Publication number
- JP5528536B2 JP5528536B2 JP2012503001A JP2012503001A JP5528536B2 JP 5528536 B2 JP5528536 B2 JP 5528536B2 JP 2012503001 A JP2012503001 A JP 2012503001A JP 2012503001 A JP2012503001 A JP 2012503001A JP 5528536 B2 JP5528536 B2 JP 5528536B2
- Authority
- JP
- Japan
- Prior art keywords
- message
- execution means
- data
- unit
- communication
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software 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参照)。
しかしながら、特許文献1では、分散システムにおける全ての組み込み機器、計算機システムのそれぞれでトレースデータを保存しているため、それぞれに記憶領域が必要となる。そのため、記憶領域のない、あるいは充分な容量の記憶領域が確保できない組み込み機器等を含む分散システムには適用できなかった。また、分散システム全体の動作解析の為にそれぞれの組込み機器、計算機システムで保存されたトレースデータを統合する必要があった。
この発明は、上述のような問題を解決するためになされたもので、第一の目的は、記憶領域のない、あるいは充分な記憶領域の確保ができない組み込み機器等を含む分散システムにも適用可能なプログラムトレース装置を得ることである。第二の目的は、複数の組み込み機器、計算機システムで構成される分散システムにおいて、トレースデータを一つの組み込み機器または計算機システムに集約して保存するプログラムトレース装置を得ることである。
この発明に係るプログラムトレース装置は、ネットワークに接続された複数の実行手段を備え、前記複数の実行手段のそれぞれは前記ネットワークを介して他の実行手段にメッセージを送受信し所定の処理を実行する分散システムの動作解析を行うプログラムトレース装置において、前記複数の実行手段の1つであるマスター実行手段は、前記所定の処理の実行指示データを含む第一のデータを生成する第一のアプリケーション部と、前記第一のデータに前記実行指示データの処理内容ごとに予め割り当てられたメッセージIDを付加するID付加部と、前記第一のデータにCPU間通信回数の所定の初期値を付加するCPU間通信回数付加部と、受信した前記メッセージにおけるCPU間通信回数を正常な処理が行われた場合の所定の値と照合することにより、前記マスター実行手段が前記メッセージを送信してから前記複数の実行手段を経由した前記メッセージを受信するまでの処理においてエラーが発生していたことを検出するエラー状態検出部と、前記エラー状態検出部の検出結果により、受信した前記メッセージからトレースデータを抽出して保存するトレースデータ保存部とを備え、前記マスター実行手段から送信される前記メッセージは前記第一のデータ、前記メッセージID及び前記CPU間通信回数を含み、前記複数の実行手段のうち前記マスター実行手段以外であるスレーブ実行手段は、前記マスター実行手段より前記メッセージを受信した場合、受信した前記メッセージにおける前記第一のデータに格納された前記実行指示データに基づいて所定の処理を実行し第二のデータを生成する第二のアプリケーション部と、受信した前記メッセージにおける前記CPU間通信回数を更新して設定するCPU間通信回数更新部とを備え、前記スレーブ実行手段から送信される前記メッセージは前記第二のデータ、前記メッセージID及び前記CPU間通信回数を含む。
この発明によれば、記憶領域のない、あるいは充分な記憶領域の確保できない組み込み機器等を含む分散システムにも適用可能なプログラムトレース装置を得ることができる。
また、複数の組み込み機器、計算機システムで構成される分散システムにおいて、トレースデータを一つの組み込み機器または計算機システムに集約して保存するプログラムトレース装置を得ることができる。
実施の形態1.
この発明を実施するための実施の形態1における分散システムのプログラムトレース装置の構成を図1に示す。同図に示すように、分散システムはネットワーク400に複数の実行手段100、200a、200bが接続される。一つの実行手段をマスター実行手段100、それ以外の実行手段をスレーブ実行手段と呼ぶことにする。図1には、2つのスレーブ実行手段200aおよび200bが接続されている構成例を示す。しかし、この構成に限るものではない。すなわち、マスター実行手段100に加えて、スレーブ実行手段として1つ以上が接続されているものであればよい。また、これは以下のすべての実施の形態においても同様である。
ここでは説明の都合上、図1に示すように、スレーブ実行手段として200a、200bが接続された構成例について示す。
この発明を実施するための実施の形態1における分散システムのプログラムトレース装置の構成を図1に示す。同図に示すように、分散システムはネットワーク400に複数の実行手段100、200a、200bが接続される。一つの実行手段をマスター実行手段100、それ以外の実行手段をスレーブ実行手段と呼ぶことにする。図1には、2つのスレーブ実行手段200aおよび200bが接続されている構成例を示す。しかし、この構成に限るものではない。すなわち、マスター実行手段100に加えて、スレーブ実行手段として1つ以上が接続されているものであればよい。また、これは以下のすべての実施の形態においても同様である。
ここでは説明の都合上、図1に示すように、スレーブ実行手段として200a、200bが接続された構成例について示す。
本実施の形態における分散システムでは、マスター実行手段100がスレーブ実行手段200a、200bのそれぞれにトレース処理を指示するトリガとなるメッセージデータを送信し、指示したトレース処理に対する最終の処理が完了したときにはマスター実行手段100にメッセージデータが返信されるものを対象とする。マスター実行手段がトレース処理のトリガとなるものをマスタートリガ処理と呼ぶことにする。
本発明における実行手段とは、1つ以上のシーケンス制御機能などが設計されたアプリケーション部を有し、入力される実行指示に基づいて所定の処理を実行するものである。これは例えば、シーケンス制御専用のマイクロコンピュータを搭載した組み込み機器、あるいは計算機システムを指す。マスター実行手段100は、正常動作時通信回数テーブル510およびトレースデータ610を記憶するバッファ(記憶領域)500および600を内蔵する。あるいは、マスター実行手段100が、正常動作時通信回数テーブル510およびトレースデータ610を記憶するためのバッファとのインタフェースを有するものであってもよい。一方、スレーブ実行手段200a、200bは、シーケンス制御専用のマイクロコンピュータを搭載した組み込み機器など所定の処理を行うのに必要な領域の記憶領域以外には余分な記憶領域がない、あるいは記憶容量に余裕のないものである。また、ネットワーク400は、IEEE1394規格に準拠したシリアルバスを用いたネットワーク、LAN、WANに代表される複数のコンピュータを接続するコンピュータネットワークなどを指す。
次に、マスター実行手段100の構成を説明する。マスター実行手段100は、アプリケーション部110、ID付加部120、CPU間通信回数付加部130、エラー状態検出部140、トレースデータ保存部150、正常動作時通信回数テーブル510を有するバッファ(記憶領域)500、トレースデータ610を保存するバッファ(記憶領域)600を含む。また、マスター実行手段100には図示しない通信インタフェースが備えられ、ネットワーク400を介してメッセージを送受信する。
アプリケーション部110は、スレーブ実行手段200a、200bへの実行指示データを含むアプリケーションデータ(第一のデータ)を発行する。ID付加部120は、アプリケーション部110から発行された第一のデータにメッセージIDを付加する。また、CPU間通信回数付加部130は、ID付加部120の出力にCPU間通信回数として所定の初期値を付加する。次いで、マスター実行手段100はメッセージデータを、通信インタフェースを介してネットワーク400上に送信する。
エラー状態検出部140はネットワーク400を介してマスター実行手段100が受信したメッセージデータに含まれるCPU間通信回数を基に、正常動作時通信回数テーブル510を参照してCPU間通信回数が正常であるかを判定する。ここで正常動作時通信回数テーブル510には、予めメッセージIDに対応付けて正常動作が行われた場合の通信回数(正常動作時通信回数)が保持される。
エラー状態検出部140はネットワーク400を介してマスター実行手段100が受信したメッセージデータに含まれるCPU間通信回数を基に、正常動作時通信回数テーブル510を参照してCPU間通信回数が正常であるかを判定する。ここで正常動作時通信回数テーブル510には、予めメッセージIDに対応付けて正常動作が行われた場合の通信回数(正常動作時通信回数)が保持される。
トレースデータ保存部150はエラー状態検出部140の判定結果により、マスター実行手段100が受信したメッセージからトレースデータ610を抽出してバッファ600に保存する。
実行指示データとは、この分散システムにおける処理実行に関する情報である。実行指示データには、例えば、対象となる実行手段に関する情報、その実行手段が有するアプリケーション部での処理内容を指す情報とその処理を行なう際に用いられる引数の情報、データなどが含まれている。これは例えば、それぞれの実行手段における所定の処理を実行するために定義されたプログラムにおける関数名、シーケンス番号等、およびそれらの処理を行なう際に用いられる引数の情報、データなどであってもよい。
また、メッセージIDは、アプリケーション部110が発行する第一のデータに対して、そのデータが有する処理内容に対応付けたものである。これは同じ処理内容であっても引数など付随するデータによって正常動作時の通信回数が異なるものについてはそれぞれ別のメッセージIDとする。メッセージIDは単純な番号であっても処理内容を表す関数名などを示す文字列等であってもよい。
正常動作時通信回数テーブル510は、バッファ500に記憶されており、トレースデータはバッファ600に随時保存されていくものである。これらバッファ500および600はハードディスク、フラッシュメモリ、メモリカード、DVDなどの外部記憶装置内で構成されてもよい。あるいは、マスター実行手段100が搭載するプロセッサが内蔵するメモリを用いてもよい。
次に、スレーブ実行手段200a、200bの構成を説明する。スレーブ実行手段200aは、受信したメッセージデータの実行指示データに基づいて所定の処理を実行し、アプリケーションデータ(第二のデータ)を出力する第二のアプリケーション部210a、及び前記第二のデータに当該メッセージIDと当該CPU間通信回数に所定の値として1を加算して更新したCPU間通信回数とを付加したメッセージデータを送信するCPU間通信回数更新部260aが含まれる。同様に、スレーブ実行手段200bは、受信したメッセージデータの実行指示データに基づいて所定の処理を実行し、第二のデータを出力する第二のアプリケーション部210b、及び前記第二のデータに当該メッセージIDと当該CPU間通信回数に所定の値として1を加算して更新したCPU間通信回数とを付加したメッセージデータを送信するCPU間通信回数更新部260bで構成される。
図2(a)に、本実施の形態の構成において、各実行手段間でやり取りするメッセージデータの流れを示したシーケンスを例示する。また、メッセージのデータ構造を同図(b)に示す。
以下、このシーケンス図の流れに沿って本実施の形態のトレースデータを抽出する動作について説明する。
まず、マスター実行手段100のアプリケーション部110が実行指示データを有する第一のデータ(Data1)を生成し出力する。次に、ID付加部120で第一のデータに対して処理内容に対応付けたメッセージIDを付加する。ここでは、メッセージIDとして単純な番号を付加する例として(1)を付加する。さらに、CPU間通信回数付加部130でメッセージIDの付加された第一のデータにCPU間通信回数として所定の初期値、例えば、1を付加する。このメッセージIDとCPU間通信回数の初期値が付加された第一のデータをメッセージデータとしてネットワーク400上に送信する。このメッセージデータでのメッセージIDとCPU間通信回数の組み合わせを(メッセージID、CPU間通信回数)=(1、1)と示すことにする。
まず、マスター実行手段100のアプリケーション部110が実行指示データを有する第一のデータ(Data1)を生成し出力する。次に、ID付加部120で第一のデータに対して処理内容に対応付けたメッセージIDを付加する。ここでは、メッセージIDとして単純な番号を付加する例として(1)を付加する。さらに、CPU間通信回数付加部130でメッセージIDの付加された第一のデータにCPU間通信回数として所定の初期値、例えば、1を付加する。このメッセージIDとCPU間通信回数の初期値が付加された第一のデータをメッセージデータとしてネットワーク400上に送信する。このメッセージデータでのメッセージIDとCPU間通信回数の組み合わせを(メッセージID、CPU間通信回数)=(1、1)と示すことにする。
このメッセージデータの送信先の実行手段であるスレーブ実行手段200aが受信し、アプリケーション部210aによって所定の処理を行なう。この処理が完了し、ネットワーク400を介して、マスター実行手段100へ第二のデータ(Data2)を送信するときに、CPU間通信回数更新部260aによって受信した当該メッセージID(1)と、受信した当該CPU間通信回数(1)に所定の値として1を加算してCPU間通信回数を更新してマスター実行手段100に送信する。この時(メッセージID、CPU間通信回数)=(1、2)となる。
また、上記とは別の処理として、スレーブ実行手段200aが別のスレーブ実行手段200bにネットワーク400を介して通信するときの説明を行なう。この場合、アプリケーション部210aによって生成される第二のデータ(Data3)に、CPU間通信回数更新部260aによって受信した当該メッセージID(1)を付加する。また、受信した当該CPU間通信回数(1)に所定の値として1を加算してCPU間通信回数を更新する。次いで、メッセージをスレーブ実行手段200bに送信する。この時(メッセージID、CPU間通信回数)=(1、2)となる。
スレーブ実行手段200bはスレーブ実行手段200aからのメッセージデータを受信し、アプリケーション部210bによって所定の処理を行なう。この処理が完了し、スレーブ実行手段200aに第二のデータ(Data4)を送信する前に、CPU間通信回数更新部260bによって受信したメッセージにおけるメッセージID(1)を付加する。さらに、受信したメッセージにおけるCPU間通信回数(2)に所定の値として1を加算してCPU間通信回数を更新する。次いで、ネットワーク400を介してスレーブ実行手段200aに送信する。この時(メッセージID、CPU間通信回数)=(1、3)となる。
スレーブ実行手段200aは、スレーブ実行手段200bからのメッセージデータを受信し、アプリケーション部210aによって所定の処理を行なう。ここでのアプリケーション部210aでの処理として、ある処理で第二のデータ(Data5)をマスター実行手段100に送信するものと、これとは別の処理で第二のデータ(Data6)をマスター実行手段100に送信するものがあった場合、どちらもCPU間通信回数更新部260aによって更新されるCPU間通信回数は4(メッセージID、CPU間通信回数)=(1、4)となる。すなわち、アプリケーション部210aの処理内容が異なる場合であっても、メッセージIDおよびCPU通信回数は同じ値となる。
このように、アプリケーション部210aの処理内容に依存せず、送信されたメッセージIDを伝達し、実行手段で受信する度にCPU通信回数を順次更新したメッセージデータが伝達されていく。
このように、アプリケーション部210aの処理内容に依存せず、送信されたメッセージIDを伝達し、実行手段で受信する度にCPU通信回数を順次更新したメッセージデータが伝達されていく。
また、マスター実行手段100が新たにアプリケーション部110から実行指示データを有する第一のデータ(Data7)を生成した場合は、ID付加部120で第一のデータにメッセージID(2)を付加して上述と同様の処理を行なうこととなる。
図3に、正常動作時通信回数テーブル510の構成例を示す。正常動作時通信回数テーブル510は、分散システムの動作解析を行なう際に、メッセージIDに対して正常に通信を実施した場合にマスター実行手段100に返ってくるまでの通信回数として正しい回数を正常動作時通信回数として記憶したものである。図3において、例えばメッセージIDが1の処理では、マスター実行手段100に別のスレーブ実行手段から送信されるときの通信回数は2または4の場合があることを示す。同じようにメッセージIDが2の処理ではマスター実行手段100に別のスレーブ実行手段から送信されるときの通信回数は2または6の場合があることを示す。
第一のデータに割り当てられるメッセージIDと処理内容は予め一意に定めて設計され、上記設計の仕様に従って、メッセージIDとそれに対応付けた正常動作時の通信回数とのテーブルを用意する。
図4に、マスター実行手段100が他の実行手段からのメッセージを受信した際のエラー状態検出部140およびトレースデータ保存部150の処理フローを示す。マスター実行手段100は、スレーブ実行手段から送信されたメッセージを受信し(ステップST010)、次いでエラー状態検出部140は受信したメッセージデータにあるメッセージIDに対応する正常動作時通信回数を正常動作時通信回数テーブル510から取得する(ステップST020)。
次に、エラー状態検出部140は、受信したメッセージにおけるCPU間通信回数が、ステップST020にて取得した正常動作時通信回数に該当する(複数の値がある場合はそのいずれかに一致する)か否かを判定し、YesかNoかの判定結果を出力する(ステップST030)。ここでYesは、受信したメッセージデータにあるCPU間通信回数が、ステップST020にて取得した正常動作時通信回数に該当することを意味し、Noは該当しないことを示す。
エラー状態検出部140は、ステップST030の結果がYesであれば、アプリケーション部110に受信したメッセージデータにあるデータを供給する(ステップST060)。一方、ステップST030の結果がNoであれば、エラーがあったと判定してトレースデータ保存部150にエラーがあったことを通知する(ステップST040)。トレースデータ保存部150はエラーがあったときに受信したメッセージデータと正常動作時通信回数テーブル510に記憶されている当該メッセージIDに対応付けられた正常動作時通信回数とから、動作解析に使用する情報をトレースデータとして抽出してバッファ600に保存する(ステップST050)。
トレースデータの例を図5に示す。同図に示すように、受信したメッセージデータのCPU間通信回数、そのメッセージデータにおけるアプリケーションデータ、メッセージID、正常動作時通信回数を保存する。これら全てをトレースデータとして保存せず、例えばメッセージ内のデータを除くなどして保存する情報量を削減してもよい。次いで、ステップST030の結果がYesの場合と同様、アプリケーション部110に受信したメッセージデータにあるデータを供給する(ステップST060)
本実施の形態によれば、マスター実行手段100のみで対象の処理フローが正常な通信回数で処理されているかの判定を行ない、その判定結果とマスター実行手段100が受信したメッセージデータとからトレースデータを抽出して保存することができる。そのため、マスター実行手段100でトレースデータ集約させて保存することが可能となり、スレーブ実行手段にトレースデータを保存する記憶領域を持つ必要がなくなるという効果を奏する。さらに、トレースデータが集約されて保存されるので動作解析の度に複数のトレースデータを統合する手間が不要となる。
実施の形態2.
実施の形態1では、ID付加部120によって第一のデータの処理内容に対応したメッセージIDを付加し、正常動作時通信回数テーブル510がメッセージIDに対応付けたCPU間通信回数を用意していたが、実施の形態2ではメッセージIDの代わりに、第一データが発行される毎に割り当てるシーケンス番号をID付加部120によって付加し、トレースデータとしてシーケンス番号を保存対象に含めるものである。
実施の形態1では、ID付加部120によって第一のデータの処理内容に対応したメッセージIDを付加し、正常動作時通信回数テーブル510がメッセージIDに対応付けたCPU間通信回数を用意していたが、実施の形態2ではメッセージIDの代わりに、第一データが発行される毎に割り当てるシーケンス番号をID付加部120によって付加し、トレースデータとしてシーケンス番号を保存対象に含めるものである。
本実施の形態におけるプログラムトレース装置の構成は図1に示したものと同様である。
本実施の形態においては、アプリケーション部110が第一のデータを発行する度に、ID付加部120が個別のシーケンス番号を割り当てて付加する。また、正常動作時通信回数テーブル510にメッセージID毎に、このシーケンス番号を記憶させる。シーケンス番号は、例えば、1から番号順に設定するものとする。なお、このシーケンス番号はメッセージIDそれぞれにおいて個別であると共に、実行順序が判別可能であればよい。従って、1から採番するものに限られるものではなく、現在時刻、経過時間等に合わせて設定する方法でも良い。
本実施の形態においては、アプリケーション部110が第一のデータを発行する度に、ID付加部120が個別のシーケンス番号を割り当てて付加する。また、正常動作時通信回数テーブル510にメッセージID毎に、このシーケンス番号を記憶させる。シーケンス番号は、例えば、1から番号順に設定するものとする。なお、このシーケンス番号はメッセージIDそれぞれにおいて個別であると共に、実行順序が判別可能であればよい。従って、1から採番するものに限られるものではなく、現在時刻、経過時間等に合わせて設定する方法でも良い。
図6に本実施の形態における正常動作時通信回数テーブル510の構成例を示す。同図に示すように、メッセージIDに対応付けて保持された正常動作時通信回数に加えて、そのメッセージIDに対して付加されたシーケンス番号を記憶する領域が設けられており、ここにID付加部120が付加するシーケンス番号を記憶していく。
本実施の形態では、メッセージデータに付加されるものがメッセージIDの代わりにシーケンス番号となるので、スレーブ実行手段200a、200bにおいてCPU間通信回数更新部260aまたは260bはアプリケーション部210aまたは210bが生成した第二のデータに、受信したメッセージにおけるシーケンス番号を付加する。さらに、受信したメッセージにおけるCPU間通信回数に所定の値として例えば、1を加算して更新したCPU間通信回数とを付加したメッセージデータを送信する。
図7に、マスター実行手段100が他のスレーブ実行手段からメッセージデータを受信した際のエラー状態検出部140およびトレースデータ保存部150の処理フローを示す。
マスター実行手段100が、スレーブ実行手段から送信されたメッセージを受信し(ステップST110)、エラー状態検出部140は受信したメッセージにあるシーケンス番号に対応する正常動作時通信回数を正常動作時通信回数テーブル510から取得する(ステップST120)。次いで、該当するシーケンス番号を正常動作時通信回数テーブル510から削除する(ステップST130)。該当するシーケンス番号を正常動作時通信回数テーブル510から削除することで、正常動作時通信回数テーブル510の記憶領域を冗長に増加させないで済む効果を生む。
次に、エラー状態検出部140は、受信したメッセージにおけるCPU間通信回数が、ステップST120にて取得した正常動作時通信回数に該当するかを判定し、YesかNoかの判定結果を出力する(ステップST140)。以下のステップST140〜ST170については実施の形態1における図4のステップST030〜ST060と同様である。
すなわち、エラー状態検出部140は、ステップST140の結果がYesであれば、アプリケーション部110に受信したメッセージデータにあるデータを供給する(ステップ170)。一方、ステップST140の結果がNoであれば、エラーがあったと判定してトレースデータ保存部150にエラーがあったことを通知する(ステップST150)。トレースデータ保存部150はエラーがあったときに受信したメッセージデータと正常動作時通信回数テーブル510に記憶されている当該メッセージIDに対応付けられた正常動作時通信回数とから動作解析に使用する情報をトレースデータとして抽出してバッファ600に保存する(ステップST160)。
ここで、トレースデータとして受信したメッセージデータのCPU間通信回数、アプリケーションデータ、メッセージID、シーケンス番号、正常動作時通信回数を保存する。これら全てをトレースデータとして保存せず、例えばアプリケーションデータを除くなどして保存する情報量を削減してもよい。
本実施の形態によれば、実施の形態1と同様に、マスター実行手段100のみで対象の処理フローが正常な通信回数で処理されているかの判定を行ない、その判定結果とマスター実行手段100が受信したメッセージデータとからトレースデータを抽出して保存することができる。そのため、マスター実行手段100でトレースデータ集約させて保存することが可能となり、スレーブ実行手段にトレースデータを保存する記憶領域を持つ必要がなくなるという効果を奏する。さらに、トレースデータが集約されて保存されるので動作解析の度に複数のトレースデータを統合する手間がなくなるという効果を奏する。
また、処理内容に対応付けたメッセージIDではなく、実行指示データの発行が行なわれる度にシーケンス番号を割り振って付加したメッセージデータを通信する。そのため、マスター実行手段100が受信したメッセージデータのCPU間通信回数が、該当する処理内容に対応付けた正常動作時通信回数に該当しない場合に、シーケンス番号を含めたトレースデータを保存することになる。これにより、動作解析時にシーケンス番号の情報によってエラーがあった処理を時系列に把握することが容易になるので、どのタイミングでエラーが発生しているかをより明確に把握することができ、より詳細な動作解析が可能になる。
実施の形態3.
以上の実施の形態においては、マスター実行手段100におけるCPU間通信回数付加部130でCPU間通信回数として例えば初期値1を付加し、スレーブ実行手段におけるCPU間通信回数更新部(260aまたは260b)において、受信したメッセージにおけるCPU間通信回数に所定の値として1を加算してCPU間通信回数を更新していた。本実施の形態では、メッセージIDに対応付けられた正常動作時通信回数のうち一番大きいものを初期値とし、スレーブ実行手段におけるCPU間通信回数更新部において1減算してCPU間通信回数を更新するものである。
以上の実施の形態においては、マスター実行手段100におけるCPU間通信回数付加部130でCPU間通信回数として例えば初期値1を付加し、スレーブ実行手段におけるCPU間通信回数更新部(260aまたは260b)において、受信したメッセージにおけるCPU間通信回数に所定の値として1を加算してCPU間通信回数を更新していた。本実施の形態では、メッセージIDに対応付けられた正常動作時通信回数のうち一番大きいものを初期値とし、スレーブ実行手段におけるCPU間通信回数更新部において1減算してCPU間通信回数を更新するものである。
図8に、本実施の形態におけるプログラムトレース装置の構成を示す。なお、図8において実施の形態1の図1と同一の符号のものにおいては、それぞれ実施の形態1の同一の符号のものと相当するものであるので、その説明を省略する。また、本実施の形態では各実行手段に個別のCPU識別子を割り当てる。CPU識別子は例えば、マスター実行手段100については100、スレーブ実行手段200a、200bはそれぞれ200a、200bとする。
マスター実行手段100のCPU間通信回数付加部130は、ID付加部120から付加されたメッセージIDに対応する正常動作時通信回数を正常動作時通信回数テーブル510から読み出し、読み出された正常動作時通信回数のうち最も大きい回数をCPU間通信回数の初期値として付加したメッセージデータを送信する。これによって、正常に通信を行なっている時のメッセージデータにあるCPU間通信回数は常に0以上の値となる。
スレーブ実行手段の構成について、スレーブ実行手段200aを例として説明する。以下の動作は他のスレーブ実行手段(例えばスレーブ実行手段200b)においても同様である。
スレーブ実行手段200aには実施の形態1における図1の構成に加えて、通信エラー判定部270aが備えられる。
通信回数エラー判定部270aは受信したメッセージにおけるCPU間通信回数が0以上であるか否かを判定する。CPU間通信回数が0以上であれば、そのままアプリケーション部210aにそのメッセージデータ(あるいはアプリケーションデータのみ)を供給する。
スレーブ実行手段200aには実施の形態1における図1の構成に加えて、通信エラー判定部270aが備えられる。
通信回数エラー判定部270aは受信したメッセージにおけるCPU間通信回数が0以上であるか否かを判定する。CPU間通信回数が0以上であれば、そのままアプリケーション部210aにそのメッセージデータ(あるいはアプリケーションデータのみ)を供給する。
一方、CPU間通信回数が負の値である場合は、その時点で処理が正常動作でないと判定して、メッセージデータに自己の実行手段(すなわち、スレーブ実行手段200a)のCPU識別子と当該メッセージデータを送信した実行手段のCPU識別子とを付加してマスター実行手段100に送信する。この場合、処理が正常動作でないため、スレーブ実行手段200aのアプリケーション部210aにそのメッセージデータ(あるいはアプリケーションデータ)を供給する必要はない。
また、CPU間通信回数を例えば4bitの2進数の2の補数表現で与えるとした場合は、−1を(1111)と表現することになり、最上位bitを見ればCPU間通信回数が10進数形式で負の値であることを容易に判定することができる。
また、CPU間通信回数を例えば4bitの2進数の2の補数表現で与えるとした場合は、−1を(1111)と表現することになり、最上位bitを見ればCPU間通信回数が10進数形式で負の値であることを容易に判定することができる。
各実行手段間でやり取りするメッセージデータの流れを示したシーケンス図の例を図9(a)に示す。また、同図(b)にスレーブ実行手段200aにおける通信回数エラー判定部270aにおいて、エラーと判定した場合のメッセージデータのデータ構造をデータ例と共に示す。
図9(a)において、スレーブ実行手段200aがスレーブ実行手段200bから第二のデータとして(Data9)を受けた時の動作を例として説明する(図9(a)の白抜き矢印の部分)。この時、通信回数エラー判定部270bは受信したメッセージにおけるCPU間通信回数が−1、すなわち負の値であることから、その時点で処理が正常動作でないと判断する。また、メッセージデータに自身のCPU(すなわち、スレーブ実行手段200b)のCPU識別子である200bとそのメッセージデータを送信した実行手段であるスレーブ実行手段200aの識別子である200aとを付加してマスター実行手段100に送信する。エラーと判定した時のデータの一例を図9(b)に示す。
マスター実行手段100は、スレーブ実行手段200a、200bから送信されたメッセージを受信する。マスター実行手段100におけるエラー状態検出部140は、受信したメッセージデータのCPU間通信回数が0以上の場合はアプリケーション部110に受信したメッセージデータ(またはアプリケーションデータ)を供給する。一方、CPU間通信回数が負の値である場合は、トレースデータ保存部150にエラーがあったことを通知する。トレースデータ保存部150は受信したメッセージデータと正常動作時通信回数テーブル510に記憶されている当該メッセージのメッセージIDに対応付けられた正常動作時通信回数とをトレースデータ610として抽出し、バッファ600に保存する。
トレースデータ610の例として、受信したメッセージデータのCPU間通信回数、アプリケーションデータ、メッセージID、正常動作時通信回数に加え、エラーを検出した実行手段のCPU識別子と送信元CPU識別子を保存する。これら全てをトレースデータとして保存せず、例えばアプリケーションデータを除くなどして保存する情報量を削減しても構わない。
このようにして、CPU間通信回数のエラー判定を各実行手段で行ない、エラーを検知したCPU番号から該当する実行手段が特定できるので、分散システムの動作解析においてエラー発生箇所の特定が容易となり、エラー発生時のより詳細なトレースデータを取得することが可能となる。
本実施の形態においても、実施の形態1および2と同様の効果も得られる。
本実施の形態においても、実施の形態1および2と同様の効果も得られる。
実施の形態4.
図10に、実施の形態4におけるプログラムトレース装置の構成を示す。なお、図10において実施の形態1における図1と同一の符号のものにおいては、それぞれ実施の形態1の同一の符号のものと相当するものであるので、その説明を省略する。また、本実施の形態では実施の形態3と同様に各実行手段に個別のCPU識別子を割り当てている。
図10に、実施の形態4におけるプログラムトレース装置の構成を示す。なお、図10において実施の形態1における図1と同一の符号のものにおいては、それぞれ実施の形態1の同一の符号のものと相当するものであるので、その説明を省略する。また、本実施の形態では実施の形態3と同様に各実行手段に個別のCPU識別子を割り当てている。
実施の形態1における図1の構成に加えて、各スレーブ実行手段200a、200bにおいて、CPU識別子付加部280a、280bが備えられる。
スレーブ実行手段200a、200bでは、それぞれにおけるアプリケーション部210a、210bが第二のデータを出力した後に、CPU識別子付加部280a、280bにおいて当該実行手段のCPU識別子を順に付加する。図11にこの場合のメッセージデータの構成を示す。同図に示すように、メッセージにおいてCPU間通信回数、メッセージID、アプリケーションデータに加え、CPU識別子1、CPU識別子2、・・・、PU識別子n(CPU識別子nは付加された最終のCPU識別子を示す)の情報が付加される。同図におけるCPU識別子1〜nのかっこ内には付加されるCPU識別子情報の例を示す。
スレーブ実行手段200a、200bでは、それぞれにおけるアプリケーション部210a、210bが第二のデータを出力した後に、CPU識別子付加部280a、280bにおいて当該実行手段のCPU識別子を順に付加する。図11にこの場合のメッセージデータの構成を示す。同図に示すように、メッセージにおいてCPU間通信回数、メッセージID、アプリケーションデータに加え、CPU識別子1、CPU識別子2、・・・、PU識別子n(CPU識別子nは付加された最終のCPU識別子を示す)の情報が付加される。同図におけるCPU識別子1〜nのかっこ内には付加されるCPU識別子情報の例を示す。
この際、マスター実行手段100のエラー状態検出部140がエラーであると判定した場合にトレースデータ保存部150が抽出するデータとして、実施の形態1のトレースデータに加えて、メッセージデータに付加されているメッセージが経由したCPU番号の情報を保存する。
以上述べたトレースデータを保存することで、エラー発生時に経由していた実行手段の経過情報を辿ることが可能となるので、分散システムの動作解析としてより詳細な解析が可能となる。
本実施の形態は実施の形態2のようにシーケンス番号を用いたプログラムトレース装置においても適用でき、この場合も本実施の形態と同様の効果を奏する。
本実施の形態によれば、上記のエラー発生時に経由していた実行手段の経過情報を辿ることが可能となる効果に加え、実施の形態1および2における効果も得られる。
本実施の形態は実施の形態2のようにシーケンス番号を用いたプログラムトレース装置においても適用でき、この場合も本実施の形態と同様の効果を奏する。
本実施の形態によれば、上記のエラー発生時に経由していた実行手段の経過情報を辿ることが可能となる効果に加え、実施の形態1および2における効果も得られる。
実施の形態5.
以上の実施の形態1〜4においてはマスター実行手段100がトレース実行のトリガとなる(マスタートリガ処理)ものである。本実施の形態ではスレーブ実行手段がトレース実行のトリガとなる場合においても適用可能なプログラムトレース装置の構成を示す。ここでスレーブ実行手段がトレース実行のトリガとなる、すなわち、トレースを起動する実行手段となる場合を以下、スレーブトリガ処理とよぶ。
スレーブトリガ処理は、例えば、特定のスレーブ実行手段以降の処理が正しい動作であるか否か疑わしい場合に分散システムの解析を進める際に有効になる。すなわち、マスター実行手段から上記特定のスレーブ実行手段の手前までは処理が正常であることが判明しているか、あるいは確実である場合に、その特定のスレーブ実行手段以降の動作に対象を絞った分散システムの解析が容易となる。
以上の実施の形態1〜4においてはマスター実行手段100がトレース実行のトリガとなる(マスタートリガ処理)ものである。本実施の形態ではスレーブ実行手段がトレース実行のトリガとなる場合においても適用可能なプログラムトレース装置の構成を示す。ここでスレーブ実行手段がトレース実行のトリガとなる、すなわち、トレースを起動する実行手段となる場合を以下、スレーブトリガ処理とよぶ。
スレーブトリガ処理は、例えば、特定のスレーブ実行手段以降の処理が正しい動作であるか否か疑わしい場合に分散システムの解析を進める際に有効になる。すなわち、マスター実行手段から上記特定のスレーブ実行手段の手前までは処理が正常であることが判明しているか、あるいは確実である場合に、その特定のスレーブ実行手段以降の動作に対象を絞った分散システムの解析が容易となる。
なお、本実施の形態においても、実施の形態1〜4と同様に、マスター実行手段100から指示された、スレーブ実行手段に対する実行指示(アプリケーション部210a、210b等に対する指示)が各スレーブ実行手段に派生していき、それらの最終の処理が完了した場合には必ずマスター実行手段100にネットワーク400を介してメッセージが送信されるものを対象とする。
本実施の形態におけるプログラムトレース装置の構成を図12に示す。なお、図12において実施の形態1における図1と同一の符号のものにおいては、それぞれ実施の形態1の同一の符号のものと相当するものであるので、その説明を省略する。
以下、スレーブ実行手段200aを例に説明する。
スレーブ実行手段200aには実施の形態1における図1の構成に加えて、スレーブトリガ処理部290aが備えられる。
スレーブ実行手段200aにおけるアプリケーション部210aは実施の形態1〜4と同様に、他の実行手段から送信されたメッセージにおけるアプリケーションデータ(第一または第二のデータ)に基づいて所定の処理を実行してアプリケーションデータ(第二のデータ)を発行する。
スレーブ実行手段200aには実施の形態1における図1の構成に加えて、スレーブトリガ処理部290aが備えられる。
スレーブ実行手段200aにおけるアプリケーション部210aは実施の形態1〜4と同様に、他の実行手段から送信されたメッセージにおけるアプリケーションデータ(第一または第二のデータ)に基づいて所定の処理を実行してアプリケーションデータ(第二のデータ)を発行する。
本実施の形態では、いずれかのスレーブ実行手段がトレースのトリガとなる場合には、マスター実行手段100がトリガとなるトレースは行われないものとする。
これは例えば、マスター実行手段100におけるアプリケーション部110、スレーブ実行手段200a、200bにおけるアプリケーション部210a、210b等に設定される実行指示を実施するためのプログラムにおいて、予め上記の排他処理が可能となるようにプログラムを作成しておくことにより実現できる。
これは例えば、マスター実行手段100におけるアプリケーション部110、スレーブ実行手段200a、200bにおけるアプリケーション部210a、210b等に設定される実行指示を実施するためのプログラムにおいて、予め上記の排他処理が可能となるようにプログラムを作成しておくことにより実現できる。
あるいは、図13に示すように、分散システムにおいてトレースのトリガ処理をいずれの実行手段が行うか設定するトレーストリガ制御部700を設けてもよい。このトレーストリガ制御部700が例えばディスレイ、キーボード等からなる入力手段(図示せず)を備え、分散システムの操作者がこの入力手段を通じて、トレーストリガとなる実行手段の設定を行うようにしてもよい。あるいは、トレーストリガ制御部700に予めプログラム等を組み込んでおき、このプログラムを動作させることにより、トレーストリガとなる実行手段を設定するものであってもよい。なお、図13において、トレーストリガ制御部700はネットワーク400を経由して、各実行手段に接続される構成例を示したが、各実行手段にネットワークを介さずに接続されるものであってもよい。
上述のように、本実施の形態においてスレーブトリガ処理が行われる場合には、マスタートリガ処理は行われない。そのためマスター実行手段100からのメッセージにトレースのためのメッセージIDは含まれないことになる。この場合、マスター実行手段100から送信されるのは、スレーブ実行手段200a、200b等のアプリケーション部210a、210b等に対する指示データとなる。
ここで、アプリケーションデータまたはメッセージのデータを通信インタフェースがネットワーク400に送受信するためのネットワークアドレス等は、この発明の実施の形態1〜5におけるメッセージIDとは異なる情報である。すなわち、各実行手段間の通信機能は本実施の形態で述べるメッセージIDに依存せずに実現される。
ここで、アプリケーションデータまたはメッセージのデータを通信インタフェースがネットワーク400に送受信するためのネットワークアドレス等は、この発明の実施の形態1〜5におけるメッセージIDとは異なる情報である。すなわち、各実行手段間の通信機能は本実施の形態で述べるメッセージIDに依存せずに実現される。
次に、動作について説明する。以下、図12に沿って説明するが、図13の場合でも同様である。
図12において、スレーブトリガ処理部290aは、アプリケーション処理部210aの処理に続いて実行される。
図14にスレーブトリガ処理部290aおよびCPU間通信回数更新部260aの処理フローを示す。スレーブトリガ処理部290aは上述のアプリケーション処理部の処理に続いて起動される(ステップST200)。次に、ステップST210において、自CPU、すなわち、この場合はスレーブ実行手段200aが、トレース実行のトリガであるか否かを判定する。
図12において、スレーブトリガ処理部290aは、アプリケーション処理部210aの処理に続いて実行される。
図14にスレーブトリガ処理部290aおよびCPU間通信回数更新部260aの処理フローを示す。スレーブトリガ処理部290aは上述のアプリケーション処理部の処理に続いて起動される(ステップST200)。次に、ステップST210において、自CPU、すなわち、この場合はスレーブ実行手段200aが、トレース実行のトリガであるか否かを判定する。
自CPUがトレース実行のトリガであるとは、例えば、図13に示したトレーストリガ制御部700から設定される情報によって知ることができる。
あるいは、トレーストリガ制御部700を用いる方法以外に、アプリケーション部210aが生成するアプリケーションデータ(第二のデータ)中の所定の位置に設定したフラグのONまたはOFFの情報によって判断することができる(例えば、ONは処理実行のトリガである旨予め定めておく)。あるいは、スレーブ実行手段200におけるアプリケーション部200aに処理実行のトリガであることを設定する命令を所定の位置に埋め込んでおき、上記命令の実行によって前述のフラグをONまたはOFFにする方法もある。
あるいは、トレーストリガ制御部700を用いる方法以外に、アプリケーション部210aが生成するアプリケーションデータ(第二のデータ)中の所定の位置に設定したフラグのONまたはOFFの情報によって判断することができる(例えば、ONは処理実行のトリガである旨予め定めておく)。あるいは、スレーブ実行手段200におけるアプリケーション部200aに処理実行のトリガであることを設定する命令を所定の位置に埋め込んでおき、上記命令の実行によって前述のフラグをONまたはOFFにする方法もある。
あるいは、スレーブ実行手段200aにディスレイ、キーボード等からなる入力手段を備え、分散システムの操作を行う操作者からのコマンド等の入力情報によって、処理実行のトリガであることを指定される場合もある。
さらに、マスター実行手段100からメッセージ等による通信によって処理実行のトリガとなることが通知されるものであってもよい。
さらに、マスター実行手段100からメッセージ等による通信によって処理実行のトリガとなることが通知されるものであってもよい。
ステップST210の判定結果がYesであれば、ステップST220に進む。ステップST220において、自CPU(すなわちスレーブ実行手段200a)に予め割り当てられたメッセージIDを、上述のアプリケーションデータ(第二のデータ)に付加する。次いでCPU間通信回数の初期値を付加する(ステップST230)。ステップST210の判定結果がNoであれば、自CPUがトリガではないことになる。この場合は、マスター実行手段100がトレースのトリガである場合と、他のスレーブ実行手段がトレースのトリガである場合の2通りがある。ここで、いずれの実行手段もトリガとならない場合については本発明の対象外であるため説明を省略する。
まず、マスター実行手段100がトレーストリガ処理となる場合(マスタートリガ処理)、ステップST250において受信したメッセージのメッセージIDをメッセージに付加した後、CPU間通信回数更新部260aにメッセージを供給する。CPU間通信回数更新部260aはステップST260において、実施の形態1〜4と同様に、CPU間通信回CPU間通信回数を更新する。
次に、他のスレーブ実行手段がスレーブトリガ処理を行う場合は、該当するスレーブ手段からのメッセージにはそのスレーブ実行手段が設定したメッセージIDおよびCPU通信回数が含まれる(ステップST220、ST230参照)。従って、ステップST250、ST260において、上述のマスタートリガ処理の場合と同様に、受信したメッセージのメッセージIDをメッセージ(受信したメッセージ中のアプリケーションデータをアプリケーション部210aが作成した第二のデータで更新したもの)に付加した後、CPU間通信回数更新部260aにより、CPU間通信回数が更新される。ステップST230、ST260いずれの場合も、次いでステップT240に進み、発行されたメッセージは通信インタフェースを介してネットワーク400に送信される。
次に、他のスレーブ実行手段がスレーブトリガ処理を行う場合は、該当するスレーブ手段からのメッセージにはそのスレーブ実行手段が設定したメッセージIDおよびCPU通信回数が含まれる(ステップST220、ST230参照)。従って、ステップST250、ST260において、上述のマスタートリガ処理の場合と同様に、受信したメッセージのメッセージIDをメッセージ(受信したメッセージ中のアプリケーションデータをアプリケーション部210aが作成した第二のデータで更新したもの)に付加した後、CPU間通信回数更新部260aにより、CPU間通信回数が更新される。ステップST230、ST260いずれの場合も、次いでステップT240に進み、発行されたメッセージは通信インタフェースを介してネットワーク400に送信される。
図15に、本実施の形態における、スレーブ実行手段200aが処理実行のトリガとなる場合に、各実行手段間でやり取りするメッセージデータの流れを示したシーケンス図の例を示す。同図において、スレーブ実行手段200aが処理実行のトリガとなる。スレー部実行手段200aからスレーブ実行手段200b、200aを経て、マスター実行手段100に最終のメッセージが送信されて完了する。ここで、メッセージのデータ構造は図2(b)に示したものと同様の構成のものを用いることができる。
図15の処理フローに見るように、実施の形態1における図2に示す処理フローと比較して、トレースデータ610として保存の対象となるデータ量がさらに削減できることがわかる。
ここで、図14のステップST220において、自CPUに割り当てられたメッセージIDを付加することを説明したが、これは分散システムを構成する実行手段間で予め処理のトリガとなった場合のメッセージIDを割り当てておくことによって実現できる。あるいは上述のトレーストリガ制御部700によって設定することもできる。
また、他の実行手段が使用するメッセージIDも含めて、各実行手段でメッセージIDの割り当て情報を共有することもできる。この場合、図14のステップST210における判断にこのメッセージID割り当て情報を利用することができ、判断を確実に行うことができる。すなわち、例えば、アプリケーション部210aが生成したデータが受信したメッセージのアプリケーションデータを更新したものであり、既に他の実行手段に割り当てられたメッセージIDが含まれていれば、受信したメッセージが他の実行手段がトリガとなったメッセージであることの判定が容易となる。
また、他の実行手段が使用するメッセージIDも含めて、各実行手段でメッセージIDの割り当て情報を共有することもできる。この場合、図14のステップST210における判断にこのメッセージID割り当て情報を利用することができ、判断を確実に行うことができる。すなわち、例えば、アプリケーション部210aが生成したデータが受信したメッセージのアプリケーションデータを更新したものであり、既に他の実行手段に割り当てられたメッセージIDが含まれていれば、受信したメッセージが他の実行手段がトリガとなったメッセージであることの判定が容易となる。
正常動作時通信回数テーブル510にはスレーブ実行手段がトリガとなる処理においても対応付けたメッセージIDとマスター実行手段100に最終送信される時のCPU間通信回数との情報も用意しておく。
また、本実施の形態におけるスレーブ実行手段200aの構成は、分散システムに接続されるスレーブ実行手段すべてについて同様に構成することもできる。これにより、いずれのスレーブ実行手段もスレーブトリガ処理を行うことが可能となり、分散システムのより精細な解析が可能となる。
あるいは、1つ以上幾つかのスレーブ実行手段を選択して本実施の形態におけるスレーブ実行手段200aと同様の構成とすることもできる。これにより、特定のスレーブ実行手段がトリガ処理を行うようにすることができ、必要なスレーブ実行手段からの処理に絞った精細な解析を効率よく行うことができる。
また、本実施の形態におけるスレーブ実行手段200aの構成は、分散システムに接続されるスレーブ実行手段すべてについて同様に構成することもできる。これにより、いずれのスレーブ実行手段もスレーブトリガ処理を行うことが可能となり、分散システムのより精細な解析が可能となる。
あるいは、1つ以上幾つかのスレーブ実行手段を選択して本実施の形態におけるスレーブ実行手段200aと同様の構成とすることもできる。これにより、特定のスレーブ実行手段がトリガ処理を行うようにすることができ、必要なスレーブ実行手段からの処理に絞った精細な解析を効率よく行うことができる。
本実施の形態によれば、スレーブ実行手段がトレースのトリガとした分散システムの動作を実現することができる。また、本実施の形態においてもマスター実行手段100にてトレースデータを集約して保存することができる。また、解析に必要なトレースデータに絞ってトレースデータを発生して保存することができ、分散システムのきめ細かな解析を可能にする。さらに、トレースデータ保存に必要となる記憶領域の一層の削減が可能となる。
実施の形態6.
以上の実施の形態においては、マスター実行手段100が他の実行手段から送信されたメッセージデータを受信したときに、エラー状態検出部140にてメッセージデータのCPU間通信回数が不正と判断されたメッセージのトレースデータのみを保存している。本実施の形態では、マスター実行手段100においてエラー状態検出部140においてエラー判定を行なわず、受信したメッセージデータのトレースデータをすべて保存するものである。
以上の実施の形態においては、マスター実行手段100が他の実行手段から送信されたメッセージデータを受信したときに、エラー状態検出部140にてメッセージデータのCPU間通信回数が不正と判断されたメッセージのトレースデータのみを保存している。本実施の形態では、マスター実行手段100においてエラー状態検出部140においてエラー判定を行なわず、受信したメッセージデータのトレースデータをすべて保存するものである。
マスター実行手段100で準備可能なバッファ600の容量が十分に大きい場合はこのような構成を取ることも可能である。
このように、マスター実行手段100でエラー判定を実施することなく、受信したメッセージデータのトレースデータをすべて保存することで、ユーザはエラーの発生の有無にかかわらずマスター実行手段100が受信したすべてのメッセージをチェックし、分散システムの動作を詳細に解析することが可能となり、正常時の動作も含めた処理を解析することにより、システムの動作解析の精度を向上できる。
このように、マスター実行手段100でエラー判定を実施することなく、受信したメッセージデータのトレースデータをすべて保存することで、ユーザはエラーの発生の有無にかかわらずマスター実行手段100が受信したすべてのメッセージをチェックし、分散システムの動作を詳細に解析することが可能となり、正常時の動作も含めた処理を解析することにより、システムの動作解析の精度を向上できる。
100 マスター実行手段、110、210a、210b アプリケーション部、120 ID付加部、130 CPU間通信回数付加部、140 エラー状態検出部、150 トレースデータ保存部、200a、200b スレーブ実行手段、260a、260b CPU間通信回数更新部、270a、270b 通信回数エラー判定部、280a、280b CPU識別子付加部、290a、290b スレーブトリガ処理部、400 ネットワーク、500、600 バッファ(バッファ)、510 正常動作時通信回数テーブル、 610 トレースデータ、700 トレーストリガ制御部。
Claims (7)
- ネットワークに接続された複数の実行手段を備え、前記複数の実行手段のそれぞれは前記ネットワークを介して他の実行手段にメッセージを送受信し所定の処理を実行する分散システムの動作解析を行うプログラムトレース装置において、
前記複数の実行手段の1つであるマスター実行手段は、前記所定の処理の実行指示データを含む第一のデータを生成する第一のアプリケーション部と、
前記第一のデータに前記実行指示データの処理内容ごとに予め割り当てられたメッセージIDを付加するID付加部と、
前記第一のデータにCPU間通信回数の所定の初期値を付加するCPU間通信回数付加部と、
受信した前記メッセージにおけるCPU間通信回数を正常な処理が行われた場合の所定の値と照合することにより、前記マスター実行手段が前記メッセージを送信してから前記複数の実行手段を経由した前記メッセージを受信するまでの処理においてエラーが発生していたことを検出するエラー状態検出部と、
前記エラー状態検出部の検出結果により、受信した前記メッセージからトレースデータを抽出して保存するトレースデータ保存部とを備え、前記マスター実行手段から送信される前記メッセージは前記第一のデータ、前記メッセージID及び前記CPU間通信回数を含み、
前記複数の実行手段のうち前記マスター実行手段以外であるスレーブ実行手段は、
前記マスター実行手段より前記メッセージを受信した場合、受信した前記メッセージにおける前記第一のデータに格納された前記実行指示データに基づいて所定の処理を実行し第二のデータを生成する第二のアプリケーション部と、
受信した前記メッセージにおける前記CPU間通信回数を更新して設定するCPU間通信回数更新部とを備え、前記スレーブ実行手段から送信される前記メッセージは前記第二のデータ、前記メッセージID及び前記CPU間通信回数を含む、
プログラムトレース装置。 - CPU間通信回数付加部は、メッセージIDごとに、マスター実行手段がスレーブ実行手段に前記メッセージIDを有するメッセージを送信してから前記メッセージを受信するまでの複数の実行手段の間の通信回数として正常な場合の値である正常動作時通信回数のうち最大の値を所定の初期値として設定し、
CPU通信回数更新部は、スレーブ実行手段が受信したメッセージにおけるCPU間通信回数を1減じて更新し、
エラー状態検出部は、受信した前記メッセージにおけるCPU間通信回数が負の値である場合にエラーと判定することを特徴とする請求項1に記載のプログラムトレース装置。 - マスター実行手段は、メッセージIDごとに、前記マスター実行手段がスレーブ実行手段に前記メッセージIDを有するメッセージを送信してから前記メッセージを受信するまでの複数の実行手段の間の通信回数として正常な場合の値である正常動作時通信回数を保持する正常動作時通信回数テーブルを備え、
エラー状態検出部は、前記マスター実行手段が前記メッセージを受信したとき、前記メッセージに含まれるCPU間通信回数と、前記正常動作時通信回数テーブルにおける前記メッセージにおける前記メッセージIDに対する前記正常動作時通信回数とを照合することにより、エラーが発生したことを検出することを特徴とする請求項1に記載のプログラムトレース装置。 - スレーブ実行手段は、受信したメッセージにおけるCPU間通信回数が負の値であるときにエラーと判定する通信回数エラー判定部を備えたことを特徴とする請求項2に記載のプログラムトレース装置。
- 複数の実行手段は、それぞれ個別のCPU識別子を有し、
通信回数エラー判定部がエラーと判定したときに、受信したメッセージに前記スレーブ実行手段に前記メッセージを送信した前記複数の実行手段のいずれかである実行手段が有するCPU識別子および前記スレーブ実行手段が有するCPU識別子を付加して、マスター実行手段に送信することを特徴とする請求項4に記載のプログラムトレース装置。 - スレーブ実行手段は、前記スレーブ実行手段からプログラムのトレースを開始する処理であるスレーブトリガ処理を行うか否かを判定し、前記スレーブトリガ処理を行うと判定した場合には、前記マスター実行手段が初期値を付加する処理に替えて、前記スレーブ実行手段における第二のアプリケーション部が生成した第二のデータに、前記スレーブ実行手段に予め割り当てられたメッセージIDおよびCPU通信回数の所定の初期値を付加するスレーブトリガ処理部を備えたことを特徴とする請求項1に記載のプログラムトレース装置。
- 複数の実行手段のいずれがトレース実行のトリガとなるかを設定するトレーストリガ制御部を備えたことを特徴とする請求項6に記載のプログラムトレース装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012503001A JP5528536B2 (ja) | 2010-03-05 | 2011-02-24 | プログラムトレース装置 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010049254 | 2010-03-05 | ||
JP2010049254 | 2010-03-05 | ||
JP2012503001A JP5528536B2 (ja) | 2010-03-05 | 2011-02-24 | プログラムトレース装置 |
PCT/JP2011/001055 WO2011108232A1 (ja) | 2010-03-05 | 2011-02-24 | プログラムトレース装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011108232A1 JPWO2011108232A1 (ja) | 2013-06-20 |
JP5528536B2 true JP5528536B2 (ja) | 2014-06-25 |
Family
ID=44541902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012503001A Expired - Fee Related JP5528536B2 (ja) | 2010-03-05 | 2011-02-24 | プログラムトレース装置 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP5528536B2 (ja) |
CN (1) | CN102782658B (ja) |
DE (1) | DE112011100807T5 (ja) |
WO (1) | WO2011108232A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201809542D0 (en) * | 2018-06-11 | 2018-07-25 | Nordic Semiconductor Asa | Software-trace message sink peripheral |
WO2021038820A1 (ja) * | 2019-08-30 | 2021-03-04 | 三菱電機株式会社 | データ処理システム、データ処理装置、データ処理方法、及びプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0793182A (ja) * | 1993-09-24 | 1995-04-07 | Nippon Telegr & Teleph Corp <Ntt> | プログラムトレース方法 |
JP2000010939A (ja) * | 1998-06-25 | 2000-01-14 | Sony Corp | 情報処理装置、情報処理システム、および、記録媒体 |
KR100598078B1 (ko) * | 2001-01-05 | 2006-07-10 | 삼성전자주식회사 | 무선 통신기기 및 이를 적용한 무선 통신시스템 및 그통신방법 |
JP2004259154A (ja) * | 2003-02-27 | 2004-09-16 | Nippon Telegr & Teleph Corp <Ntt> | ソフトウェア・コンポーネントの呼出関係トレース方法及びシステム |
WO2008099657A1 (ja) * | 2007-02-14 | 2008-08-21 | Nec Corporation | 半導体集積回路、デバッグ・トレース回路、および半導体集積回路動作観測方法 |
-
2011
- 2011-02-24 CN CN201180012222.XA patent/CN102782658B/zh not_active Expired - Fee Related
- 2011-02-24 JP JP2012503001A patent/JP5528536B2/ja not_active Expired - Fee Related
- 2011-02-24 WO PCT/JP2011/001055 patent/WO2011108232A1/ja active Application Filing
- 2011-02-24 DE DE112011100807T patent/DE112011100807T5/de not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
JPWO2011108232A1 (ja) | 2013-06-20 |
DE112011100807T5 (de) | 2013-01-17 |
CN102782658B (zh) | 2015-03-18 |
CN102782658A (zh) | 2012-11-14 |
WO2011108232A1 (ja) | 2011-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860395B2 (en) | Event processing method, non-transitory computer-readable storage medium for storing program | |
US9946628B2 (en) | Embedding and executing trace functions in code to gather trace data | |
US8381038B2 (en) | Management server and management system | |
US10261716B2 (en) | Programmable display, update processing apparatus, updating method, information processing method, and program stored on computer-readable recording medium | |
JP5512041B2 (ja) | データ処理システムのトレース時のキー割り当て | |
US20150006961A1 (en) | Capturing trace information using annotated trace output | |
EP2811402B1 (en) | Transaction resuming program, information processing apparatus and transaction resuming method | |
JP6249016B2 (ja) | 障害復旧手順生成装置、障害復旧手順生成方法および障害復旧手順生成プログラム | |
CN106933736B (zh) | 一种项目持续集成的方法和系统 | |
CN107300851A (zh) | 一种冗余控制系统的逻辑算法无扰更新方法 | |
CN111190823A (zh) | Ui自动化测试方法、电子装置及计算机可读存储介质 | |
JP5528536B2 (ja) | プログラムトレース装置 | |
CN107729221B (zh) | 线程间消息监控方法、装置、计算机设备和存储介质 | |
CN103294482B (zh) | 用于PWscf并行计算系统的Web服务封装方法以及系统 | |
CN113032224A (zh) | 一种信息采集方法、装置、电子设备及可读存储介质 | |
JP2013125441A (ja) | ソフトウェア管理システム、ソフトウェア検証装置、ソフトウェア管理方法 | |
JP6665576B2 (ja) | 支援装置、支援方法及びプログラム | |
CN106444729A (zh) | 一种基于实时系统的轨迹捕捉系统 | |
US20080141223A1 (en) | Mock source program generation program, method and apparatus | |
JP2012128581A (ja) | 通信コード生成装置および関数利用コンピュータおよび関数公開コンピュータおよびコンピュータシステムおよび通信コード生成方法およびプログラム | |
US9634912B2 (en) | Computer, resource usage calculation method, and resource usage calculation program | |
US11287789B2 (en) | Program development support device, program development support system, program development support method, and non-transitory computer-readable recording medium | |
CN102163168A (zh) | 计算机系统的恢复方法和装置 | |
CN103516561A (zh) | 一种网络系统的调试方法 | |
KR101754334B1 (ko) | 하이퍼바이저를 이용한 로깅 방법 및 그 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131022 |
|
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: 20140318 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140415 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5528536 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |