JP2011028458A - 実行状態監視装置および実行状態監視方法 - Google Patents

実行状態監視装置および実行状態監視方法 Download PDF

Info

Publication number
JP2011028458A
JP2011028458A JP2009172561A JP2009172561A JP2011028458A JP 2011028458 A JP2011028458 A JP 2011028458A JP 2009172561 A JP2009172561 A JP 2009172561A JP 2009172561 A JP2009172561 A JP 2009172561A JP 2011028458 A JP2011028458 A JP 2011028458A
Authority
JP
Japan
Prior art keywords
point
execution
executed
code
monitoring
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.)
Pending
Application number
JP2009172561A
Other languages
English (en)
Inventor
Satoshi Yoshikura
智 芳倉
Kosaku Shibata
耕作 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Original Assignee
Panasonic Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp filed Critical Panasonic Corp
Priority to JP2009172561A priority Critical patent/JP2011028458A/ja
Priority to PCT/JP2010/004206 priority patent/WO2011010427A1/ja
Publication of JP2011028458A publication Critical patent/JP2011028458A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

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)

Abstract

【課題】並列して実行される複数のプログラムが同期して実行されているか否かを判定可能な実行状態監視装置等を提供する。
【解決手段】番号取得部401は、並列して実行される少なくとも2つのプログラムの各々から、少なくとも2つのプログラムが同期して実行されているか否かを確認するための同期位置に対応するポイント番号を取得する。判定部402は、取得された各ポイント番号が所定範囲内の値であるか否かを判定する。判定部402は、各ポイント番号が所定範囲内の値である場合、各ポイント番号に対応する各プログラムが同期して実行されていると判定し、各ポイント番号の少なくとも1つのポイント番号が所定範囲内の値でない場合、各ポイント番号に対応する各プログラムが同期して実行されていないと判定する。
【選択図】図3

Description

本発明は、複数のプログラムの実行状態を監視する実行状態監視装置および実行状態監視方法に関する。
コンピュータにおけるプログラムの実行が正常であるか否かを監視する方式および方法が提案されている。
例えば、特許文献1には、以下の手法により、プログラムの実行が正常であるか否かを監視する。まず、プログラムの一つまたは複数の箇所に数値を示すコードを予め記述(挿入)しておく。そして、プログラムの実行中に実行位置が、コードが記述された箇所になった場合に、コードが示す第一の数値をカウンタにカウントさせる。そして、カウンタがカウントした数値と第二の値との差が所定の数値でない場合に、プログラムが正常に実行されていないと判別する。
特開2008−40973号公報
最近では、マルチタスク等の技術により、複数のプログラムが並列して実行されることが一般的になりつつある。特許文献1に開示されている技術では、並列して実行される複数のプログラムが同期して実行されているか否かを判定することはできない。
本発明は、上述の問題点を解決するためになされたものであって、その目的は、並列して実行される複数のプログラムが同期して実行されているか否かを判定可能な実行状態監視装置等を提供することである。
上述の課題を解決するために、この発明のある局面に従う実行状態監視装置は、並列して実行されるm(2以上整数)個のプログラムの実行状態を監視するための装置である。m個のプログラムのうちの少なくとも2つのプログラムの各々には、該少なくとも2つのプログラムが同期して実行されているか否かを確認するための位置である同期位置にポイント番号が記述されており、実行状態監視装置は、m個のプログラムのうちの少なくとも2つのプログラムの各々から、同期位置に対応するポイント番号を取得する番号取得部と、番号取得部により取得された各ポイント番号が所定範囲内の値であるか否かを判定する判定部とを備え、判定部は、さらに、各ポイント番号が所定範囲内の値である場合、各ポイント番号に対応する各プログラムが同期して実行されていると判定し、各ポイント番号の少なくとも1つのポイント番号が所定範囲内の値でない場合、各ポイント番号に対応する各プログラムが同期して実行されていないと判定する。
すなわち、番号取得部は、並列して実行される少なくとも2つのプログラムの各々から、少なくとも2つのプログラムが同期して実行されているか否かを確認するための位置である同期位置に対応するポイント番号を取得する。判定部は、取得された各ポイント番号が所定範囲内の値であるか否かを判定する。判定部は、各ポイント番号が所定範囲内の値である場合、各ポイント番号に対応する各プログラムが同期して実行されていると判定し、各ポイント番号の少なくとも1つのポイント番号が所定範囲内の値でない場合、各ポイント番号に対応する各プログラムが同期して実行されていないと判定する。
したがって、並列して実行される複数のプログラムが同期して実行されているか否かを判定することができる。
また、mは、実行状態監視装置が監視可能なプログラムの最大数である最大並列度を示すことが好ましい。
また、実行状態監視装置は、さらに、各ポイント番号の少なくとも1つのポイント番号が所定範囲内の値でない場合、エラー信号を出力するエラー出力部を備えることが好ましい。
また、実行状態監視装置は、さらに、ポイント番号が取得された場合、該ポイント番号に対応するコードが実行されたことを示す実行情報を、プログラムに記述されたコードの実行状態を示す実行記録情報に記録する記録更新部を備えることが好ましい。
また、実行状態監視装置は、さらに、取得されたポイント番号に対応する実行情報が、実行記録情報に記録されている場合、エラー信号を出力するエラー出力部を備えることが好ましい。
これにより、複数のプログラムが同期して実行されていないことを認識することができる。
また、実行状態監視装置は、さらに、所定範囲を特定するための値であるインデックス値を記憶するインデックス記憶部を備えることが好ましい。
また、記録更新部は、さらに、所定の条件が満たされる場合、インデックス値と、実行記録情報とを更新することが好ましい。
また、所定の条件は、番号取得部がm個のポイント番号を取得したという条件であることが好ましい。
また、所定範囲は、インデックス値と、該インデックス値に(m−1)を加算した値との範囲であることが好ましい。
また、実行記録情報に記録される実行情報は、ポイント番号からインデックス値を減算した値により特定されることが好ましい。
また、m個のプログラムのうちの少なくとも2つのプログラムにおいて、各同期位置に対応するポイント番号は、グループ化されることが好ましい。
また、実行状態監視装置は、さらに、グループ化された各ポイント番号のうち、値が最も大きいポイント番号を特定するための最終フラグを取得するフラグ取得部を備えることが好ましい。
この発明の他の局面に従う実行状態監視方法は、並列して実行されるm(2以上整数)個のプログラムの実行状態を監視するための実行状態監視装置が行う。m個のプログラムのうちの少なくとも2つのプログラムの各々には、該少なくとも2つのプログラムが同期して実行されているか否かを確認するための位置である同期位置にポイント番号が記述されており、実行状態監視方法は、m個のプログラムのうちの少なくとも2つのプログラムの各々から、同期位置に対応するポイント番号を取得する番号取得ステップと、番号取得ステップにより取得された各ポイント番号が所定範囲内の値であるか否かを判定する判定ステップと、各ポイント番号が所定範囲内の値である場合、各ポイント番号に対応する各プログラムが同期して実行されていると判定し、各ポイント番号の少なくとも1つのポイント番号が所定範囲内の値でない場合、各ポイント番号に対応する各プログラムが同期して実行されていないと判定するステップとを備える。
なお、本発明は、このような実行状態監視装置を構成する複数の構成要素の全てまたは一部を、システムLSI(Large Scale Integration:大規模集積回路)として実現してもよい。
また、本発明は、このような実行状態監視方法として実現するだけでなく、このような実行状態監視方法に含まれる各ステップをコンピュータに実行させるプログラムとして実現してもよい。そして、そのようなプログラムを格納するコンピュータ読み取り可能な記録媒体として実現されてもよい。また、当該プログラムは、インターネット等の伝送媒体を介して配信されてもよい。
本発明により、並列して実行される複数のプログラムが同期して実行されているか否かを判定することができる。
第1の実施の形態における実行順序監視システムの構成を示す図である。 オペレーティングシステムにおいて実行されるプログラムの構成の一例を示す図である。 オンチップ・デバッグ回路の構成を示すブロック図である。 機械語で示されるポイントコードおよび最終ポイントコードを説明するための図である。 プログラムの監視を行うための処理のフローチャートである。 ポイントコード実行処理のフローチャートである。 各監視コードが実行された場合の各種値の変化を説明するための図である。 同期判定処理のフローチャートである。 第2の実施の形態における実行順序監視システムの外観を示す図である。 オペレーティングシステムにおいて実行されるプログラムの構成の一例を示す図である。 オンチップ・デバッグ回路の構成を示すブロック図である。 プログラム監視処理のフローチャートである。 各監視コードが実行された場合の各種値の変化を説明するための図である。
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
(実行順序監視システムの構成)
図1は、第1の実施の形態における実行順序監視システム1000の構成を示す図である。
図1を参照して、実行順序監視システム1000は、ホストコンピュータ120と、デバッグユニット130と、ターゲットシステム140とを含む。
ホストコンピュータ120は、プログラマ等のユーザによってデバッグ作業が行われるコンピュータである。ホストコンピュータ120は、パーソナルコンピュータ等の一般的なコンピュータである。
ホストコンピュータ120は、デバッグユニット130を制御する。ホストコンピュータ120では、デバッガ121が実行される。
デバッグユニット130は、デバッグ用のハードウエアである。
ターゲットシステム140は、デバッグ対象となるシステムである。
ターゲットシステム140は、CPU(Central Processing Unit)141と、RAM(Random Access Memory)142と、ROM(Read Only Memory)143と、周辺回路144と、記憶部145と、データバス149とを含む。
CPU141、RAM142、ROM143、周辺回路144、記憶部145は、データバス149に接続されている。
記憶部145は、不揮発性のメモリである。記憶部145は、たとえば、ハードディスクドライブである。記憶部145には、図2に示されるオペレーティングシステム21およびプログラムPG[1],PG[2],PG[3]等が記憶される。すなわち、ターゲットシステム140には、オペレーティングシステム21およびプログラムPG[1],PG[2],PG[3]等がインストールされている。
以下においては、プログラムPG[1],PG[2],PG[3]の各々を、単に、プログラムPGともいう。プログラムPGは、デバッグの対象とされるプログラム(以下、デバッグ対象プログラムという)である。
CPU141は、デバッグインタフェース141Aと、オンチップ・デバッグ回路141Bとを含む。
デバッグインタフェース141Aは、デバッグユニット130とデータ通信するためのインタフェースである。
オンチップ・デバッグ回路141Bは、デバッグ機能を有する回路である。オンチップ・デバッグ回路141Bは、プログラムの実行状態を監視するための実行状態監視装置である。
ユーザは、ホストコンピュータ120で実行されるデバッガ121を使用して、ターゲットシステム140において実行されるデバッグ対象プログラムをデバッグするための操作を行う。
CPU141は、オペレーティングシステム21およびプログラムPG[1],PG[2],PG[3]を実行する。プログラムPG[1],PG[2],PG[3]は、オペレーティングシステム21上で実行される。
オペレーティングシステム21は、非常に短い時間(以下、プログラム実行時間という)の経過毎に、CPU141が実行するプログラムPGを切替える。プログラム実行時間は、例えば、10ミリ秒である。
すなわち、CPU141は、プログラム実行時間の経過毎に、実行するプログラムを、例えば、プログラムPG[1],PG[2],PG[3]の順に切替える。プログラム実行時間において、各プログラムPGの一部が実行される。
つまり、オペレーティングシステム21は、CPU141の処理時間を分割し、分割された処理時間を、各プログラムPGを実行する時間として、CPU141に順番に割り当てることにより、複数のプログラムPGを同時に実行しているようにみせている。
(オンチップ・デバッグ回路の構成)
次に、オンチップ・デバッグ回路141Bの構成について説明する。
図3は、オンチップ・デバッグ回路141Bの構成を示すブロック図である。
図3を参照して、オンチップ・デバッグ回路141Bは、最大並列度レジスタ301と、インデックス更新部302と、インデックスレジスタ303と、実行記録更新部304と、実行記録レジスタ305と、切替え部306と、エラー出力部307と、番号取得部401と、判定部402と、フラグ取得部403とを含む。
最大並列度レジスタ301は、最大並列度m(2以上の整数)を記憶する。最大並列度mは、オンチップ・デバッグ回路141Bが監視可能なプログラムの最大数である。本実施の形態では、最大並列度mは、一例として、3であるとする。
インデックスレジスタ303は、インデックス値k(整数)を記憶する。インデックス値kの初期値は、0である。
実行記録レジスタ305は、実行記録情報MJを記憶する。実行記録情報MJは、プログラムPGに記述された監視コードの実行状態を示す情報である。実行記録情報MJは、複数の実行情報jから構成される。実行情報jは、1ビットで示される情報である。すなわち、実行情報jは0または1を示す。実行記録情報MJは、一例として、8個の実行情報jから構成される。すなわち、実行記録情報MJは、8ビットで示される情報であるとする。
なお、実行記録情報MJは、8個の実行情報jに限定されることなく、例えば、9個以上の実行情報jで構成されてもよい。
ターゲットシステム140がリセットされると、最大並列度レジスタ301、インデックスレジスタ303、実行記録レジスタ305に記憶されている各情報はリセットされ、当該各情報(例えば、インデックス値k)は0を示す。
CPU141がプログラムPGを実行する前に、ユーザは、デバッガ121からターゲットシステム140に実装されたオンチップ・デバッグ回路141Bの最大並列度レジスタ301に記憶されている最大並列度mを、定数値(例えば、3)に設定するための操作を行う。
(監視コードの説明)
デバッグ対象プログラムとしての各プログラムPGには、CPU141が実行するための複数のコード(以下、実行コード)が記述されている。また、各プログラムPGには、該プログラムPG内の1以上の位置に監視コードが予め記述されている(埋め込まれている)。監視コードは、各プログラムPGが、同期して実行されているか否かを監視するためのコードである。
本実施の形態では、監視コードとして、ポイントコードCD[u(整数)]および最終ポイントコードEN[t(整数)]が使用される。すなわち、本実施の形態では、監視コードとして、2種類のコードが使用される。
具体的には、図2に示すように、デバッグ対象プログラムとしての各プログラムPGには、同期位置に、監視コードとしてのポイントコードCD[u]または最終ポイントコードEN[t]が予め記述される。
各プログラムPGにおける当該同期位置は、少なくとも2つのプログラムPGが同期して(ほぼ同時に)実行されているか否かを確認するための位置である。各プログラムPGにおける同期位置に記述される監視コードは、同期グループSG[v(整数)]に属する。
同期グループSG[v]は、m個のプログラムPGのうち、少なくとも2つのプログラムPGの同期を確認するための2以上の監視コードを含むグループである。以下においては、同期グループSG[v]を、単に、同期グループSGとも記載する。
同一の同期グループSGに含まれる複数の監視コードは、対応する各プログラムが正常に実行されている場合、CPU141により、同期して(ほぼ同時に)実行される。
例えば、図2において、プログラムPG[1],PG[2],PG[3]の各々が正常に実行されている場合、同期グループSG[1]に含まれるポイントコードCD[1],CD[2]、最終ポイントコードEN[1]は、同期して実行される。すなわち、同期グループSG[1]に含まれる各コードは、プログラムPG[1],PG[2],PG[3]が同期して実行しているか否かを確認するための監視コードである。
また、例えば、図2において、プログラムPG[2],PG[3]の各々が正常に実行されている場合、同期グループSG[2]に含まれるポイントコードCD[3]、最終ポイントコードEN[2]は、同期して実行される。
以下においては、ポイントコードCD[u]および最終ポイントコードEN[t]を、それぞれ、単に、ポイントコードCDおよび最終ポイントコードENとも記載する。
ポイントコードCDは、文字列「point」と、ポイント番号pn[w(整数)]とを示す。以下においては、ポイント番号pn[w(整数)]を、単に、ポイント番号pnとも記載する。また、最終ポイントコードENは、文字列「epoint」と、ポイント番号pnとを示す。ポイントコードCDおよび最終ポイントコードENを機械語で示す場合、以下のようになる。
図4は、機械語で示されるポイントコードCDおよび最終ポイントコードENを説明するための図である。
図4(A)は、機械語で示されるポイントコードCDを示す図である。図4(A)を参照して、ポイントコードCDは、オペコード、最終フラグFGおよびポイント番号pnを示す。ポイントコードCDの最終フラグFGには、0が設定される。
図4(B)は、機械語で示される最終ポイントコードENを示す図である。図4(B)を参照して、最終ポイントコードENは、オペコード、最終フラグFGおよびポイント番号pnを示す。最終ポイントコードENの最終フラグFGには、1が設定される。
監視コード(ポイントコードCDまたは最終ポイントコードEN)が実行されると、当該監視コードが示すポイント番号pnおよび最終フラグFGは、それぞれ、番号取得部401およびフラグ取得部403に入力される。
(監視コードの規則)
監視コードは以下のような規則に従って、各プログラムPGに記述される(埋め込まれる)とする。
(プログラムの実行順序を監視する場合)
プログラムPGの実行順序の監視対象となる位置(同期位置)に、監視コード(ポイントコードCDまたは最終ポイントコードEN)が記述される。この場合、各監視コードが実行される順に、ポイント番号pnが大きくなるように、各監視コードに対応するポイント番号pnが設定される。
なお、同期グループSGに含まれる監視コードが一つの場合、各ポイント番号pnは、最大並列度mの倍数のうち、使用されていない値の最小値が設定される。
例えば、最大並列度mが3である場合、実行される監視コードの順番に応じて、ポイント番号pnが設定される。例えば、3つの監視コードが実行される場合、1,2,3番目の監視コードにそれぞれ対応する3つのポイント番号pnは、それぞれ、“0”,“3”,“6”に設定される。
(複数のプログラムPG間の同期を確認する場合)
複数のプログラムPG間の同期を確認したい場合は、各プログラムPGにおける前述した同期位置に監視コード(ポイントコードCDまたは最終ポイントコードEN)が記述(挿入)される。実行される各プログラムPGの同期を確認するための複数の監視コードは、グループ化される。グループ化される監視コードの数は、最大並列度m以下に設定される。
例えば、図2において、ポイントコードCD[1],CD[2]、最終ポイントコードEN[1]が、実行される各プログラムPGの同期を確認するための監視コードである場合、ポイントコードCD[1],CD[2]、最終ポイントコードEN[1]は、グループ化される。すなわち、前述した同期グループSG[1]に、ポイントコードCD[1],CD[2]、最終ポイントコードEN[1]は含まれる。
同期グループSGに含まれる複数の監視コードにそれぞれ対応する複数のポイント番号pnは、連続した整数である。当該同期グループSGに対応する複数のポイント番号pnのうちの1つは、最大並列度mの倍数のうち、使用されていない値の最小値(以下、グループ最小値という)である。
この場合、当該同期グループSGに対応する複数のポイント番号pnのうちグループ最小値以外のポイント番号pnは、グループ最小値から1ずつ増加した値が設定される。
また、同期グループSGに含まれる複数の監視コードのうち、値が最も大きいポイント番号pnを示す監視コードは、最終ポイントコードENとされ、それ以外の監視コードは、ポイントコードCDとされる。
例えば、最大並列度mが3であり、同期グループSGのグループ最小値は0であるとする。この場合、例えば、図2の同期グループSG[1]に含まれる監視コードとしてのポイントコードCD[1]が示すポイント番号pn[1]が、グループ最小値“0”である。
この場合、例えば、図2において、同期グループSG[1]に含まれる、監視コードとしてのポイントコードCD[1],CD[2]および最終ポイントコードEN[1]にそれぞれ対応するポイント番号pn[1],pn[2],pn[3]は、それぞれ、“0”,“1”,“2”に設定される。
また、同期グループSG[2]には、監視コードとしてのポイントコードCD[3]および最終ポイントコードEN[2]が含まれる。ポイントコードCD[3]および最終ポイントコードEN[2]にそれぞれ対応するポイント番号pn[4],pn[5]は、それぞれ、“3”,“4”に設定される。
また、同期グループSG[3]には、監視コードとしてのポイントコードCD[4]および最終ポイントコードEN[3]が含まれる。ポイントコードCD[4]および最終ポイントコードEN[3]にそれぞれ対応するポイント番号pn[6],pn[7]は、それぞれ、“6”,“7”に設定される。
“1”を示す最終フラグFGを示す最終ポイントコードENは、同期グループSGに含まれる複数の監視コードのうち、値が最も大きいポイント番号pnを示す監視コードである。つまり、“1”を示す最終フラグFGは、同一の同期グループSGに含まれる複数の監視コードがそれぞれ示す複数のポイント番号のうち、値が最も大きいポイント番号を特定するフラグである。
すなわち、“0”または“1”を示す最終フラグFGは、同一の同期グループSGに含まれる複数の監視コードがそれぞれ示す複数のポイント番号のうち、値が最も大きいポイント番号を特定するためのフラグである。
各同期グループSGの複数の監視コードの実行順序は不問である。ある同期グループSGに含まれる全ての監視コードが実行されたとき、当該同期グループSGの実行は完了したとみなされる。その後、次の同期グループSGに含まれる監視コードが実行されることが期待される。
このように、同期グループSGの前後関係を確認することで、複数のプログラムPG間の同期を確認する。前述した(プログラムの実行順序を監視する場合)の説明は、同期グループSGに含まれる監視コードが一つの場合である。
(監視方法の説明)
原則として、各プログラムPGの記述言語の規則に従って、各プログラムPGに記述されている複数のコードが、周知な技術により、順次実行される。
つまり、プログラムPGにおいて、CPU141により実行されている位置のコードが監視コードでない場合は、従来通り、当該コードに基づく処理が実行される。以下においては、プログラムPGにおいて、CPU141により実行されている位置のコードを、実行位置コードという。
ただし、実行位置コードが監視コード(ポイントコードCDまたは最終ポイントコードEN)である場合、図5のフローチャートに基づいて、プログラムPGの監視を行うための処理が行われる。
以下においては、実行された1以上の監視コードのうち最新の監視コードを、最新実行済監視コードという。すなわち、最新実行済監視コードは、実行位置コードである。
まず、最大並列度mが0である場合(ステップS41でYES)、切替え部306は監視機能が無効であると判断するため何もしない。なお、ステップS41において判定の対象となる値は、0に限定されず、他の値であってもよい。
最大並列度mが0でない場合(ステップS41でNO)、切替え部306は監視機能が有効であると判定し、番号取得部401が、最新実行済監視コードが示すポイント番号pnを取得する(ステップS41N)。番号取得部401は、取得したポイント番号pnを、判定部402へ送信する。
また、フラグ取得部403は、最新実行済監視コードが示す最終フラグFGを取得する。なお、最終フラグFGは、前述したように、同一の同期グループSGに含まれる複数の監視コードがそれぞれ示す複数のポイント番号のうち、値が最も大きいポイント番号を特定するためのフラグである。
フラグ取得部403は、取得した最終フラグFGを、判定部402へ送信する。
その後、以下のポイントコード実行処理が行われる(ステップS42)。
図6は、ポイントコード実行処理のフローチャートである。
なお、ポイントコード実行処理の各処理の詳細な処理は後述する。以下、ポイントコード実行処理の各処理を簡単に説明する。
まず、判定部402が、最新実行済監視コードが示すポイント番号pnが、有効範囲内の値であるか否かを判定する(ステップS501)。ここで、有効範囲は、インデックス値kと、当該インデックス値kに(m−1)を加算した値との範囲である。mは、最大並列度である。
例えば、インデックス値kが0であり、最大並列度mが3である場合、有効範囲は、0〜2の範囲となる。すなわち、有効範囲は、0以上かつ3未満の範囲である。
すなわち、最大並列度mおよびインデックス値kは、有効範囲を特定するための値である。
なお、当該有効範囲は、上記規定に限定されず、例えば、インデックス値kの代わりに他の値を用いた範囲であってもよい。ここで、ポイント番号pnが、有効範囲内の値であるという条件を、ポイント範囲条件という。
ポイント番号pnが有効範囲内の値でない場合、判定部402が、ポイント範囲条件が満たされない旨を、エラー出力部307に通知する。この場合、エラー出力部307は、エラー信号を出力する(ステップS510)。
ポイント番号pnが有効範囲内の値である場合(ポイント範囲条件を満たす場合(ステップS501でYES))、判定部402は、ポイント番号pnからインデックス値kを減算することによりID番号In(整数)を算出する(ステップS502)。
ここで、実行記録情報MJを構成する複数のビット(実行情報j)のうち、最新実行済監視コードに対応する、In番目の桁のビットが1である場合(ステップS503でYES)、判定部402がその旨をエラー出力部307に通知し、エラー出力部307は、エラー信号を出力する(ステップS510)。
詳細は後述するが、実行記録レジスタ305には、実行記録情報MJが記憶される。前述したように、実行記録情報MJは、8個の実行情報jから構成される。前述したように、実行記録情報MJは8ビットで示される情報である。
同期グループSGに含まれる1つの監視コードが実行された場合、当該監視コードに対応するビット(実行情報j)は、1に設定される。これにより、当該監視コードが実行されたことが記録される。実行情報jが1を示す場合、当該実行情報jに対応する監視コードが実行されていることを示す。実行情報jが0を示す場合、当該実行情報jに対応する監視コードが実行されていないことを示す。
つまり、実行された監視コードに対応するビット(実行情報j)がすでに1である場合、当該監視コードが重複して実行されたことを意味するため、エラーであると判断される。
ステップS503では、判定部402が、実行記録情報MJにおける、最新実行済監視コードに対応するIn番目の桁のビットが1であるか否かを判定する。
ステップS504では、判定部402が、最新実行済監視コードが示す最終フラグFGが0であるか否かを判定する。
最新実行済監視コードに対応するIn番目の桁のビットが0であり(ステップS503でNO)、かつ、最新実行済監視コードが示す最終フラグFGが0である場合(ステップS504でYES)、実行記録更新部304は、実行記録情報MJのIn番目の桁のビット(実行情報j)を1に設定する(ステップS505)。
ステップS504の処理で判定される最終フラグFGが0である場合、最新実行済監視コードは、ポイントコードCDである。前述したようにポイントコードCDの最終フラグFGは0である。
最新実行済監視コードが示す最終フラグFGが1の場合(ステップS504でNO)、実行記録更新部304は、実行記録情報MJのIn番目以降の全てのビット(実行情報j)を1に設定する(ステップS506)。
ステップS504の処理で判定される最終フラグFGが1である場合、最新実行済監視コードは、最終ポイントコードENである。前述したように最終ポイントコードENの最終フラグFGは1である。
ステップS507では、判定部402が、実行記録情報MJを構成する全てのビット(実行情報j)が1であるか否かを判定する。
上記処理により、実行記録情報MJを構成する全てのビット(実行情報j)が1である場合(ステップS507でYES)、ステップS508の処理が行われる。
ステップS508では、インデックス更新部302が、インデックス値kに、最大並列度mを加算する。
そして、実行記録更新部304は実行記録情報MJを構成する全てのビット(実行情報j)を0に設定する(ステップS509)。
(複数のプログラムが正常に同期して実行される場合の例)
図7は、図2に示されるプログラムPG[1],PG[2],PG[3]の実行状態を監視する場合において、図5、図6の処理が行われることによる、インデックス値k、実行記録情報MJ等の変化の一例を示す図である。ここで、プログラムPG[1],PG[2],PG[3]は、並列して同時に実行されるとする。
図7において、「同期グループ」とは、図2に示される同期グループSG[1],SG[2],SG[3]を示す。「最新実行済監視コード」とは、前述の最新実行済監視コードである。例えば、最新実行済監視コードが、「epoint 2」である場合、当該最新実行済監視コードは、図2の最終ポイントコードEN[1]である。
図7において、「実行記録情報MJ」とは、実行記録情報MJを構成する8個の実行情報jの値を示す。前述したように、実行情報jは、1ビットで示される。すなわち、実行記録情報MJは8ビットで示される。本実施の形態では、実行記録情報MJのLSB(Least Significant Bit)を0番目の桁とする。また、図7において、8個の実行情報jは、実行記録情報MJの右端から順に、0〜7番目の桁のビットに対応する。
例えば、1番目の桁のビットは、実行記録情報MJを構成する8個の実行情報jのうち、右から2列目の実行情報jである。
初期状態では、インデックス値kは0である。また、初期状態では、実行記録情報MJを構成する8個の実行情報jの各々は0である。また、最大並列度mは3に設定されているとする。
次に、同期グループSG[1]に含まれる全ての監視コードが実行される場合の処理について説明する。
まず、プログラムPG[1]に記述されるポイントコードCD[1](point 0)が実行されるとする。この場合、図5の処理が実行される。図2に示されるように、ポイントコードCD[1]が示すポイント番号pn[1]は0である。この場合、ステップS41Nの処理によりポイント番号pn[1]“0”が取得される。
また、この場合、ステップS501で判定される有効範囲は0〜2である。この場合、ポイント番号pn[1]“0”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[1]が、現時点において監視対象の同期グループSG[1]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[1](0)からインデックス値k(0)を減算することにより、ID番号Inとして、0が算出される。
このとき、実行記録情報MJの0桁(0番目の桁)のビットは0であるため、ポイントコードCD[1]は初めて実行されたと判定される(ステップS503でNO)。
また、ポイントコードCD[1]が示す最終フラグFGは0であるため、ステップS504でYESと判定され、ステップS505の処理が行われる。
ステップS505では、ポイントコードCD[1]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの0桁(0番目の桁)のビットを1に設定する。これにより、図7に示されるように、ポイントコードCD[1](point 0)に対応する、実行記録情報MJのLSBは、1に設定される。
実行記録情報MJにおいて、1に設定されたビット(実行情報j)は、当該ビット(実行情報j)に対応する監視コードが実行されたことを示す。すなわち、ステップS505の処理により、実行記録情報MJに、監視コードが実行されたことを示す実行情報j(1)が記録される。
次に、プログラムPG[2]に記述されるポイントコードCD[2](point 1)が実行されるとする。この場合、図5の処理が実行される。図2に示されるように、ポイントコードCD[2]が示すポイント番号pn[2]は1である。この場合、ステップS41Nの処理によりポイント番号pn[2]“1”が取得される。
また、この場合、ステップS501で判定される有効範囲は0〜2である。この場合、ポイント番号pn[2]“1”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[2]が、現時点において監視対象の同期グループSG[1]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[2](1)からインデックス値k(0)を減算することにより、ID番号Inとして、1が算出される。
このとき、実行記録情報MJの1桁(1番目の桁)のビットは0であるため、ポイントコードCD[2]は初めて実行されたと判定される(ステップS503でNO)。
また、ポイントコードCD[2]が示す最終フラグFGは0であるため、ステップS504でYESと判定され、ステップS505の処理が行われる。
ステップS505では、ポイントコードCD[2]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの1桁(1番目の桁)のビットを1に設定する。これにより、図7に示されるように、ポイントコードCD[2](point 1)に対応する、実行記録情報MJの1番目の桁のビット(右から2列目のビット)は、1に設定される。
次に、プログラムPG[3]に記述される最終ポイントコードEN[1](epoint 2)が実行されるとする。この場合、図5の処理が実行される。図2に示されるように、最終ポイントコードEN[1]が示すポイント番号pn[3]は2である。この場合、ステップS41Nの処理によりポイント番号pn[3]“2”が取得される。
また、この場合、ステップS501で判定される有効範囲は0〜2である。この場合、ポイント番号pn[3]“2”は、有効範囲内の値であるので、判定部402は、最終ポイントコードEN[1]が、現時点において監視対象の同期グループSG[1]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[3](2)からインデックス値k(0)を減算することにより、ID番号Inとして、2が算出される。
このとき、実行記録情報MJの2桁(2番目の桁)のビットは0であるため、最終ポイントコードEN[1]は初めて実行されたと判定される(ステップS503でNO)。
また、最終ポイントコードEN[1]が示す最終フラグFGは1であるため、ステップS504でNOと判定され、ステップS506の処理が行われる。
ステップS506では、実行記録更新部304が、実行記録情報MJの2番目以降の全てのビット(実行情報j)を1に設定する。すなわち、図7に示されるように実行記録情報MJの2桁以降の全てのビットが1に設定される。これにより、最終ポイントコードEN[1]が実行されたことが記録される。
これにより、実行記録情報MJを構成する全てのビットが1になったので、ステップS507でYESと判定され、ステップS508の処理が行われる。
ステップS508では、インデックス更新部302が、インデックス値k(0)に、最大並列度m(3)を加算する。これにより、インデックス値kは、3となる。
そして、実行記録更新部304は実行記録情報MJを構成する全てのビット(実行情報j)を0に設定する(ステップS509)。これで、同期グループSG[1]に含まれる全ての監視コードの実行が正常に完了したとみなされる。
判定部402は、他の処理とは独立して、以下の同期判定処理を行う。同期判定処理は、ステップS501の処理が行われる毎に行なわれる。
図8は、同期判定処理のフローチャートである。
ステップS601では、判定部402が、同期グループSGに含まれるn(2≦n≦m)個の監視コードがそれぞれ示すn個のポイント番号pnの各々が有効範囲内の値であるか否かを判定する。
同期グループSGに含まれるn個の監視コードがそれぞれ示すn個のポイント番号pnの各々が有効範囲内の値である場合、判定部402は、同期グループSGに含まれるn個の監視コードにそれぞれ対応するn個のプログラムPGが同期して実行されていると判定する。
一方、同期グループSGに含まれるn個の監視コードがそれぞれ示すn個のポイント番号pnのうち、少なくとも1つのポイント番号pnが、有効範囲内の値でない場合、判定部402は、同期グループSGに含まれるn個の監視コードにそれぞれ対応するn個のプログラムPGが同期して実行されていないと判定する。
例えば、前述したように、同期グループSG[1]に含まれる3個の監視コードがそれぞれ示す3個のポイント番号pnの各々が、ステップS501の処理により、有効範囲内の値であると判定された場合、判定部402は、同期グループSG[1]に含まれる3個の監視コードにそれぞれ対応する3個のプログラムPGが同期して実行されていると判定する。
また、例えば、同期グループSG[1]に含まれる3個の監視コードがそれぞれ示す3個のポイント番号pnのうち、少なくとも1つのポイント番号pnが、ステップS501の処理により、有効範囲内の値でないと判定された場合、判定部402は、同期グループSG[1]に含まれる3個の監視コードにそれぞれ対応する3個のプログラムPGが同期して実行されていないと判定する。
次に、同期グループSG[2]に含まれる全ての監視コードが実行される場合の処理について説明する。
まず、プログラムPG[3]に記述される最終ポイントコードEN[2](epoint 4)が実行されるとする。この場合、図5の処理が実行される。図2に示されるように、最終ポイントコードEN[2]が示すポイント番号pn[5]は4である。この場合、ステップS41Nの処理によりポイント番号pn[5]“4”が取得される。
この時点において、インデックス値kは3であり、最大並列度mは3である。この場合、前述のステップS501の処理で説明したように、ステップS501で判定される有効範囲は3〜5である。すなわち、有効範囲は、3以上かつ6未満の範囲である。
この場合、ポイント番号pn[5]“4”は、有効範囲内の値であるので、判定部402は、最終ポイントコードEN[2]が、現時点において監視対象の同期グループSG[2]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[5](4)からインデックス値k(3)を減算することにより、ID番号Inとして、1が算出される。
このとき、実行記録情報MJの1桁(1番目の桁)のビットは0であるため、最終ポイントコードEN[2]は初めて実行されたと判定される(ステップS503でNO)。
また、最終ポイントコードEN[2]が示す最終フラグFGは1であるため、ステップS504でNOと判定され、ステップS506の処理が行われる。
ステップS506では、実行記録更新部304が、実行記録情報MJの1番目以降の全てのビット(実行情報j)を1に設定する。すなわち、実行記録情報MJの1桁以降の全てのビットが1に設定される。これにより、最終ポイントコードEN[2]が実行されたことが記録される。
また、これにより、図7に示されるように、最終ポイントコードEN[2](epoint 4)に対応する、実行記録情報MJの1番目のビット以降の全てのビットは、1に設定される。この場合、実行記録情報MJの0番目のビット(右端のビット)のみが0である。
次に、プログラムPG[2]に記述されるポイントコードCD[3](point 3)が実行されるとする。この場合、図5の処理が実行される。図2に示されるように、ポイントコードCD[3]が示すポイント番号pn[4]は3である。この場合、ステップS41Nの処理によりポイント番号pn[4]“3”が取得される。
また、この場合、ステップS501で判定される有効範囲は3〜5である。この場合、ポイント番号pn[4]“3”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[3]が、現時点において監視対象の同期グループSG[2]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[4](3)からインデックス値k(3)を減算することにより、ID番号Inとして、0が算出される。
このとき、実行記録情報MJの0桁(0番目の桁)のビットは0であるため、ポイントコードCD[3]は初めて実行されたと判定される(ステップS503でNO)。
また、ポイントコードCD[2]が示す最終フラグFGは0であるため、ステップS504でYESと判定され、ステップS505の処理が行われる。
ステップS505では、ポイントコードCD[2]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの0桁(0番目の桁)のビットを1に設定する。これにより、図7に示されるように、実行記録情報MJを構成する全てのビットが1になり、ステップS507でYESと判定され、ステップS508の処理が行われる。
ステップS508では、インデックス更新部302が、インデックス値k(3)に、最大並列度m(3)を加算する。これにより、インデックス値kは、6となる。
そして、実行記録更新部304は実行記録情報MJを構成する全てのビット(実行情報j)を0に設定する(ステップS509)。これで、同期グループSG[1]に含まれる全ての監視コードの実行が正常に完了したとみなされる。
なお、ステップS501の処理が行われる毎に、前述した図8の同期判定処理が行われる。
なお、同期グループSG[3]に含まれる監視コードが実行される場合の処理は、前述した同期グループSG[2]に含まれる監視コードが実行される場合の処理と同様なので詳細な説明は繰り返さない。
(複数のプログラムが同期せずに実行される場合の例)
ここまでは、複数のプログラムが正常に同期して実行される場合の処理を説明したが、以下において、プログラムの実行に異常が発生した場合の処理について説明する。
まず、図2の例において、プログラムPG[2]に記述されるポイントコードCD[2](point 1)の実行が完了した後、プログラムPG[2]に記述されるポイントコードCD[3](point 3)が実行されたとする。
この場合、ポイントコードCD[3]が示すポイント番号pn[4]は3であり、当該ポイント番号pn[4](3)は、ステップS501で判定される有効範囲0〜2内の値ではない。すなわち、ポイントコードCD[3]は、現時点において監視対象の同期グループSG[1]に含まれないと判定される。つまり、ステップS501でNOと判定される。
この場合、エラー出力部307は、エラー信号を出力する(ステップS510)。
また、この場合、図8のステップS601の処理により、判定部402は、同期グループSG[1]または同期グループSG[2]に含まれるn個の監視コードにそれぞれ対応するn個のプログラムPGが同期して実行されていないと判定する。
次に、他の例について説明する。
まず、図2の例において、プログラムPG[2]に記述されるポイントコードCD[2](point 1)の実行が完了した後、再度、プログラムPG[2]に記述されるポイントコードCD[2](point 1)が実行されたとする。
この場合、ポイントコードCD[2]が示すポイント番号pn[2]は1であり、当該ポイント番号pn[2](1)は、ステップS501で判定される有効範囲0〜2内の値であるので、判定部402は、ポイントコードCD[2]が、現時点において監視対象の同期グループSG[1]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[2](1)からインデックス値k(0)を減算することにより、ID番号Inとして、1が算出される。
このとき、既にポイントコードCD[2]が実行されているため、実行記録情報MJの1桁(1番目の桁)のビットは1である。そのため、ポイントコードCD[2]は既に実行されていることがわかる。この場合、ステップS503でYESと判定され、エラー出力部307は、エラー信号を出力する(ステップS510)。
以上説明したように、本実施の形態によれば、並列して実行される複数のプログラムが正常に同期して実行されているか否かを判定することができる。
また、ポイント番号pnを示す複数の監視コードはグループ化される。そのため、グループに含まれるポイント番号の数を最大並列度以下の任意の値に変更できるため、監視方法の自由度が増す。
また、本実施の形態によれば、最大並列度mが0である場合、切替え部306は監視機能が無効であると判断するため何もしない。最大並列度mが0でない場合、切替え部306は監視機能が有効であると判定する。
すなわち、ユーザが最大並列度mを設定することにより、プログラムの状態を監視するための処理を行う機能(監視機能)を有効または無効にできる。したがって、プログラム開発時のみ監視機能を有効にして、開発終了後は監視機能を無効にすることができるため、出荷時にプログラムを変更する必要がない。さらに、出荷後であっても、監視機能を有効にすることで不具合検証等に利用することができる。
<第2の実施の形態>
本実施の形態では、第1の実施の形態と比較して、監視コードとして1種類のコードが使用される点が異なる。以下に、第1の実施の形態との相違点を中心に説明し、同一の内容に関しては説明を行わない。
(実行順序監視システムの構成)
図9は、第2の実施の形態における実行順序監視システム1000Aの外観を示す図である。図9を参照して、実行順序監視システム1000Aは、図1の実行順序監視システム1000と比較して、ターゲットシステム140の代わりにターゲットシステム140Aを含む点が異なる。それ以外は、ターゲットシステム140と同様なので詳細な説明は繰り返さない。
ターゲットシステム140Aは、図1のターゲットシステム140と比較して、CPU141の代わりにCPU141Cを含む点が異なる。それ以外は、ターゲットシステム140と同様なので詳細な説明は繰り返さない。
CPU141Cは、図1のCPU141と比較して、オンチップ・デバッグ回路141Bの代わりにオンチップ・デバッグ回路141Dを含む点が異なる。それ以外は、CPU141と同様なので詳細な説明は繰り返さない。
オンチップ・デバッグ回路141Dは、デバッグ機能を有する回路である。オンチップ・デバッグ回路141Dは、プログラムの実行状態を監視するための実行状態監視装置である。
記憶部145には、図10に示されるオペレーティングシステム21およびプログラムPG[11],PG[12],PG[13]等が記憶される。すなわち、ターゲットシステム140Aには、オペレーティングシステム21およびプログラムPG[11],PG[12],PG[13]等がインストールされている。
以下においては、プログラムPG[11],PG[12],PG[13]の各々を、単に、プログラムPGともいう。プログラムPGは、デバッグの対象とされるプログラム(以下、デバッグ対象プログラムという)である。
CPU141Cは、オペレーティングシステム21およびプログラムPG[11],PG[12],PG[13]を実行する。プログラムPG[11],PG[12],PG[13]は、オペレーティングシステム21上で実行される。
オペレーティングシステム21は、非常に短い時間(以下、プログラム実行時間という)の経過毎に、CPU141Cが実行するプログラムPGを切替える。
すなわち、CPU141Cは、プログラム実行時間の経過毎に、実行するプログラムを、例えば、プログラムPG[11],PG[12],PG[13]の順に切替える。プログラム実行時間において、各プログラムPGの一部が実行される。
つまり、オペレーティングシステム21は、CPU141Cの処理時間を分割し、分割された処理時間を、各プログラムPGを実行する時間として、CPU141Cに順番に割り当てることにより、複数のプログラムPGを同時に実行しているようにみせている。
(オンチップ・デバッグ回路の構成)
次に、オンチップ・デバッグ回路141Dの構成について説明する。
図11は、オンチップ・デバッグ回路141Dの構成を示すブロック図である。
図11を参照して、オンチップ・デバッグ回路141Dは、図3のオンチップ・デバッグ回路141Bと比較して、切替え部306およびフラグ取得部403を含まない点が異なる。それ以外は、オンチップ・デバッグ回路141Bと同様なので詳細な説明は繰り返さない。
CPU141CがプログラムPGを実行する前に、ユーザは、デバッガ121からターゲットシステム140に実装されたオンチップ・デバッグ回路141Bの最大並列度レジスタ301に記憶されている最大並列度mを、定数値(例えば、3)に設定するための操作を行う。
(監視コードの説明)
デバッグ対象プログラムとしての各プログラムPGには、CPU141Cが実行するための複数のコード(以下、実行コード)が記述されている。また、各プログラムPGには、該プログラムPG内の1以上の位置に監視コードが予め記述されている(埋め込まれている)。監視コードは、各プログラムPGが、同期して実行されているか否かを監視するためのコードである。
本実施の形態では、監視コードとして、ポイントコードCD[u(整数)]が使用される。すなわち、本実施の形態では、監視コードとして、最終ポイントコードEN[t]は使用されない。
具体的には、図10に示すように、デバッグ対象プログラムとしての各プログラムPGには、前述した同期位置に、監視コードとしてのポイントコードCD[u]が予め記述される。
各プログラムPGにおける同期位置に記述される監視コードは、第1の実施の形態と同様に、同期グループSG[v]に属する。以下においては、同期グループSG[v]を、単に、同期グループSGとも記載する。なお、同期グループSGについては、第1の実施の形態で説明したので詳細な説明は繰り返さない。
以下においては、ポイントコードCD[u]を、ポイントコードCDとも記載する。
ポイントコードCDについては、第1の実施の形態で説明したので詳細な説明は繰り返さない。ポイントコードCDを機械語で示す場合、図4(A)に示されるようになる。
(監視コードの規則)
監視コードとしてのポイントコードCDは以下のような規則に従って、各プログラムPGに記述される(埋め込まれる)とする。
複数のプログラムPG間の同期を確認したい場合は、各プログラムPGにおける前述した同期位置に監視コード(ポイントコードCD)が記述(挿入)される。実行される同期を確認するための複数の監視コードは、グループ化される。本実施の形態では、グループ化される監視コードの数は、最大並列度mと等しい。
例えば、図10において、監視コードとしてのポイントコードCD[11],CD[12],CD[13]は、グループ化される。すなわち、前述した同期グループSG[11]に、ポイントコードCD[11],CD[12],CD[13]は含まれる。
同期グループSGに含まれる複数の監視コードにそれぞれ対応する複数のポイント番号pnは、連続した整数である。当該同期グループSGに対応する複数のポイント番号pnのうちの1つは、最大並列度mの倍数のうち、使用されていない値の最小値(以下、グループ最小値という)である。この場合、当該同期グループSGに対応する複数のポイント番号pnのうちグループ最小値以外のポイント番号pnは、グループ最小値から1ずつ増加した値が設定される。
例えば、最大並列度mが3であり、同期グループSGのグループ最小値は0であるとする。この場合、例えば、図10の同期グループSG[11]に含まれる監視コードとしてのポイントコードCD[1]が示すポイント番号pn[11]が、グループ最小値“0”である。
この場合、例えば、図10において、同期グループSG[11]に含まれる、監視コードとしてのポイントコードCD[11],CD[12],CD[13]にそれぞれ対応するポイント番号pn[11],pn[12],pn[13]は、それぞれ、“0”,“1”,“2”に設定される。
また、同期グループSG[12]には、監視コードとしてのポイントコードCD[14],CD[15],CD[16]が含まれる。ポイントコードCD[14],CD[15],CD[16]にそれぞれ対応するポイント番号pn[14],pn[15],pn[16]は、それぞれ、“3”,“4”,“5”に設定される。
また、同期グループSG[13]には、監視コードとしてのポイントコードCD[17],CD[18],CD[19]が含まれる。ポイントコードCD[17],CD[18],CD[19]にそれぞれ対応するポイント番号pn[17],pn[18],pn[19]は、それぞれ、“6”,“7”,“8”に設定される。
各同期グループSGの複数の監視コードの実行順序は不問である。ある同期グループSGに含まれる全ての監視コードが実行されたとき、当該同期グループSGの実行は完了したとみなされる。その後、次の同期グループSGに含まれる監視コードが実行されることが期待される。
このように、同期グループSGの前後関係を確認することで、複数のプログラムPG間の同期を確認する。
(監視方法の説明)
本実施の形態では、第1の実施の形態と同様、各プログラムPGの記述言語の規則に従って、各プログラムPGに記述されている複数のコードが、周知な技術により、順次実行される。
つまり、プログラムPGにおいて、CPU141Cにより実行されている位置のコードが監視コードでない場合は、従来通り、当該コードに基づく処理が実行される。以下においては、プログラムPGにおいて、CPU141Cにより実行されている位置のコードを、実行位置コードという。
ただし、実行位置コードが監視コード(ポイントコードCD)である場合、プログラムPGの監視を行うための処理(以下、プログラム監視処理という)が行われる。以下においては、実行された1以上の監視コードのうち最新の監視コードを、最新実行済監視コードという。すなわち、最新実行済監視コードは、実行位置コードである。
図12は、プログラム監視処理のフローチャートである。図12において、図6のステップ番号と同じステップ番号の処理は、第1の実施の形態で説明した処理と同様な処理が行なわれるので詳細な説明は繰り返さない。
まず、番号取得部401が、最新実行済監視コードが示すポイント番号pnを取得する(ステップS500)。そして、番号取得部401は、ポイント番号pnを、判定部402へ送信する。
次に、第1の実施の形態と同様に、判定部402が、ポイント番号pnが、有効範囲内の値であるか否かを判定する(ステップS501)。この場合、ステップS501で判定される有効範囲は0〜2である。すなわち、有効範囲は、0以上かつ3未満の範囲である。
ポイント番号pnが有効範囲内の値でない場合、判定部402が、ポイント範囲条件が満たされない旨を、エラー出力部307に通知する。この場合、エラー出力部307は、エラー信号を出力する(ステップS510)。
ポイント番号pnが有効範囲内の値である場合(ポイント範囲条件を満たす場合(ステップS501でYES))、判定部402は、ポイント番号pnからインデックス値kを減算することによりID番号In(整数)を算出する(ステップS502)。
ここで、実行記録情報MJを構成する複数のビット(実行情報j)のうち、最新実行済監視コードに対応するIn番目の桁のビットが1である場合(ステップS503でYES)、判定部402がその旨をエラー出力部307に通知し、エラー出力部307は、エラー信号を出力する(ステップS510)。
最新実行済監視コードに対応するIn番目の桁のビットが0である場合(ステップS503でNO)、実行記録更新部304は、最新実行済監視コードに対応する、実行記録情報MJのIn番目の桁のビット(実行情報j)を1に設定する(ステップS505)。この処理により、最新実行済監視コード(ポイントコードCD)が実行されたことが記録される。
つまり、実行された監視コードに対応するビット(実行情報j)がすでに1である場合、当該監視コードが重複して実行されたことを意味するため、エラーであると判断される。
ステップS507Aでは、判定部402が、実行記録情報MJを構成する全てのビットのうちの下位mビットが1であるか否かを判定する。ここで、mは、最大並列度である。
上記処理により、実行記録情報MJを構成する全てのビットのうちの下位mビットが1である場合(ステップS507AでYES)、ステップS508の処理が行われる。
ステップS508では、インデックス更新部302が、インデックス値kに、最大並列度mを加算する。
そして、実行記録更新部304は実行記録情報MJを構成する全てのビット(実行情報j)を0に設定する(ステップS509)。
本実施の形態においても、第1の実施の形態と同様、ステップS501の処理が行われる毎に、判定部402は、他の処理とは独立して、図8の同期判定処理を行う。
(複数のプログラムが正常に同期して実行される場合の例)
図13は、図10に示されるプログラムPG[11],PG[12],PG[13]の実行状態を監視する場合において、図5、図6の処理が行われることによる、インデックス値k、実行記録情報MJ等の変化の一例を示す図である。ここで、プログラムPG[11],PG[12],PG[13]は、並列して同時に実行されるとする。
図13に示される各項目は、図7で説明したので詳細な説明は繰り返さない。
初期状態では、インデックス値kは0である。また、初期状態では、実行記録情報MJを構成する8個の実行情報jの各々は0である。また、最大並列度mは3に設定されているとする。
次に、同期グループSG[11]に含まれる全ての監視コードが実行される場合の処理について説明する。
まず、プログラムPG[11]に記述されるポイントコードCD[11](point 0)が実行されるとする。この場合、図12のプログラム監視処理が実行される。図10に示されるように、ポイントコードCD[11]が示すポイント番号pn[11]は0である。この場合、ステップS500の処理によりポイント番号pn[11]“0”が取得される。
また、この場合、ステップS501で判定される有効範囲は0〜2である。この場合、ポイント番号pn[11]“0”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[11]が、現時点において監視対象の同期グループSG[11]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[11](0)からインデックス値k(0)を減算することにより、ID番号Inとして、0が算出される。
このとき、実行記録情報MJの0桁(0番目の桁)のビットは0であるため、ポイントコードCD[11]は初めて実行されたと判定される(ステップS503でNO)。
ステップS505では、ポイントコードCD[11]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの0桁(0番目の桁)のビットを1に設定する。これにより、図13に示されるように、ポイントコードCD[11](point 0)に対応する、実行記録情報MJのLSBは、1に設定される。
実行記録情報MJにおいて、1に設定されたビット(実行情報j)は、当該ビット(実行情報j)に対応する監視コードが実行されたことを示す。
次に、プログラムPG[12]に記述されるポイントコードCD[12](point 1)が実行されるとする。この場合、図12のプログラム監視処理が実行される。図10に示されるように、ポイントコードCD[12]が示すポイント番号pn[12]は1である。この場合、ステップS500の処理によりポイント番号pn[12]“1”が取得される。
また、この場合、ステップS501で判定される有効範囲は0〜2である。この場合、ポイント番号pn[12]“1”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[2]が、現時点において監視対象の同期グループSG[11]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[12](1)からインデックス値k(0)を減算することにより、ID番号Inとして、1が算出される。
このとき、実行記録情報MJの1桁(1番目の桁)のビットは0であるため、ポイントコードCD[2]は初めて実行されたと判定される(ステップS503でNO)。
ステップS505では、ポイントコードCD[12]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの1桁(1番目の桁)のビットを1に設定する。これにより、図13に示されるように、ポイントコードCD[12](point 1)に対応する、実行記録情報MJの1番目の桁のビット(右から2列目のビット)は、1に設定される。
次に、プログラムPG[13]に記述されるポイントコードCD[13](point 2)が実行されるとする。この場合、図12のプログラム監視処理が実行される。図10に示されるように、ポイントコードCD[13]が示すポイント番号pn[13]は2である。この場合、ステップS500の処理によりポイント番号pn[13]“2”が取得される。
また、この場合、ステップS501で判定される有効範囲は0〜2である。この場合、ポイント番号pn[13]“2”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[13]が、現時点において監視対象の同期グループSG[11]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[13](2)からインデックス値k(0)を減算することにより、ID番号Inとして、2が算出される。
このとき、実行記録情報MJの2桁(2番目の桁)のビットは0であるため、ポイントコードCD[13]は初めて実行されたと判定される(ステップS503でNO)。
ステップS505では、ポイントコードCD[13]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの2桁(2番目の桁)のビットを1に設定する。
これにより、実行記録情報MJを構成する全てのビットのうちの下位3ビットが1になったので、ステップS507AでYESと判定され、ステップS508の処理が行われる。
ステップS508では、インデックス更新部302が、インデックス値k(0)に、最大並列度m(3)を加算する。これにより、インデックス値kは、3となる。
そして、実行記録更新部304は実行記録情報MJを構成する全てのビット(実行情報j)を0に設定する(ステップS509)。これで、同期グループSG[11]に含まれる全ての監視コードの実行が正常に完了したとみなされる。
次に、同期グループSG[12]に含まれる全ての監視コードが実行される場合の処理について説明する。
まず、プログラムPG[12]に記述されるポイントコードCD[15](point 4)が実行されるとする。この場合、図12のプログラム監視処理が実行される。図10に示されるように、ポイントコードCD[15]が示すポイント番号pn[15]は4である。この場合、ステップS500の処理によりポイント番号pn[15]“4”が取得される。
この時点において、インデックス値kは3であり、最大並列度mは3である。この場合、前述のステップS501の処理で説明したように、ステップS501で判定される有効範囲は3〜5である。すなわち、有効範囲は、3以上かつ6未満の範囲である。
この場合、ポイント番号pn[15]“4”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[15]が、現時点において監視対象の同期グループSG[12]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[15](4)からインデックス値k(3)を減算することにより、ID番号Inとして、1が算出される。
このとき、実行記録情報MJの1桁(1番目の桁)のビットは0であるため、ポイントコードCD[15]は初めて実行されたと判定される(ステップS503でNO)。
ステップS505では、ポイントコードCD[15]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの1桁(1番目の桁)のビットを1に設定する。これにより、図13に示されるように、ポイントコードCD[15](point 4)に対応する、実行記録情報MJの1番目の桁のビット(右から2列目のビット)は、1に設定される。
次に、プログラムPG[13]に記述されるポイントコードCD[16](point 5)が実行されるとする。この場合、図12のプログラム監視処理が実行される。図10に示されるように、ポイントコードCD[16]が示すポイント番号pn[16]は5である。この場合、ステップS500の処理によりポイント番号pn[16]“5”が取得される。
また、この場合、ステップS501で判定される有効範囲は3〜5である。この場合、ポイント番号pn[16]“5”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[16]が、現時点において監視対象の同期グループSG[12]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[16](5)からインデックス値k(3)を減算することにより、ID番号Inとして、2が算出される。
このとき、実行記録情報MJの2桁(2番目の桁)のビットは0であるため、ポイントコードCD[16]は初めて実行されたと判定される(ステップS503でNO)。
ステップS505では、ポイントコードCD[16]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの1桁(1番目の桁)のビットを1に設定する。これにより、図13に示されるように、ポイントコードCD[16](point 5)に対応する、実行記録情報MJの2番目の桁のビット(右から3列目のビット)は、1に設定される。
次に、プログラムPG[11]に記述されるポイントコードCD[14](point 3)が実行されるとする。この場合、図12のプログラム監視処理が実行される。図10に示されるように、ポイントコードCD[14]が示すポイント番号pn[14]は3である。この場合、ステップS500の処理によりポイント番号pn[14]“3”が取得される。
また、この場合、ステップS501で判定される有効範囲は3〜5である。この場合、ポイント番号pn[14]“3”は、有効範囲内の値であるので、判定部402は、ポイントコードCD[14]が、現時点において監視対象の同期グループSG[12]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[14](3)からインデックス値k(3)を減算することにより、ID番号Inとして、0が算出される。
このとき、実行記録情報MJの0桁(0番目の桁)のビットは0であるため、ポイントコードCD[14]は初めて実行されたと判定される(ステップS503でNO)。
ステップS505では、ポイントコードCD[14]が実行されたことを記録するために実行記録更新部304が、実行記録情報MJの0桁(0番目の桁)のビットを1に設定する。
これにより、実行記録情報MJを構成する全てのビットのうちの下位3ビットが1になったので、ステップS507AでYESと判定され、ステップS508の処理が行われる。
ステップS508では、インデックス更新部302が、インデックス値k(3)に、最大並列度m(3)を加算する。これにより、インデックス値kは、6となる。
そして、実行記録更新部304は実行記録情報MJを構成する全てのビット(実行情報j)を0に設定する(ステップS509)。これで、同期グループSG[12]に含まれる全ての監視コードの実行が正常に完了したとみなされる。
なお、ステップS501の処理が行われる毎に、前述した図6の同期判定処理が行われる。この処理により、第1の実施の形態と同様に、同期グループSGに含まれるn個の監視コードにそれぞれ対応するn個のプログラムPGが同期して実行されているか否かが判定される。
なお、同期グループSG[13]に含まれる監視コードが実行される場合の処理は、前述した同期グループSG[12]に含まれる監視コードが実行される場合の処理と同様なので詳細な説明は繰り返さない。
(複数のプログラムが同期せずに実行される場合の例)
ここまでは、複数のプログラムが正常に同期して実行される場合の処理を説明したが、以下において、プログラムの実行に異常が発生した場合の処理について説明する。
まず、図10の例において、プログラムPG[12]に記述されるポイントコードCD[12](point 1)の実行が完了した後、プログラムPG[11]に記述されるポイントコードCD[14](point 3)が実行されたとする。
この場合、ポイントコードCD[14]が示すポイント番号pn[14]は3であり、当該ポイント番号pn[14](3)は、ステップS501で判定される有効範囲0〜2内の値ではない。すなわち、ポイントコードCD[14]は、現在、監視対象の同期グループSG[11]に含まれないと判定される。つまり、ステップS501でNOと判定される。
この場合、エラー出力部307は、エラー信号を出力する(ステップS510)。
また、この場合、図8のステップS601の処理により、判定部402は、同期グループSG[11]または同期グループSG[12]に含まれるn個の監視コードにそれぞれ対応するn個のプログラムPGが同期して実行されていないと判定する。
次に、他の例について説明する。
まず、図10の例において、プログラムPG[12]に記述されるポイントコードCD[12](point 1)の実行が完了した後、再度、プログラムPG[12]に記述されるポイントコードCD[12](point 1)が実行されたとする。
この場合、ポイントコードCD[12]が示すポイント番号pn[12]は1であり、当該ポイント番号pn[12](1)は、ステップS501で判定される有効範囲0〜2内の値であるので、判定部402は、ポイントコードCD[12]が、現時点において監視対象の同期グループSG[12]に含まれると判定する。
この場合、ステップS501でYESと判定され、ステップS502の処理により、ポイント番号pn[12](1)からインデックス値k(0)を減算することにより、ID番号Inとして、1が算出される。
このとき、既にポイントコードCD[12]が実行されているため、実行記録情報MJの1桁(1番目の桁)のビットは1である。そのため、ポイントコードCD[12]は既に実行されていることがわかる。この場合、ステップS503でYESと判定され、エラー出力部307は、エラー信号を出力する(ステップS510)。
以上説明したように、本実施の形態によれば、第1の実施の形態と同様に、並列して実行される複数のプログラムが正常に同期して実行されているか否かを判定することができる。
(補足)
以上、本発明の第1および第2の実施の形態について説明したが、本発明はこれらの実施形態に限られないことは勿論である。
(1)第1および第2の実施の形態において、最大並列度mは、ユーザの操作により設定されるとした。具体的には、ユーザが、デバッガ121からターゲットシステム140(140A)に実装されたオンチップ・デバッグ回路141B(141D)内の最大並列度レジスタ301に記憶されている最大並列度mを、定数値に設定するための操作を行うとしたが、本発明はこれに限定されない。
例えば、デバッガ121に予め最大並列度mを設定しておいて、ターゲットシステム140(140A)がリセットされる際にデバッガ121が自動的に、最大並列度レジスタ301に記憶されている最大並列度mの値を設定しても良い。
また、デバッグ対象のプログラムPGの所定の場所に最大並列度mを設定するコード(以下、設定コードという)を予め埋め込んでおいてもよい。ここで、当該所定の場所は、任意の監視コードが実行される前に確実に実行される場所である。この場合、ターゲットシステム140(140A)が、プログラムPG内の設定コードを実行する際に、最大並列度mが設定される。
(2)第1および第2の実施の形態において、オンチップ・デバッグ回路141B(141D)を使用して実行順序監視システムを構成したが、本発明はこれに限定されない。例えば、オンチップ・デバッグ回路141B(141D)を使用せずにソフトウェアで実現することも可能である。
例えば、デバッグ専用のライブラリとして実現し、各プログラムPGからリンクする方法を実現するためのソフトウェアで実現されてもよい。また、例えば、プログラムPGに監視コードを埋め込まずに、デバッガ121の機能として、ブレークポイントの拡張として実現する方法を実現するためのソフトウェアで実現されてもよい。また、例えば、オペレーティングシステム21に同様の機能を持つシステムコールを追加する方法を実現するためのソフトウェアで実現されてもよい。
(3)第1および第2の実施の形態において、プログラムPGには、監視コードが予め記述されており(埋め込まれており)、同時にポイント番号も指定するとしたが、本発明はこれに限定されない。
例えば、プログラムPGには監視コードのみを埋め込んでおき、コンパイラは該当箇所にNOP命令を生成する。NOP命令とは、プロセッサ命令の一つで、何もしないことを表す。デバッグを行なう際に、ユーザは、デバッガ121を使用して、監視したい監視コードのみが有効になるように実行順序とグループを指定する。こうすることで、ポイント番号pnの指定や監視コードの種類の指定を自動化することができる。
(4)第1および第2の実施の形態では、エラー発生時はエラー信号を出力するようにしたが、本発明はこれに限定されない。
例えば、エラー発生時にプログラムPGの実行を強制的に停止するようにすれば、エラー発生の要因をデバッグすることができる。つまり、最大並列度mと、直前に実行された監視コードに対応するポイント番号pnと、インデックス値kとを参照すれば、監視コードが現時点において監視対象の同期グループSGに含まれているかどうかを知ることができる。
また、直前に実行された監視コードに対応するポイント番号pnと実行記録情報MJを参照すれば、現時点において監視対象の同期グループSGに含まれる複数の監視コードのうち、どの監視コードが実行されたのかを知ることができる。さらに、直前に実行された監視コードが重複して実行されたかどうかを知ることもできる。
(5)また、上記のオンチップ・デバッグ回路141B(141D)を構成する複数の構成要素の全てまたは一部は、回路等のハードウエアで構成されてもよい。また、上記のオンチップ・デバッグ回路141B(141D)を構成する構成要素の全てまたは一部は、CPU(Central Processing Unit)等により実行されるプログラムのモジュールであってもよい。
(6)また、本発明は、オンチップ・デバッグ回路141B(141D)が備える特徴的な構成部の動作をステップとする実行状態監視方法として実現してもよい。また、そのような実行状態監視方法に含まれるステップをコンピュータに実行させるプログラムとして実現してもよい。そして、そのようなプログラムを格納するコンピュータ読み取り可能な記録媒体として実現されてもよい。また、当該プログラムは、インターネット等の伝送媒体を介して配信されてもよい。
(7)また、上記のターゲットシステム140(140A)を構成する複数の構成要素の全てまたは一部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されてもよい。
(8)また、本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を第1および第2の実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明は、並列して実行される複数のプログラムが同期して実行されているか否かを判定可能な実行状態監視装置として、利用することができる。
本発明にかかる実行状態監視装置は、複数のプログラムの実行状態を監視し、プログラム間の同期を確認することができるので、同時に実行される複数のプログラムのデバッグを支援するデバッグシステム等において有用である。
21 オペレーティングシステム
120 ホストコンピュータ
121 デバッガ
130 デバッグユニット
140,140A ターゲットシステム
141,141C CPU
141A デバッグインタフェース
141B,141D オンチップ・デバッグ回路
142 RAM
143 ROM
144 周辺回路
301 最大並列度レジスタ
302 インデックス更新部
303 インデックスレジスタ
304 実行記録更新部
305 実行記録レジスタ
306 切替え部
307 エラー出力部
401 番号取得部
402 判定部
403 フラグ取得部
1000,1000A 実行順序監視システム
CD ポイントコード
EN 最終ポイントコード
PG プログラム

Claims (13)

  1. 並列して実行されるm(2以上整数)個のプログラムの実行状態を監視するための実行状態監視装置であって、
    前記m個のプログラムのうちの少なくとも2つのプログラムの各々には、該少なくとも2つのプログラムが同期して実行されているか否かを確認するための位置である同期位置にポイント番号が記述されており、
    前記m個のプログラムのうちの少なくとも2つのプログラムの各々から、前記同期位置に対応する前記ポイント番号を取得する番号取得部と、
    前記番号取得部により取得された各前記ポイント番号が所定範囲内の値であるか否かを判定する判定部とを備え、
    前記判定部は、さらに、各前記ポイント番号が前記所定範囲内の値である場合、各前記ポイント番号に対応する各プログラムが同期して実行されていると判定し、各前記ポイント番号の少なくとも1つのポイント番号が前記所定範囲内の値でない場合、各前記ポイント番号に対応する各プログラムが同期して実行されていないと判定する、
    実行状態監視装置。
  2. mは、前記実行状態監視装置が監視可能なプログラムの最大数である最大並列度を示す、
    請求項1に記載の実行状態監視装置。
  3. 前記実行状態監視装置は、さらに、
    各前記ポイント番号の少なくとも1つのポイント番号が前記所定範囲内の値でない場合、エラー信号を出力するエラー出力部を備える、
    請求項1または2に記載の実行状態監視装置。
  4. 前記実行状態監視装置は、さらに、
    前記ポイント番号が取得された場合、該ポイント番号に対応するコードが実行されたことを示す実行情報を、プログラムに記述されたコードの実行状態を示す実行記録情報に記録する記録更新部を備える、
    請求項1または2に記載の実行状態監視装置。
  5. 前記実行状態監視装置は、さらに、
    取得された前記ポイント番号に対応する前記実行情報が、前記実行記録情報に記録されている場合、エラー信号を出力するエラー出力部を備える、
    請求項4に記載の実行状態監視装置。
  6. 前記実行状態監視装置は、さらに、
    前記所定範囲を特定するための値であるインデックス値を記憶するインデックス記憶部を備える、
    請求項4に記載の実行状態監視装置。
  7. 前記記録更新部は、さらに、所定の条件が満たされる場合、前記インデックス値と、前記実行記録情報とを更新する、
    請求項6に記載の実行状態監視装置。
  8. 前記所定の条件は、前記番号取得部がm個の前記ポイント番号を取得したという条件である、
    請求項7に記載の実行状態監視装置。
  9. 前記所定範囲は、前記インデックス値と、該インデックス値に(m−1)を加算した値との範囲である、
    請求項6〜8のいずれかに記載の実行状態監視装置。
  10. 前記実行記録情報に記録される前記実行情報は、前記ポイント番号から前記インデックス値を減算した値により特定される、
    請求項6〜9のいずれかに記載の実行状態監視装置。
  11. 前記m個のプログラムのうちの少なくとも2つのプログラムにおいて、各前記同期位置に対応するポイント番号は、グループ化される、
    請求項1または2に記載の実行状態監視装置。
  12. 前記実行状態監視装置は、さらに、
    グループ化された各前記ポイント番号のうち、値が最も大きいポイント番号を特定するための最終フラグを取得するフラグ取得部を備える、
    請求項11に記載の実行状態監視装置。
  13. 並列して実行されるm(2以上整数)個のプログラムの実行状態を監視するための実行状態監視装置が行う実行状態監視方法であって、
    前記m個のプログラムのうちの少なくとも2つのプログラムの各々には、該少なくとも2つのプログラムが同期して実行されているか否かを確認するための位置である同期位置にポイント番号が記述されており、
    前記m個のプログラムのうちの少なくとも2つのプログラムの各々から、前記同期位置に対応する前記ポイント番号を取得する番号取得ステップと、
    前記番号取得ステップにより取得された各前記ポイント番号が所定範囲内の値であるか否かを判定する判定ステップと、
    各前記ポイント番号が前記所定範囲内の値である場合、各前記ポイント番号に対応する各プログラムが同期して実行されていると判定し、各前記ポイント番号の少なくとも1つのポイント番号が前記所定範囲内の値でない場合、各前記ポイント番号に対応する各プログラムが同期して実行されていないと判定するステップと
    を備える、実行状態監視方法。
JP2009172561A 2009-07-23 2009-07-23 実行状態監視装置および実行状態監視方法 Pending JP2011028458A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009172561A JP2011028458A (ja) 2009-07-23 2009-07-23 実行状態監視装置および実行状態監視方法
PCT/JP2010/004206 WO2011010427A1 (ja) 2009-07-23 2010-06-24 実行状態監視装置および実行状態監視方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009172561A JP2011028458A (ja) 2009-07-23 2009-07-23 実行状態監視装置および実行状態監視方法

Publications (1)

Publication Number Publication Date
JP2011028458A true JP2011028458A (ja) 2011-02-10

Family

ID=43498908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009172561A Pending JP2011028458A (ja) 2009-07-23 2009-07-23 実行状態監視装置および実行状態監視方法

Country Status (2)

Country Link
JP (1) JP2011028458A (ja)
WO (1) WO2011010427A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019009068A1 (ja) * 2017-07-03 2019-01-10 日立オートモティブシステムズ株式会社 車両制御装置用の検証装置及び車両制御装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3491379B2 (ja) * 1995-04-11 2004-01-26 富士ゼロックス株式会社 情報処理装置及びトレース情報格納方法
JPH11120030A (ja) * 1997-10-21 1999-04-30 Toshiba Corp プログラムのテスト装置及び方法並びにプログラムのテスト用ソフトウェアを記録した記録媒体
JP4037079B2 (ja) * 2000-10-10 2008-01-23 株式会社リコー 画像形成装置、プロセス監視方法およびこの方法をコンピュータに実行させるプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019009068A1 (ja) * 2017-07-03 2019-01-10 日立オートモティブシステムズ株式会社 車両制御装置用の検証装置及び車両制御装置

Also Published As

Publication number Publication date
WO2011010427A1 (ja) 2011-01-27

Similar Documents

Publication Publication Date Title
US7904892B2 (en) Systems and methods for identifying and displaying dependencies
JP2005129053A (ja) フォールトトレラント・マルチコア・マイクロプロセッシング
US20090037888A1 (en) Simulation of program execution to detect problem such as deadlock
US8336032B2 (en) Implementing enhanced template debug
US10635555B2 (en) Verifying a graph-based coherency verification tool
JP5504960B2 (ja) シミュレーション装置及びシミュレーション方法
JP2006318412A (ja) 半導体装置
JP2011008702A (ja) 故障処理装置
WO2011010427A1 (ja) 実行状態監視装置および実行状態監視方法
US8239834B2 (en) Method and system of program development supporting
CN104145249B (zh) 用于调试计算机程序的方法和系统
JP2009223714A (ja) 演算回路及び演算回路の異常解析方法
WO2020262257A1 (ja) バグ同定支援装置、バグ同定支援方法及びプログラム
JP2007058450A (ja) 半導体集積回路
JP5387521B2 (ja) 論理検証シナリオ生成装置、及び、論理検証シナリオ生成プログラム
JP6786449B2 (ja) 半導体装置
JP5545054B2 (ja) デバッグ回路及びデバッグシステム
CN114153750B (zh) 代码检查方法及装置、代码编写方法、电子设备
JP5287427B2 (ja) シンボリックデバッガ、方法およびプログラム
JP2009223861A (ja) 論理検証システム
JP2014154039A (ja) シーケンス監視自動プログラミング装置および自動プログラミング方法
JP2004118518A (ja) シミュレータ、そのシミュレータをコンピュータ読み取り可能に記録した記録媒体
JP2011164730A (ja) Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム
US9342359B2 (en) Information processing system and information processing method
JP2011159115A (ja) シーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラム