JP5269067B2 - プログラム実行装置およびその制御方法 - Google Patents

プログラム実行装置およびその制御方法 Download PDF

Info

Publication number
JP5269067B2
JP5269067B2 JP2010502711A JP2010502711A JP5269067B2 JP 5269067 B2 JP5269067 B2 JP 5269067B2 JP 2010502711 A JP2010502711 A JP 2010502711A JP 2010502711 A JP2010502711 A JP 2010502711A JP 5269067 B2 JP5269067 B2 JP 5269067B2
Authority
JP
Japan
Prior art keywords
program execution
program
request
debugger
execution
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
Application number
JP2010502711A
Other languages
English (en)
Other versions
JPWO2009113273A1 (ja
Inventor
晋司 泉
耕作 柴田
浩一 加藤
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
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2010502711A priority Critical patent/JP5269067B2/ja
Publication of JPWO2009113273A1 publication Critical patent/JPWO2009113273A1/ja
Application granted granted Critical
Publication of JP5269067B2 publication Critical patent/JP5269067B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/3632Software debugging of specific synchronisation aspects

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。)。
図14は、マルチコンピュータデバッガシステムの構成を示すブロック図である。
図14に示すマルチコンピュータデバッガシステムは、複数のプログラムを並行して実行することが可能なプログラム実行装置61と、プログラム実行装置61に接続されているデバッガ11および12と、デバッガ間通信インターフェースであるマルチコンピュータデバッガ73とを備える。
また、プログラム実行装置61は、デバッガ11がデバッグ対象とするプログラムを実行するプログラム実行部62と、デバッガ12がデバッグ対象とするプログラムを実行するプログラム実行部63とを備える。
下記特許文献1に開示されたマルチコンピュータデバッガシステムでは、デバッガ11およびデバッガ12によるプログラム実行要求の同期を図るために、デバッガ間通信インターフェースであるマルチコンピュータデバッガ73を用いている。
次に、マルチコンピュータデバッガシステムにおいて、典型的な動作である「停止」「ブレーク停止」を例に挙げて説明する。
(停止動作)
まず、プログラム実行装置61が複数プログラムを並列に実行している場合に、プログラム実行装置61に接続されているデバッガ11および12の内、例えば1つのデバッガ11が停止要求を行う。
その場合、プログラム実行装置61は、デバッガ11に対応するプログラムのみ、実行を停止する。すなわち、プログラム実行装置61は、プログラム実行部62を停止し、他のプログラム、ここではデバッガ12に対応するプログラムの実行は継続する。または、プログラム実行装置61は、プログラム実行部62を停止し、すべてのプログラムの実行を停止し(ここではデバッガ12に対応するプログラムの実行を停止し)、すべてのデバッガ(デバッガ11およびデバッガ12)を停止状態に遷移する。
(ブレーク停止動作)
また、プログラム実行装置61が複数プログラムを並列に実行している場合に、プログラム実行装置61がブレークを検出する場合、前述の停止と同様、ブレークポイントを検出したプログラムに対応するプログラムのみ実行を停止する。このとき、プログラム実行装置61は、ブレークポイントを検出していない他のプログラムの実行を継続する。または、プログラム実行装置61は、すべてのプログラムの実行を停止し、すべてのデバッガ(デバッガ11およびデバッガ12)を停止状態に遷移する。
特開平8−171498号公報
しかしながら、上記従来技術には下記の問題がある。
プログラム実行装置61では、複数プログラムの同期実行を行うためにプログラム実行装置61にデバッガ間通信インターフェース(マルチコンピュータデバッガ73)を設ける。しかし、プログラム実行装置61に通信インターフェースを設けるために、通信インターフェースの仕様策定から実装、保守などの工数がかかってしまう。さらに、その通信インターフェースに対応するデバッガの種類を増やすたびに工数が増えてしまう。
また、プログラム実行装置61は、複数プログラムの並列実行が可能である。しかし、例えば1つのデバッガ11からの停止要求によって複数実行中のプログラムのうちデバッガ11に対応する1つのプログラムのみ停止され、他のプログラムの実行が継続される場合、メモリまたは変数の値が書き換えられてしまいデバッグの障害になる。また、1つのデバッガ、例えば1つのデバッガ11からの停止要求によって実行中のプログラムがすべて停止される場合、停止要求を行っていないデバッガ12も停止状態に遷移される。そのため、デバッガ12に対して本来なら不必要なデバッグアクセスが発生してしまい、必要なデバッグ作業が迅速に行えない。
さらにまた、ブレークポイントによる停止に関しては、停止要求による停止の場合と同様の問題がある。すなわち、ブレークポイントを検出したプログラムのみが停止される場合、他のプログラムの実行が継続されることによりデバッグの障害が発生してしまう。また、ブレークポイントの検出によってすべてのプログラムの実行が停止される場合、すべてのデバッガが停止状態に遷移することにより不必要なデバッグアクセスが発生してしまう。
また、終了処理に関しては、複数プログラムの間で終了しているか否かを判断するために通信インターフェースを設ける必要があり、実装、保守などの工数がかかってしまう。
また、デバッガの接続に関しては、プログラム実行中にデバッガを接続すると、デバッガによるリセット処理が行われ、メモリまたは変数の値が書き換えられてしまいデバッグの障害になる。
本発明は、上記の課題に着目してなされたものであり、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を提供することを目的とする。
前記従来の課題を解決するために、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、前記複数のデバッガのそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知することを特徴とする。
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにプログラムの同期実行またはプログラムの同期停止を行うことができる。さらに、プログラムの同期停止の場合には、プログラム実行の停止要求を行ったデバッガのみに停止の旨の通知を行うことができるので、デバッガからの不要なデバッグアクセスを抑制することができる。
ここで、前記プログラム実行制御ステップにおいて、前記組み合わせが前記開始要求のみからなる場合、前記プログラム実行部は前記複数のプログラムすべての実行を開始してもよい。
かかる構成によれば、プログラム実行装置が個別のデバッガによる実行要求を受け取ってもすべてのデバッガから実行要求が揃うまでプログラムの実行を保留する。それにより、プログラム実行装置の側でプログラムの実行に関する同期をとることができ、デバッガ間で通信を行うことなくデバッガごとに対応するプログラムを同期実行することが可能となる。
また、前記プログラム実行制御ステップにおいて、前記組み合わせが前記停止要求を含む場合、前記プログラム実行部は前記複数のプログラムすべての実行を停止し、当該停止要求に対応するデバッガのみに対して、プログラムの実行の停止の旨を通知してもよい。
かかる構成によれば、停止要求を行ったデバッガ以外には停止通知をしないので、停止要求を行っていないデバッガは停止状態に遷移しない。そのため、停止要求を行っていないデバッガによる不要なデバッグアクセスの発生を防ぐことができる。
また、前記保持ステップにおいて、前記プログラム実行部が実行中の前記複数のプログラムのいずれかでブレークポイントが検出された場合に、当該プログラムの実行の停止要求を受け付けたとして前記ブレークポイントが検出されたプログラムに対応するデバッガからの停止要求を示すフラグを保持してもよい。
かかる構成によれば、ブレークを検出したプログラムに対応するデバッガ以外はプログラム実行装置から停止通知を受信しないため停止状態に遷移しない。これにより、ブレークを検出したプログラムに無関係なデバッガからの不要なデバッグアクセスの発生を防ぐことができる。
また、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、前記複数のデバッガから個別に当該デバッグと前記プログラム実行装置との接続を切断するための切断要求を受け取り、当該複数のデバッガ毎に切断要求されているか否かを示すフラグを保持する切断要求保持ステップと、前記フラグに示される前記切断要求の組み合わせに基づいて、前記プログラム実行装置を終了させる制御を行う実行終了制御ステップとを含み、前記実行終了制御ステップは、前記フラグから、前記プログラム実行装置に接続されたすべてのデバッガが切断要求しているか否かを判定する切断判定ステップと、前記切断判定ステップにおいて前記プログラム実行装置に接続されたすべてのデバッガが切断要求していると判定される場合に、前記プログラム実行装置を終了させるプログラム実行装置終了ステップとを含むことを特徴とする。
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、前記切断判定ステップに基づいてプログラム実行装置を終了することができる。
また、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するプログラム実行装置制御方法であって、前記プログラム実行部でプログラムが実行されているか否かを示す実行フラグを保持する実行フラグ保持ステップと、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取るリセット受け取りステップと、受け取った前記リセット要求が有効か否かを判定する判定ステップと、前記判定結果に従って前記リセット要求が有効か否かを示すリセットフラグを保持するリセットフラグ保持ステップと、前記リセットフラグと前記実行フラグとに基づいて、前記プログラム実行装置をリセットするリセットステップとを含むことを特徴とする。
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、前記デバッガ判定ステップに基づいてリセット処理を制御し、実行中のプログラムに影響を与えることなくデバッグすることができる。
ここで、前記デバッガ判定ステップにおいて、さらに、前記判定ステップにおいて、前記リセット要求が無効であると判定された場合に、リセット要求が無効となった旨を前記リセット要求に対応する前記デバッガに通知するステップを含んでもよい。
かかる構成によれば、リセット処理が無効となった旨を通知することで、開発者はリセット処理が無効であったことを認識することができる。
ここで、前記判定ステップにおいて、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取った場合に、前記実行フラグの値に関係なく、当該リセット要求を有効と判定してもよい。
かかる構成によれば、開発者が望むタイミングで強制的にリセットすることができる。
ここで、さらに、前記リセットフラグと前記実行フラグとに基づいて、プログラム実行装置のデバッグ資源をリセットする資源リセットステップとを含み、資源リセットステップにおいて、前記リセットフラグにより前記リセット要求が無効であると示され、かつ、前記実行フラグにより前記プログラム実行部でプログラムが実行されていると示される場合に、前記プログラム実行装置のデバッグ資源をリセットしてもよい。
かかる構成によれば、デバッガ接続時にデバッグ資源のみ初期化を行うことでデバッグ資源が不正なまま処理が行われるのを防ぐことができる。
また、本発明のプログラム実行装置は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置であって、前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持部と、前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御部とを備え、前記プログラム実行制御部は、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知することを特徴とする。
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを示す情報、データまたは信号として実現したりすることもできる。
本発明によれば、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を実現することができる。
また、本発明のプログラム実行装置およびその制御方法によれば、デバッガ間に通信インターフェースを設けずに同期実行を実現することができるだけでなく、プログラムを同期停止、同期ブレークさせる際には必要なデバッガだけを停止状態に遷移させることができるため、不必要なデバッグアクセスが発生せずに、デバッグ作業を迅速に行うことができる。
図1は、本発明の実施の形態におけるプログラム実行装置の外観を示す図である。 図2は、実施の形態1におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。 図3は、実施の形態1におけるプログラム実行再開判定ステップS1の処理を示すフローチャートである。 図4は、実施の形態1におけるプログラム停止ステップS2の処理を示すフローチャートである。 図5は、実施の形態1におけるブレーク停止ステップS3の処理を示すフローチャートである。 図6は、実施の形態2におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。 図7は、実施の形態2におけるプログラム実行終了判定ステップS4の処理を示すフローチャートである。 図8は、実施の形態3におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。 図9は、実施の形態3におけるリセット処理判定ステップS5の処理を示すフローチャートである。 図10は、実施の形態3におけるリセット処理判定ステップS6の処理を示すフローチャートである。 図11は、実施の形態3におけるリセット処理判定ステップS7の処理を示すフローチャートである。 図12は、実施の形態3におけるリセット処理判定ステップS8の処理を示すフローチャートである。 図13は、本発明の実施の形態におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。 図14は、マルチコンピュータデバッガシステムの構成を示すブロック図である。
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態におけるプログラム実行装置1の外観を示す図である。プログラム実行装置1は、本体装置1a、表示装置1bおよび入力装置1cを備える。プログラム実行装置1は、単一あるいは複数のプロセッサをシミュレートする。また、プログラム実行装置1は、データ処理装置であり、シミュレータと呼ばれるアプリケーションを実行する。シミュレータは、シミュレートされるプロセッサ上で動作する複数のプログラムを同時に実行することができる。ここで、シミュレータとは、一般的に、現実的に実験することが困難な場合に、その仮想的なモデルを作成して模擬的に実験するハードウェアまたはソフトウェアのことを言う。
なお、本発明における実施の形態のひとつとしてプログラム実行装置1をシミュレータ10として以下説明するが、プログラム実行装置1がプロセッサを実装した評価ボードにであっても発明の実施および効果において変わることはない。
図2は、実施の形態1におけるシミュレータ10およびそれに接続するデバッガの構成を示すブロック図である。
シミュレータ10は、プログラム実行装置制御部2と、プログラム実行部3を備え、デバッガ11、デバッガ12と接続している。
プログラム実行装置制御部2は、デバッガ11からの実行要求を保持する実行要求フラグ13と、デバッガ12からの実行要求を保持する実行要求フラグ14とを備える。
なお、簡単のため、本発明の実施の形態としてデバッガが2つ接続されている構成で説明を行うが、デバッガは2つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部2は、シミュレータ10に接続されているデバッガの数だけ実行要求フラグを持ち、それぞれの実行要求フラグは対応するデバッガからの実行要求フラグを保持する。そのため、シミュレータ10にデバッガが2つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。
実行要求フラグ13は、デバッガ11からの実行要求を保持する。ここで、実行要求フラグ13は、初期値として0が設定されている。実行要求フラグ13は、デバッガ11からの実行要求を受けて、1に設定されることで、デバッガ11からの実行要求を保持する。
また、実行要求フラグ13は、プログラム実行装置制御部2により設定値が変更される。なお、実行要求フラグ14は、実行要求フラグ13と同様であるため説明を省略する。
プログラム実行装置制御部2は、実行要求フラグ13および実行要求フラグ14に示される前記開始要求および停止要求の組み合わせに基づいて、プログラム実行部3の実行の開始または停止の制御を行う。
具体的には、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12からプログラムの実行要求または停止要求を受けてプログラムの実行再開または停止が必要か否かを判定する。また、プログラム実行装置制御部2は、実行中のプログラムでブレークポイントを検出することによりプログラムの停止が必要か否かを判定する。
また、プログラム実行装置制御部2は、プログラムの実行再開またはプログラムの実行停止が必要か否かの判定結果に応じて、プログラム実行部3に対してプログラム実行再開またはプログラム実行停止の指示を行う。
また、プログラム実行装置制御部2は、プログラム実行部3に対してプログラム実行停止の指示を行ったプログラムに対応するデバッガのみに、停止通知を行う。
ここで、プログラム実行装置制御部2は、プログラムの実行再開または停止の判定を実行要求フラグ13および実行要求フラグ14を用いて行う。
具体的には、プログラム実行装置制御部2は、実行要求フラグ13および実行要求フラグ14に設定されている値を参照することで、プログラムの実行再開またはプログラムの停止の判定を行う。例えば、プログラム実行装置制御部2は、実行要求フラグ13および実行要求フラグ14に共に1が設定されていることを確認すれば、プログラム実行部3のプログラムは実行開始できる状態であると判定し、プログラム実行部3でプログラムが実行中でなければプログラムの実行を再開する。
ここで、例えば、プログラム実行部3でプログラムの実行が停止されている場合、かつ、プログラム実行装置制御部2が、実行要求フラグ13に1が設定され、実行要求フラグ14に0が設定されていることを確認する場合、プログラム実行装置制御部2は、実行要求フラグ14に1が設定されるまで、プログラムを実行開始する制御を保留する。すなわち、プログラム実行装置制御部2は、実行要求フラグ14に1が設定されるまで、プログラム実行部3によるプログラムの実行を停止する。
また、例えば、プログラム実行部3でプログラムの実行がされている場合で、かつ、プログラム実行装置制御部2が、実行要求フラグ13または実行要求フラグ14に0が設定されていることを確認する場合、プログラム実行装置制御部2は、プログラム実行部3のプログラムは実行継続できない状態であると判定し、プログラム実行部3でプログラムが実行中であればすべてのプログラムの実行を停止する。
プログラム実行部3は、複数のデバッガ(デバッガ11およびデバッガ12)ごとに対応するプログラムを並列して実行または停止することができる。
また、プログラム実行部3は、プログラム実行装置制御部2の指示に基づいて、プログラムを実行または停止する。
次に、シミュレータ10での典型的な動作である「再開」、「停止」および「ブレーク停止」を例に挙げてデバッガ操作者の操作の流れに従って説明する。
ここで、デバッグ操作者は、複数のデバッガ(デバッガ11およびデバッガ12)をシミュレータ10に接続し、シミュレータ10を用いて複数のプログラムのデバッグを同時に行う。
まず、デバッガ操作者は、デバッガ11およびデバッガ12をシミュレータ10に接続する。
次に、デバッガ操作者は、デバッガ(デバッガ11およびデバッガ12)ごとに対応するプログラムをプログラム実行部3にロードする。
デバッガ操作者が、シミュレータ10においてデバッガ11およびデバッガ12による複数のプログラムの実行を開始する場合、プログラム実行装置制御部2は、デバッガ11またはデバッガ12からプログラムの実行要求を受ける。その場合、プログラム実行装置制御部2は、プログラムの実行要求を受けて、実行再開判定ステップS1を実施する。
また、デバッガ操作者が、シミュレータ10において複数のプログラムのデバッグを行うために単一または複数のプログラム実行停止を行う場合、プログラム実行装置制御部2は、プログラム実行停止ステップS2を実施する。
また、デバッガ操作者が、複数のプログラムのデバッグを行うためにブレークポイントを設定して、プログラム実行部3がプログラム実行中にブレークポイントを検出した場合、プログラム実行装置制御部2は、ブレーク停止ステップS3を実施する。
次に、プログラム実行装置制御部2において実施されるプログラム実行再開判定ステップS1、プログラム実行停止ステップS2およびブレーク停止ステップS3について説明する。
(プログラム実行再開判定ステップ)
まず、プログラム実行再開判定ステップS1について説明する。プログラム実行再開判定ステップS1は、本発明における第1の実施の形態において特徴的なプログラム実行再開判定方法である。
図3は、実施の形態1におけるプログラム実行再開判定ステップS1の処理を示すフローチャートである。
シミュレータ10におけるプログラム実行装置制御部2は、デバッガ11またはデバッガ12からプログラムの実行要求を受けて、プログラム実行再開判定ステップS1を開始する。
まず、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12から実行要求を受け取ったことを記憶する(S101:実行要求受取ステップ)。
ここで、プログラム実行装置制御部2は、デバッガ11またはデバッガ12のいずれのデバッガにより実行要求を受け取ったのかがわかるよう実行要求フラグ13または実行要求フラグ14を用いる。例えば、プログラム実行装置制御部2は、デバッガ11から実行要求を受けたときは実行要求フラグ13を1に、デバッガ12から実行要求を受けたときは実行要求フラグ14を1に設定する。ただし、実行要求フラグ13と実行要求フラグ14の初期値は0とする。
次に、プログラム実行装置制御部2は、すべてのデバッガ(デバッガ11およびデバッガ12)から実行要求を受けているかどうかを判定する(S102:実行要求受理判定ステップ)。
すなわち、プログラム実行装置制御部2は、実行要求フラグ13と実行要求フラグ14との両方に1が設定されているかどうかを確認する。
プログラム実行装置制御部2は、S102において、すべてのデバッガ(デバッガ11およびデバッガ12)から実行要求を受けていると判定する場合、プログラム実行装置制御部2は、プログラム実行部3に対してプログラムの実行開始を指示する(S103:プログラム実行再開ステップ)。
すなわち、プログラム実行装置制御部2は、実行要求フラグ13と実行要求フラグ14との両方に1が設定されていることを確認した場合、プログラム実行部3に対してプログラムの実行開始を指示する。
そして、プログラム実行再開判定ステップS1を終了する。
なお、プログラム実行装置制御部2は、S102において、すべてのデバッガ(デバッガ11およびデバッガ12)から実行要求を受けていないと判定する場合には、プログラム実行部3に対して何も行わずプログラム実行再開判定ステップS1を終了する。
以上のように、プログラム実行装置制御部2は、プログラム実行再開判定ステップS1を実施する。
なお、上述では言及していないが、デバッガ(デバッガ11またはデバッガ12)が、プログラム実行装置1に対して実行要求を行った場合には、プログラム実行装置1は、実際にプログラムを実行するかどうかによらず実行要求を受け取った旨の応答を返すので、デバッガ(デバッガ11またはデバッガ12)はプログラム実行状態に遷移している。
(プログラム停止ステップ)
次に、プログラム実行停止ステップS2について説明する。プログラム実行停止ステップS2は、本発明における第1の実施の形態において特徴的なプログラム実行停止方法である。
図4は、実施の形態1におけるプログラム実行停止ステップS2の処理を示すフローチャートである。
シミュレータ10におけるプログラム実行装置制御部2は、デバッガ11またはデバッガ12からのプログラムの実行停止要求を受けて、プログラム実行停止ステップS2を開始する。
まず、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12からプログラムの実行停止要求を受け取ったかを識別する。
ここで、プログラム実行装置制御部2は、デバッガ11またはデバッガ12のいずれのデバッガから実行停止要求を受け取ったのかを実行要求フラグ13または実行要求フラグ14を用いて識別する。例えば、プログラム実行装置制御部2は、デバッガ11から実行停止要求を受けた場合、実行要求フラグ13を0クリアに設定し、デバッガ12から実行停止要求を受けた場合、実行要求フラグ14を0クリアに設定する。ただし、実行要求フラグ13と実行要求フラグ14との初期値は0である。図3で説明したように、プログラム実行部3でデバッガ11およびデバッガ12に対応するプログラムが実行されているときは、実行要求フラグ13と実行要求フラグ14とは1に設定されている。
次に、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガからの実行要求を無効とする(S201:実行要求無効化ステップ)。
具体的には、プログラム実行装置制御部2は、デバッガ11またはデバッガ12のいずれのデバッガにより停止要求を受け取ったのかを実行要求フラグ13と実行要求フラグ14とで識別し、停止要求を発信したデバッガの実行要求を無効化する。すなわち、プログラム実行装置制御部2は、デバッガ11より停止要求を受け取った場合、デバッガ11に対応する実行要求フラグ13を0クリアし、実行要求フラグ13が0であることを確認して、停止要求を発信したデバッガ11の実行要求を無効化する。そして、実行要求が無効化されたデバッガ11は、その後、実行要求をプログラム実行装置制御部2に発信しても、実行要求フラグ13には反映されない。
次に、プログラム実行装置制御部2は、プログラム実行部3に対してすべてのプログラム実行を停止するよう指示する(S202:プログラム実行停止ステップ)。プログラム実行部3は、プログラム実行装置制御部2からの全プログラム実行の停止指示を受けて、実行しているすべてのプログラムを停止する。
次に、プログラム実行装置制御部2は、停止要求を行ったデバッガに対してのみプログラム実行を停止したことを通知する(S203:プログラム停止通知ステップ)。
そして、プログラム実行停止ステップS2を終了する。
以上のように、プログラム実行装置制御部2は、プログラム実行停止ステップS2を実施する。
プログラム実行装置制御部2は、ステップS203において、停止要求を行ったデバッガにのみプログラム実行停止通知を行うため、停止要求を行ったデバッガ以外は実行状態が維持される。そのため、停止要求を行わなかったデバッガからは不必要なメモリ参照などが発生しない。それにより、プログラム実行装置1は、デバッガ(デバッガ11またはデバッガ12)とプログラム実行装置1との間の通信を削減することができ、停止要求を行ったデバッガ(デバッガ11またはデバッガ12)からの要求を迅速に処理することができる。
さらに、デバッガ操作者が停止操作を行った後、デバッガ11またはデバッガ12からの要求がプログラム実行装置1で迅速に処理されるので、デバッガ操作者の作業の効率化に繋がる。
(ブレーク停止ステップ)
次に、ブレーク停止ステップS3について説明する。ブレーク停止ステップS3は、本発明における実施の形態において特徴的なプログラム実行停止方法である。
図5は、実施の形態1におけるブレーク停止ステップS3の処理を示すフローチャートである。
シミュレータ10におけるプログラム実行装置制御部2は、プログラム実行中にブレークポイントを検出した場合に、ブレーク停止ステップS3を開始する。
まず、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12のどちらに対応するプログラムでブレークポイントを検出したかを識別する。
ここで、プログラム実行装置制御部2は、デバッガ11またはデバッガ12のいずれのデバッガがブレークポイントを検出したプログラムに対応するデバッガであるのかを実行要求フラグ13または実行要求フラグ14を用いて識別する。例えば、プログラム実行装置制御部2は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ11である場合は実行要求フラグ13を0クリアに設定し、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ12である場合は実行要求フラグ14を0クリアに設定する。
次に、プログラム実行装置制御部2は、図4同様に、ブレークポイントを検出したプログラムに対応するデバッガからの実行要求を無効にする(S301:実行要求無効化ステップ)。
例えば、プログラム実行装置制御部2は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ11である場合、デバッガ11に対応する実行要求フラグ13を0クリアする。そして、プログラム実行装置制御部2は、実行要求フラグ13が0であることを確認して、デバッガ11からの実行要求を無効化する。
また、例えば、プログラム実行装置制御部2は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ12である場合、デバッガ12に対応する実行要求フラグ14を0クリアする。そして、プログラム実行装置制御部2は、実行要求フラグ14が0であることを確認して、デバッガ12からの実行要求を無効化する。
次に、プログラム実行装置制御部2は、プログラム実行部3に対してすべてのプログラム実行を停止するよう指示する(S302:プログラム実行停止ステップ)。プログラム実行部3は、プログラム実行装置制御部2からの全プログラム実行の停止指示を受けて、実行しているすべてのプログラムを停止する。
次に、プログラム実行装置制御部2は、ブレークポイントを検出したプログラムに対応するデバッガに対してのみプログラム実行を停止したことを通知する(S303:停止通知ステップ)。
そして、ブレーク停止ステップS3を終了する。
以上のように、プログラム実行装置制御部2は、ブレーク停止ステップS3を実施する。
プログラム実行装置制御部2は、ステップS303において、ブレークが検出されたプログラムに対応するデバッガにのみプログラム実行停止通知を行うため、ブレークが検出されたプログラムに対応するデバッガ以外は実行状態が維持される。そのため、ブレークで停止しなかったデバッガからは不必要なメモリ参照などが発生しない。それにより、プログラム実行装置1は、デバッガ(デバッガ11またはデバッガ12)とプログラム実行装置1と間の通信を削減することができ、ブレークが検出されたプログラムに対応するデバッガ(デバッガ11またはデバッガ12)からの要求を迅速に処理することができる。
さらに、プログラム実行装置1(シミュレータ10)がブレークで停止した後、デバッガ11またはデバッガ12からの要求がプログラム実行装置1で迅速に処理されれば、デバッガ操作者の作業の効率化に繋がる。
以上のように、実施の形態1にかかるプログラム実行装置およびその制御方法は、複数プログラムの同期実行がデバッガ同士の連携なしに可能になり、停止においても不必要なデバッグアクセスが発生しない。
また、実施の形態1にかかるプログラム実行装置およびその制御方法によれば、デバッガの状態とプログラムの実行状態の一貫性にとらわれることなくプログラム実行装置の制御を行うことができる。
また、実施の形態1にかかるプログラム実行装置およびその制御方法によれば、プログラム実行装置が個別のデバッガによる実行要求を受け取ってもすべてのデバッガから実行要求が揃うまでプログラムの実行を保留することにより、プログラム実行装置の側でプログラムの実行に関する同期をとることができ、デバッガ間で通信を行うことなくデバッガごとに対応するプログラムを同期実行することが可能となる。
また、実施の形態1にかかるプログラム実行装置およびその制御方法によれば、停止要求を行ったデバッガ以外には停止通知をしないことで、停止要求を行っていないデバッガは停止状態に遷移しないため、停止要求を行っていないデバッガによる不要なデバッグアクセスの発生を防ぐことができる。
また、実施の形態1にかかるプログラム実行装置およびその制御方法によれば、ブレークを検出したプログラムに対応するデバッガ以外はプログラム実行装置から停止通知を受信しないため停止状態に遷移しない。これにより、ブレークを検出したプログラムに無関係なデバッガからの不要なデバッグアクセスの発生を防ぐことができる。
それにより、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を実現することができる。
さらに、実施の形態1のプログラム実行装置およびその制御方法によれば、デバッガ間に通信インターフェースを設けずに同期実行を実現することができるだけでなく、プログラムを同期停止、同期ブレークさせる際には必要なデバッガだけを停止状態に遷移させることができるため、不必要なデバッグアクセスが発生しないようにしてデバッグ作業を迅速に行うことができる。
(実施の形態2)
上記実施の形態1では、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにプログラム実行装置を制御する態様の一例について説明したが、それに限らない。実施の形態2では、プログラム実行装置を制御する態様として、実施の形態1とは別の態様の一例について説明する。
図6は、実施の形態2におけるシミュレータ10およびそれに接続するデバッガの構成を示すブロック図である。
シミュレータ10は、プログラム実行装置制御部2と、プログラム実行部3を備え、デバッガ11、デバッガ12と接続している。
プログラム実行装置制御部2は、デバッガ11からの接続要求または切断要求を保持する接続要求フラグ21と、デバッガ12からの接続要求または切断要求を保持する接続要求フラグ22とを備える。ここで、切断要求とは、例えばデバッガ11とシミュレータ10との接続を切断するための要求であり、接続要求とは、新たにシミュレータ10に物理的に接続されたデバッガが、シミュレータ10と接続するための要求である。
なお、簡単のため、本発明の実施の形態としてデバッガが2つ接続されている構成で説明を行うが、デバッガは2つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部2は、シミュレータ10に接続されているデバッガの数だけ接続要求フラグを持ち、それぞれの接続要求フラグは対応するデバッガからの接続要求フラグを保持する。そのため、シミュレータ10にデバッガが2つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。
接続要求フラグ21は、デバッガ11からの接続要求または切断要求を保持する。ここで、接続要求フラグ21は、例えば初期値として0が設定されている。
また、接続要求フラグ21は、プログラム実行装置制御部2により設定値が変更される。
すなわち、接続要求フラグ21は、デバッガ11からの接続要求を受けて1に設定され、または切断要求を受けて0に設定されることで、デバッガ11からの接続要求または切断要求を保持する。
なお、接続要求フラグ22は、接続要求フラグ21と同様であるため説明を省略する。
プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12から接続要求または切断要求を受けてプログラムの実行終了が必要か否かを判定する。ここで、プログラムの実行終了とは、プログラム実行部3が実行中のプログラムを終了させることだけでなく、シャットダウンなどシミュレータ10を終了させることも含む。
また、プログラム実行装置制御部2は、プログラムの実行終了が必要か否かの判定結果に応じて、プログラム実行部3に対してプログラムの実行終了の指示を行う。
ここで、プログラム実行装置制御部2は、プログラムの実行終了の判定を接続要求フラグ21および接続要求フラグ22を用いて行う。
具体的には、プログラム実行装置制御部2は、接続要求フラグ21および接続要求フラグ22に設定されている値を参照することで、プログラムの実行終了の判定を行う。例えば、プログラム実行装置制御部2は、接続要求フラグ21および接続要求フラグ22に共に0が設定されていることを確認すれば、プログラム実行終了可能状態であると判定し、プログラムの実行を終了する。
一方、例えば、プログラム実行装置制御部2は、接続要求フラグ21に0が設定され、接続要求フラグ22に1が設定されていることを確認する場合、デバッガ12ではプログラム実行終了不可の状態であると判断できるので、プログラム実行装置制御部2は、接続要求フラグに0が設定されるまで、プログラムを実行終了する制御を保留する。
次に、本発明の実施の形態におけるプログラム実行終了判定ステップS4について説明する。
図7は、実施の形態2におけるプログラム実行終了判定ステップS4の処理を示すフローチャートである。
シミュレータ10におけるプログラム実行装置制御部2は、デバッガ11またはデバッガ12から接続要求または切断要求を受けて、プログラム実行終了判定ステップS4を開始する。
まず、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12から接続要求または切断要求を受け取ったことを記憶する(S401:接続要求または切断要求受取ステップ)。
ここで、プログラム実行装置制御部2は、デバッガ11またはデバッガ12のいずれのデバッガにより接続要求または切断要求を受け取ったのかがわかるよう接続要求フラグ21または接続要求フラグ22を用いる。
例えば、プログラム実行装置制御部2は、デバッガ11から接続要求を受けたときは接続要求フラグ21を1に、デバッガ12から接続要求を受けたときは接続要求フラグ22を1に設定する。反対に、プログラム実行装置制御部2は、デバッガ11から切断要求を受けたときは接続要求フラグ21を0に、デバッガ12から切断要求を受けたときは接続要求フラグ22を0に設定する。ただし、接続要求フラグ21と接続要求フラグ22の初期値は0とする。
次に、プログラム実行装置制御部2は、すべてのデバッガ(デバッガ11およびデバッガ12)から切断要求を受けているかどうかを判定する(S402:切断要求受理判定ステップ)。
すなわち、プログラム実行装置制御部2は、接続要求フラグ21と接続要求フラグ22との両方に0が設定されているかどうかを確認する。
プログラム実行装置制御部2は、S402において、すべてのデバッガ(デバッガ11およびデバッガ12)から切断要求を受けていると判定する場合、プログラム実行装置制御部2は、プログラム実行部3に対してプログラムの実行終了を指示する(S403:プログラム実行終了ステップ)。
すなわち、プログラム実行装置制御部2は、接続要求フラグ21と接続要求フラグ22との両方に0が設定されていることを確認した場合、プログラム実行部3に対してプログラムの実行終了を指示する。
そして、プログラム実行終了判定ステップS4を終了する。
なお、プログラム実行装置制御部2は、S402において、いずれかのデバッガ(デバッガ11もしくはデバッガ12)から接続要求を受けていると判定する場合には、プログラム実行部3に対して何も行わずプログラム実行終了判定ステップS4を終了する。
以上のように、プログラム実行装置制御部2は、プログラム実行終了判定ステップS4を実施する。
以上、実施の形態2によれば、シミュレータ10は、接続されているデバッガ11およびデバッガ12から個別に、接続要求または切断要求を受けて、シミュレータ10に接続されたすべてのデバッガ(デバッガ11およびデバッガ12)から切断要求を受けたか否かを判定する。そして、シミュレータ10は、すべてのデバッガ(デバッガ11およびデバッガ12)から切断要求を受けたと判定した場合に、プログラムの実行を終了する。
このように、実施の形態2にかかるプログラム実行装置およびその制御方法は、プログラムのデバッグが終了したとシミュレータ10(プログラム実行装置1)が判断した時点で、プログラムの実行が自動的に終了されるので、開発者が手動で終了する工数を削減することができる。
以上のように、実施の形態2によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにシミュレータ10のプログラム実行を終了することができる。
(実施の形態3)
図8は、実施の形態3におけるシミュレータ10およびそれに接続するデバッガの構成を示すブロック図である。
シミュレータ10は、プログラム実行装置制御部2と、プログラム実行部3を備え、デバッガ11、デバッガ12と接続している。
プログラム実行装置制御部2は、プログラム実行部3がプログラムを実行したかを保持するプログラム実行フラグ33と、デバッガ11からのリセット要求の有効性を示す情報を保持するリセットフラグ31と、デバッガ12からのリセット要求の有効性を示す情報を保持するリセットフラグ32とを備える。
なお、簡単のため、本発明の実施の形態としてデバッガが2つ接続されている構成で説明を行うが、デバッガは2つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部2は、シミュレータ10に接続されているデバッガの数だけリセットフラグを持ち、それぞれのリセットフラグは、対応するデバッガからのリセット要求に対応する。そのため、シミュレータ10にデバッガが2つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。
リセットフラグ31は、デバッガ11からのリセット要求の有効性を示す情報を保持する。ここで、リセットフラグ31は、初期値として0が設定されており、プログラム実行装置制御部2により設定値が変更される。
例えば、リセットフラグ31は、デバッガ11からのリセット要求を受け、それが有効である場合には1が設定され、またそれが無効である場合は0が設定されることで、デバッガ11からのリセット要求が有効か無効かを示す情報を保持する。
プログラム実行フラグ33は、プログラム実行部3がプログラムを実行したかどうかを示す情報を保持する。ここで、プログラム実行フラグ33は、初期値として0が設定されており、プログラム実行装置制御部2により設定値が変更される。また、プログラムを実行したかどうかというのは、プログラムの実行中だけでなく、プログラムを実行して終了したかどうかまでも含んでいる。
例えば、プログラム実行フラグ33は、プログラム実行部3がプログラムを実行したときには1が設定される。
なお、リセットフラグ32は、リセットフラグ31と同様であるため説明を省略する。
プログラム実行装置制御部2は、シミュレータ10にデバッガを新たに(または再度)接続する際に、そのデバッガからリセット要求を受けて、リセット処理が必要か否かを判定する。ここで、リセット処理とは、プログラム実行装置1(ここではシミュレータ10)を再び始動の状態に戻す処理のことである。
また、プログラム実行装置制御部2は、リセット処理が必要か否かの判定結果に応じて、リセット処理を行う。
ここで、プログラム実行装置制御部2は、リセット処理の判定をプログラム実行フラグ33、リセットフラグ31およびリセットフラグ32を用いて行う。
具体的には、プログラム実行装置制御部2は、プログラム実行フラグ33およびリセット要求を出している例えばデバッガ11に対応するリセットフラグ31の値を参照することで、リセット処理の判定を行う。
そして、例えばプログラム実行装置制御部2は、プログラム実行フラグ33に1、リセットフラグ31に0が設定されていることを確認すれば、リセット処理を行わずプログラムの実行を続行する。一方、リセットフラグ31に1が設定されていることを確認すれば、リセット処理を行いプログラムの実行を続行する。
なお、リセットフラグ32に対してもリセットフラグ31と同様である。
次に、本実施の形態3におけるリセット処理判定ステップS5について説明する。
図9は、本発明の実施の形態3におけるリセット処理判定ステップS5の処理を示すフローチャートである。
シミュレータ10におけるプログラム実行装置制御部2は、デバッガ11またはデバッガ12からリセット要求を受けて、リセット処理判定ステップS5を開始する。
まず、プログラム実行装置制御部2は、シミュレータ10に接続されたデバッガ11またはデバッガ12からリセット要求を受け取ったことを記憶する(S501:リセット要求受取ステップ)。
次に、プログラム実行装置制御部2は、プログラム実行フラグ33を用いてプログラムが実行されたかどうかを判定する(S502:プログラム実行判定ステップ)。
すなわち、プログラム実行装置制御部2は、プログラム実行フラグ33に1が設定されているかどうかを確認する。
プログラム実行装置制御部2は、プログラム実行判定ステップS502において、すでにプログラムが実行されていると判定した場合、何も行わずリセット処理判定ステップS5を終了する。
すなわち、プログラム実行装置制御部2は、プログラム実行フラグ33に1が設定されていることを確認した場合、何も行わずリセット処理判定ステップS5を終了する。
反対に、プログラム実行装置制御部2は、プログラム実行判定ステップS502において、プログラムが実行されていないと判定する場合には、プログラム実行装置制御部2は、リセット処理を指示する(S503:リセット処理実行ステップ)。
そして、リセット処理判定ステップS5を終了する。
なお、プログラム実行装置制御部2は、プログラム実行判定ステップS502において、デバッガ11からの受けたリセット要求が有効であるかどうかを判定し、それが有効の場合には1を設定してリセット処理判定ステップS5に進む。反対に、それが無効である場合には0を設定し、リセット処理判定ステップS5を終了する。
以上のように、プログラム実行装置制御部2は、リセット処理判定ステップS5を実施する。
このようにして、プログラム実行中に新たにデバッガが接続された場合でも、すでに実行しているプログラムに影響を与えることなくデバッグを継続することができる。
(変形例1)
次に、本発明の実施の形態におけるリセット処理判定ステップS6について説明する。
図10は、実施の形態3におけるリセット処理判定ステップS6の処理を示すフローチャートである。
リセット処理判定ステップS6は上記のリセット処理判定ステップS5にリセット処理無効通知ステップS604を追加したものである。なお、図9と同様の要素には同一の符号を付しており、詳細な説明は省略する。
プログラム実行装置制御部2は、プログラム実行判定ステップS502において、すでにプログラムが実行されていると判定されたとき、リセット要求を出しているデバッガ(例えばデバッガ11)に対してリセット処理が無効であったことを通知する(S604:無効通知ステップ)。
その後、リセット処理判定ステップS6を終了する。
以上のように、プログラム実行装置制御部2は、リセット処理判定ステップS6を実施する。
このように、リセット処理が無効となった旨をデバッガに通知することにより、開発者がリセット処理が無効であったことを認識し、シミュレータ10(プログラム実行装置1)の動作を把握することができる。
(変形例2)
次に、本発明の実施の形態におけるリセット処理判定ステップS7について説明する。
図11は、実施の形態3におけるリセット処理判定ステップS7の処理を示すフローチャートである。
リセット処理判定ステップS7は前記リセット処理判定ステップS5にリセット処理受付判定ステップS704を追加したものである。なお、図9と同様の要素には同一の符号を付しており、詳細な説明は省略する。
プログラム実行装置制御部2は、プログラム実行判定ステップS502において、すでにプログラムが実行されていると判定されたとき、リセット処理を受け付けるかの判定を行う。
すなわち、プログラム実行装置制御部2は、リセットフラグ31に1が設定されていることを確認した場合、リセット処理実行ステップS503を行う。そして、リセット処理実行ステップS503を実施後、リセット処理判定ステップS7を終了する。
反対に、プログラム実行装置制御部2は、リセットフラグ31に0が設定されていることを確認した場合、何も行わずリセット処理判定ステップS7を終了する。
なお、リセットフラグ32は、リセットフラグ31と同様であるため説明を省略する。
以上のように、プログラム実行装置制御部2は、リセット処理判定ステップS7を実施する。
それにより、プログラム実行装置制御部2は、新たに接続されたデバッガ11またはデバッガ12からリセット要求を受けると、プログラム実行フラグ33の状態に関わることなく、開発者が望むタイミングで強制的にリセットすることができる。
(変形例3)
次に、本発明の実施の形態におけるリセット処理判定ステップS8について説明する。
図12は、実施の形態3におけるリセット処理判定ステップS8の処理を示すフローチャートである。
リセット処理判定ステップS8は、前記リセット処理判定ステップS5にデバッグ資源リセット処理実行ステップS804を追加したものである。なお、図9と同様の要素には同一の符号を付しており、詳細な説明は省略する。
プログラム実行装置制御部2は、プログラム実行判定ステップS502において、すでにプログラムが実行されていると判定されたとき、デバッグ資源のリセット処理を行う。
すなわち、プログラム実行装置制御部2は、プログラム実行フラグ33に1が設定されていることを確認した場合、デバッグ資源リセット処理実行ステップS804を行う。そして、デバッグ資源リセット処理実行ステップS804の実施後にリセット処理判定ステップS8を終了する。
以上のように、プログラム実行装置制御部2は、リセット処理判定ステップS7を実施する。
このように、プログラム実行装置制御部2がプログラム実行中に接続したデバッガのデバッグ資源のみ初期化を行うことで、デバッグ資源が不正なまま処理が行われるのを防ぐことができる。
以上、実施の形態2によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにリセット処理またはデバッグ資源の初期化などを実施することができる。
以上のように、本発明によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにプログラム実行装置を制御することのできるプログラム実行装置およびその方法を実現できる。
なお、実施の形態1ないし3では、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにプログラム実行装置を制御する態様として説明したが、それに限らない。すなわち、図13に示すように、それをすべて組み合わせた態様も本発明の範囲内に含まれる。ここで、図13は、本発明の実施の形態におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
以上、本発明のプログラム実行装置およびその制御方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
本発明は、プログラム実行装置およびその制御方法に利用でき、特に、複数のプロセッサをシミュレーションするシミュレータまたは複数のプロセッサが実装された評価ボードを備えるプログラム実行装置およびその制御方法またはマルチデバッガでのシステムLSIのシミュレータ制御可能なプログラム実行装置およびその制御方法に利用することができる。
1、61 プログラム実行装置
1a 本体装置
1b 表示装置
1c 入力装置
2 プログラム実行装置制御部
3、62、63 プログラム実行部
10 シミュレータ
11、12 デバッガ
13、14 実行要求フラグ
21、22 接続要求フラグ
31、32 リセットフラグ
33 プログラム実行フラグ
73 マルチコンピュータデバッガ

Claims (11)

  1. 複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、
    前記複数のデバッガのそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、
    前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、
    前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
    ことを特徴とする制御方法。
  2. 前記プログラム実行制御ステップにおいて、前記組み合わせが前記開始要求のみからなる場合、前記プログラム実行部は前記複数のプログラムすべての実行を開始する
    ことを特徴とする請求項1に記載の制御方法。
  3. 前記プログラム実行制御ステップにおいて、前記組み合わせが前記停止要求を含む場合、前記プログラム実行部は前記複数のプログラムすべての実行を停止し、当該停止要求に対応するデバッガのみに対して、プログラムの実行の停止の旨を通知する
    ことを特徴とする請求項2に記載の制御方法。
  4. 前記保持ステップにおいて、前記プログラム実行部が実行中の前記複数のプログラムのいずれかでブレークポイントが検出された場合に、当該プログラムの実行の停止要求を受け付けたとして前記ブレークポイントが検出されたプログラムに対応するデバッガからの停止要求を示すフラグを保持する
    ことを特徴とする請求項3に記載の制御方法。
  5. 複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置であって、
    前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持部と、
    前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御部とを備え、
    前記プログラム実行制御部は、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
    ことを特徴とするプログラム実行装置。
  6. 複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するためのプログラムであって、
    前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、
    前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、
    前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
    ことをコンピュータに実行させるためのプログラム。
  7. 複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、
    前記複数のデバッガから個別に当該デバッと前記プログラム実行装置との接続を切断するための切断要求を受け取り、当該複数のデバッガ毎に切断要求されているか否かを示すフラグを保持する切断要求保持ステップと、
    前記フラグに示される前記切断要求の組み合わせに基づいて、前記プログラム実行装置を終了させる制御を行う実行終了制御ステップとを含み、
    前記実行終了制御ステップは、前記フラグから、前記プログラム実行装置に接続されたすべてのデバッガが切断要求しているか否かを判定する切断判定ステップと、前記切断判定ステップにおいて前記プログラム実行装置に接続されたすべてのデバッガが切断要求していると判定される場合に、前記プログラム実行装置を終了させるプログラム実行装置終了ステップとを含む
    ことを特徴とする制御方法。
  8. 複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するプログラム実行装置制御方法であって、
    前記プログラム実行部でプログラムが実行されているか否かを示す実行フラグを保持する実行フラグ保持ステップと、
    前記プログラム実行装置に接続されたデバッガからリセット要求を受け取るリセット受け取りステップと、
    受け取った前記リセット要求が有効か否かを判定する判定ステップと、
    前記判定結果に従って前記リセット要求が有効か否かを示すリセットフラグを保持するリセットフラグ保持ステップと、
    前記リセットフラグと前記実行フラグとに基づいて、前記プログラム実行装置をリセットするリセットステップとを含む
    ことを特徴とする制御方法。
  9. さらに、
    前記判定ステップにおいて、前記リセット要求が無効であると判定された場合に、リセット要求が無効となった旨を前記リセット要求に対応する前記デバッガに通知するステップを含む
    ことを特徴とする請求項8に記載の制御方法。
  10. 前記判定ステップにおいて、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取った場合に、前記実行フラグの値に関係なく、当該リセット要求を有効と判定する
    ことを特徴とする請求項8に記載の制御方法。
  11. さらに、
    前記リセットフラグと前記実行フラグとに基づいて、プログラム実行装置のデバッグ資源をリセットする資源リセットステップとを含み、
    資源リセットステップにおいて、前記リセットフラグにより前記リセット要求が無効であると示され、かつ、前記実行フラグにより前記プログラム実行部でプログラムが実行されていると示される場合に、前記プログラム実行装置のデバッグ資源をリセットする
    ことを特徴とする請求項8に記載の制御方法。
JP2010502711A 2008-03-14 2009-03-04 プログラム実行装置およびその制御方法 Expired - Fee Related JP5269067B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010502711A JP5269067B2 (ja) 2008-03-14 2009-03-04 プログラム実行装置およびその制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008066593 2008-03-14
JP2008066593 2008-03-14
JP2010502711A JP5269067B2 (ja) 2008-03-14 2009-03-04 プログラム実行装置およびその制御方法
PCT/JP2009/000970 WO2009113273A1 (ja) 2008-03-14 2009-03-04 プログラム実行装置およびその制御方法

Publications (2)

Publication Number Publication Date
JPWO2009113273A1 JPWO2009113273A1 (ja) 2011-07-21
JP5269067B2 true JP5269067B2 (ja) 2013-08-21

Family

ID=41064947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010502711A Expired - Fee Related JP5269067B2 (ja) 2008-03-14 2009-03-04 プログラム実行装置およびその制御方法

Country Status (4)

Country Link
US (1) US8701089B2 (ja)
JP (1) JP5269067B2 (ja)
CN (1) CN101990662B (ja)
WO (1) WO2009113273A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719797B2 (en) * 2010-05-18 2014-05-06 Blackberry Limited System and method for debugging dynamically generated code of an application
CN103309788A (zh) * 2013-07-03 2013-09-18 曙光信息产业(北京)有限公司 系统监控的实现方法和系统调试的实现装置
JP6274174B2 (ja) * 2015-09-29 2018-02-07 コニカミノルタ株式会社 画像処理装置、方法およびプログラム
CN106547700B (zh) * 2016-12-08 2019-08-06 广东小天才科技有限公司 一种程序调试的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588933A (ja) * 1991-09-27 1993-04-09 Hitachi Ltd デバツグ機能を有する並列処理システム
JPH09259002A (ja) * 1996-03-22 1997-10-03 Hitachi Ltd デバッグ支援装置
JP2006079142A (ja) * 2004-09-07 2006-03-23 Fujitsu Ltd マルチプロセッサ装置
JP2008027041A (ja) * 2006-07-19 2008-02-07 Matsushita Electric Ind Co Ltd デバッグシステム及びターゲット装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3159357B2 (ja) 1994-12-16 2001-04-23 日本電気株式会社 マルチコンピュータデバッガ
US6353923B1 (en) * 1997-03-12 2002-03-05 Microsoft Corporation Active debugging environment for debugging mixed-language scripting code
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
US6931631B2 (en) 2001-06-27 2005-08-16 International Business Machines Corporation Low impact breakpoint for multi-user debugging
US7350194B1 (en) * 2001-09-24 2008-03-25 Oracle Corporation Techniques for debugging computer programs involving multiple computing machines
US7210145B2 (en) * 2001-10-15 2007-04-24 Edss, Inc. Technology for integrated computation and communication; TICC
JP4187470B2 (ja) * 2002-06-25 2008-11-26 富士通マイクロエレクトロニクス株式会社 半導体装置の開発支援連携装置及び開発支援方法
EP3798874A1 (en) * 2003-08-26 2021-03-31 Panasonic Intellectual Property Corporation of America Program execution device
US20050050159A1 (en) * 2003-09-03 2005-03-03 Zeev Suraski Remote debugging of web applications
JP2006146758A (ja) 2004-11-24 2006-06-08 Matsushita Electric Ind Co Ltd コンピュータシステム
JP4834983B2 (ja) 2004-12-09 2011-12-14 富士通株式会社 Iceサーバ
JP2006259810A (ja) * 2005-03-15 2006-09-28 Matsushita Electric Ind Co Ltd デバッグ装置
JP4717492B2 (ja) * 2005-04-12 2011-07-06 富士通株式会社 マルチコアモデルシミュレータ
US8589879B2 (en) 2005-06-22 2013-11-19 Nec Corporation Debugging system, debugging method, and program
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8024708B2 (en) * 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588933A (ja) * 1991-09-27 1993-04-09 Hitachi Ltd デバツグ機能を有する並列処理システム
JPH09259002A (ja) * 1996-03-22 1997-10-03 Hitachi Ltd デバッグ支援装置
JP2006079142A (ja) * 2004-09-07 2006-03-23 Fujitsu Ltd マルチプロセッサ装置
JP2008027041A (ja) * 2006-07-19 2008-02-07 Matsushita Electric Ind Co Ltd デバッグシステム及びターゲット装置

Also Published As

Publication number Publication date
CN101990662B (zh) 2014-07-02
CN101990662A (zh) 2011-03-23
US20100332905A1 (en) 2010-12-30
US8701089B2 (en) 2014-04-15
WO2009113273A1 (ja) 2009-09-17
JPWO2009113273A1 (ja) 2011-07-21

Similar Documents

Publication Publication Date Title
EP3352083B1 (en) Debugging method, multi-core processor, and debugging equipment
JP2765411B2 (ja) 仮想計算機方式
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US8752024B2 (en) Resuming a prior debug session
US8495344B2 (en) Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
WO2015123048A1 (en) Device hang detection and recovery
US9372702B2 (en) Non-disruptive code update of a single processor in a multi-processor computing system
US11593241B2 (en) Processor with debug pipeline
TW201633129A (zh) 用於在多核心微控制器中產生跨核心斷點之系統及方法
JP5269067B2 (ja) プログラム実行装置およびその制御方法
JP2008310727A (ja) シミュレーション装置及びシミュレーション方法
US8370556B2 (en) Multi-core data processor
CN103713977A (zh) 一种微处理器ip核比较验证的实现方法
WO2013008326A1 (ja) ソフトウェア検証方法、およびソフトウェア検証システム
JP2001209556A (ja) 検証支援システム
CN115048255A (zh) 一种自动化测试方法、装置,主机及存储介质
US7987065B1 (en) Automatic quality testing of multimedia rendering by software drivers
JP5425445B2 (ja) 処理制御システム、方法及びプログラム
TW201327139A (zh) 節點置換處理方法與使用其之伺服器系統
US7225284B2 (en) Increasing the quantity of I/O decode ranges using SMI traps
JP2007316986A (ja) システムlsi
JP5416257B2 (ja) マルチコアlsi
JP2008112243A (ja) シミュレーションプログラム、並びに、それを生成する装置及び方法及びプログラム
JP2019091116A (ja) 情報処理装置及びその制御方法、並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121126

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: 20130423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130507

R150 Certificate of patent or registration of utility model

Ref document number: 5269067

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees