(57)【要約】従来、複数のデバッガで、複数のプログラムを同期させて実行させる場合、デバッガ間に特別な調停を行うインターフェースが必要だった。本発明では、デバッガにおけるプログラム実行状態と実際のプログラム実行状態が異なる状態を維持するステップを備える制御方法を実施することにより、デバッガからのプログラム実行要求に対して必要に応じてプログラム実行を保留することで、デバッガ間の調停なしにプログラムの同期実行を実現する。
2009113273.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、
前記複数のデバッガのそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、
前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、
前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
ことを特徴とする制御方法。
【請求項２】
前記プログラム実行制御ステップにおいて、前記組み合わせが前記開始要求のみからなる場合、前記プログラム実行部は前記複数のプログラムすべての実行を開始する
ことを特徴とする請求項１に記載の制御方法。
【請求項３】
前記プログラム実行制御ステップにおいて、前記組み合わせが前記停止要求を含む場合、前記プログラム実行部は前記複数のプログラムすべての実行を停止し、当該停止要求に対応するデバッガのみに対して、プログラムの実行の停止の旨を通知する
ことを特徴とする請求項２に記載の制御方法。
【請求項４】
前記保持ステップにおいて、前記プログラム実行部が実行中の前記複数のプログラムのいずれかでブレークポイントが検出された場合に、当該プログラムの実行の停止要求を受け付けたとして前記ブレークポイントが検出されたプログラムに対応するデバッガからの停止要求を示すフラグを保持する
ことを特徴とする請求項３に記載の制御方法。
【請求項５】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置であって、
前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持部と、
前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御部とを備え、
前記プログラム実行制御部は、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
ことを特徴とするプログラム実行装置。
【請求項６】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するためのプログラムであって、
前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、
前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、
前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
ことをコンピュータに実行させるためのプログラム。
【請求項７】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、
前記複数のデバッガから個別に当該デバッグと前記プログラム実行装置との接続を切断するための切断要求を受け取り、当該複数のデバッガ毎に切断要求されているか否かを示すフラグを保持する切断要求保持ステップと、
前記フラグに示される前記切断要求の組み合わせに基づいて、前記プログラム実行装置を終了させる制御を行う実行終了制御ステップとを含み、
前記実行終了制御ステップは、前記フラグから、前記プログラム実行装置に接続されたすべてのデバッガが切断要求しているか否かを判定する切断判定ステップと、前記切断判定ステップにおいて前記プログラム実行装置に接続されたすべてのデバッガが切断要求していると判定される場合に、前記プログラム実行装置を終了させるプログラム実行装置終了ステップとを含む
ことを特徴とする制御方法。
【請求項８】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するプログラム実行装置制御方法であって、
前記プログラム実行部でプログラムが実行されているか否かを示す実行フラグを保持する実行フラグ保持ステップと、
前記プログラム実行装置に接続されたデバッガからリセット要求を受け取るリセット受け取りステップと、
受け取った前記リセット要求が有効か否かを判定する判定ステップと、
前記判定結果に従って前記リセット要求が有効か否かを示すリセットフラグを保持するリセットフラグ保持ステップと、
前記リセットフラグと前記実行フラグとに基づいて、前記プログラム実行装置をリセットするリセットステップとを含む
ことを特徴とする制御方法。
【請求項９】
さらに、
前記判定ステップにおいて、前記リセット要求が無効であると判定された場合に、リセット要求が無効となった旨を前記リセット要求に対応する前記デバッガに通知するステップを含む
ことを特徴とする請求項８に記載の制御方法。
【請求項１０】
前記判定ステップにおいて、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取った場合に、前記実行フラグの値に関係なく、当該リセット要求を有効と判定する
ことを特徴とする請求項８に記載の制御方法。
【請求項１１】
さらに、
前記リセットフラグと前記実行フラグとに基づいて、プログラム実行装置のデバッグ資源をリセットする資源リセットステップとを含み、
資源リセットステップにおいて、前記リセットフラグにより前記リセット要求が無効であると示され、かつ、前記実行フラグにより前記プログラム実行部でプログラムが実行されていると示される場合に、前記プログラム実行装置のデバッグ資源をリセットする
ことを特徴とする請求項８に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行装置およびその制御方法に関し、特に、複数デバッガで矛盾なくプログラム実行装置を制御するプログラム実行装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、単一もしくは複数のプロセッサの上で動作する複数のプログラムを同時に実行可能なシミュレータまたは複数のプロセッサを実装した評価ボードなどを有するプログラム実行装置がある。それらのプログラム実行装置は、プログラム開発およびデバッグにおいて有用である。【０００３】
特に、これらのプログラム実行装置に複数のデバッガを接続させて複数のプログラムのデバッグを同時に行うことにより、不具合の発見が容易になる。このとき、原則としてプログラム実行装置で実行されるプログラムとそのプログラムをデバッグ対象とするデバッガとは１対１に対応している。【０００４】
複数のプログラムが並列して実行することが可能で、かつ、複数のデバッガと接続させたプログラム実行装置は、デバッガから実行要求を受けた場合、実行要求を行ったデバッガに対応するプログラムの実行を開始する。【０００５】
ここで、このプログラム実行装置は、複数のプログラムが並列して実行することが可能であるので、デバッガそれぞれがデバッグを行う複数のプログラムを同期させて実行する必要がある。【０００６】
そこで、複数のプログラムの同期を、デバッガ間に通信インターフェースを設けてデバッガの実行要求のタイミングを合わせることで複数のプログラムの同期実行を実現するマルチコンピュータデバッガシステムが提案されている（例えば、特許文献１。）。【０００７】
図１４は、マルチコンピュータデバッガシステムの構成を示すブロック図である。【０００８】
図１４に示すマルチコンピュータデバッガシステムは、複数のプログラムを並行して実行することが可能なプログラム実行装置６１と、プログラム実行装置６１に接続されているデバッガ１１および１２と、デバッガ間通信インターフェースであるマルチコンピュータデバッガ７３とを備える。【０００９】
また、プログラム実行装置６１は、デバッガ１１がデバッグ対象とするプログラムを実行するプログラム実行部６２と、デバッガ１２がデバッグ対象とするプログラムを実行するプログラム実行部６３とを備える。【００１０】
下記特許文献１に開示されたマルチコンピュータデバッガシステムでは、デバッガ１１およびデバッガ１２によるプログラム実行要求の同期を図るために、デバッガ間通信インターフェースであるマルチコンピュータデバッガ７３を用いている。【００１１】
次に、マルチコンピュータデバッガシステムにおいて、典型的な動作である「停止」「ブレーク停止」を例に挙げて説明する。【００１２】
（停止動作）
まず、プログラム実行装置６１が複数プログラムを並列に実行している場合に、プログラム実行装置６１に接続されているデバッガ１１および１２の内、例えば１つのデバッガ１１が停止要求を行う。【００１３】
その場合、プログラム実行装置６１は、デバッガ１１に対応するプログラムのみ、実行を停止する。すなわち、プログラム実行装置６１は、プログラム実行部６２を停止し、他のプログラム、ここではデバッガ１２に対応するプログラムの実行は継続する。または、プログラム実行装置６１は、プログラム実行部６２を停止し、すべてのプログラムの実行を停止し（ここではデバッガ１２に対応するプログラムの実行を停止し）、すべてのデバッガ（デバッガ１１およびデバッガ１２）を停止状態に遷移する。【００１４】
（ブレーク停止動作）
また、プログラム実行装置６１が複数プログラムを並列に実行している場合に、プログラム実行装置６１がブレークを検出する場合、前述の停止と同様、ブレークポイントを検出したプログラムに対応するプログラムのみ実行を停止する。このとき、プログラム実行装置６１は、ブレークポイントを検出していない他のプログラムの実行を継続する。または、プログラム実行装置６１は、すべてのプログラムの実行を停止し、すべてのデバッガ（デバッガ１１およびデバッガ１２）を停止状態に遷移する。
【特許文献１】特開平８−１７１４９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記従来技術には下記の問題がある。【００１６】
プログラム実行装置６１では、複数プログラムの同期実行を行うためにプログラム実行装置６１にデバッガ間通信インターフェース（マルチコンピュータデバッガ７３）を設ける。しかし、プログラム実行装置６１に通信インターフェースを設けるために、通信インターフェースの仕様策定から実装、保守などの工数がかかってしまう。さらに、その通信インターフェースに対応するデバッガの種類を増やすたびに工数が増えてしまう。【００１７】
また、プログラム実行装置６１は、複数プログラムの並列実行が可能である。しかし、例えば１つのデバッガ１１からの停止要求によって複数実行中のプログラムのうちデバッガ１１に対応する１つのプログラムのみ停止され、他のプログラムの実行が継続される場合、メモリまたは変数の値が書き換えられてしまいデバッグの障害になる。また、１つのデバッガ、例えば１つのデバッガ１１からの停止要求によって実行中のプログラムがすべて停止される場合、停止要求を行っていないデバッガ１２も停止状態に遷移される。そのため、デバッガ１２に対して本来なら不必要なデバッグアクセスが発生してしまい、必要なデバッグ作業が迅速に行えない。【００１８】
さらにまた、ブレークポイントによる停止に関しては、停止要求による停止の場合と同様の問題がある。すなわち、ブレークポイントを検出したプログラムのみが停止される場合、他のプログラムの実行が継続されることによりデバッグの障害が発生してしまう。また、ブレークポイントの検出によってすべてのプログラムの実行が停止される場合、すべてのデバッガが停止状態に遷移することにより不必要なデバッグアクセスが発生してしまう。【００１９】
また、終了処理に関しては、複数プログラムの間で終了しているか否かを判断するために通信インターフェースを設ける必要があり、実装、保守などの工数がかかってしまう。【００２０】
また、デバッガの接続に関しては、プログラム実行中にデバッガを接続すると、デバッガによるリセット処理が行われ、メモリまたは変数の値が書き換えられてしまいデバッグの障害になる。【００２１】
本発明は、上記の課題に着目してなされたものであり、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２２】
前記従来の課題を解決するために、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、前記複数のデバッガのそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知することを特徴とする。【００２３】
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにプログラムの同期実行またはプログラムの同期停止を行うことができる。さらに、プログラムの同期停止の場合には、プログラム実行の停止要求を行ったデバッガのみに停止の旨の通知を行うことができるので、デバッガからの不要なデバッグアクセスを抑制することができる。【００２４】
ここで、前記プログラム実行制御ステップにおいて、前記組み合わせが前記開始要求のみからなる場合、前記プログラム実行部は前記複数のプログラムすべての実行を開始してもよい。【００２５】
かかる構成によれば、プログラム実行装置が個別のデバッガによる実行要求を受け取ってもすべてのデバッガから実行要求が揃うまでプログラムの実行を保留する。それにより、プログラム実行装置の側でプログラムの実行に関する同期をとることができ、デバッガ間で通信を行うことなくデバッガごとに対応するプログラムを同期実行することが可能となる。【００２６】
また、前記プログラム実行制御ステップにおいて、前記組み合わせが前記停止要求を含む場合、前記プログラム実行部は前記複数のプログラムすべての実行を停止し、当該停止要求に対応するデバッガのみに対して、プログラムの実行の停止の旨を通知してもよい。【００２７】
かかる構成によれば、停止要求を行ったデバッガ以外には停止通知をしないので、停止要求を行っていないデバッガは停止状態に遷移しない。そのため、停止要求を行っていないデバッガによる不要なデバッグアクセスの発生を防ぐことができる。【００２８】
また、前記保持ステップにおいて、前記プログラム実行部が実行中の前記複数のプログラムのいずれかでブレークポイントが検出された場合に、当該プログラムの実行の停止要求を受け付けたとして前記ブレークポイントが検出されたプログラムに対応するデバッガからの停止要求を示すフラグを保持してもよい。【００２９】
かかる構成によれば、ブレークを検出したプログラムに対応するデバッガ以外はプログラム実行装置から停止通知を受信しないため停止状態に遷移しない。これにより、ブレークを検出したプログラムに無関係なデバッガからの不要なデバッグアクセスの発生を防ぐことができる。【００３０】
また、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、前記複数のデバッガから個別に当該デバッグと前記プログラム実行装置との接続を切断するための切断要求を受け取り、当該複数のデバッガ毎に切断要求されているか否かを示すフラグを保持する切断要求保持ステップと、前記フラグに示される前記切断要求の組み合わせに基づいて、前記プログラム実行装置を終了させる制御を行う実行終了制御ステップとを含み、前記実行終了制御ステップは、前記フラグから、前記プログラム実行装置に接続されたすべてのデバッガが切断要求しているか否かを判定する切断判定ステップと、前記切断判定ステップにおいて前記プログラム実行装置に接続されたすべてのデバッガが切断要求していると判定される場合に、前記プログラム実行装置を終了させるプログラム実行装置終了ステップとを含むことを特徴とする。【００３１】
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、前記切断判定ステップに基づいてプログラム実行装置を終了することができる。【００３２】
また、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するプログラム実行装置制御方法であって、前記プログラム実行部でプログラムが実行されているか否かを示す実行フラグを保持する実行フラグ保持ステップと、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取るリセット受け取りステップと、受け取った前記リセット要求が有効か否かを判定する判定ステップと、前記判定結果に従って前記リセット要求が有効か否かを示すリセットフラグを保持するリセットフラグ保持ステップと、前記リセットフラグと前記実行フラグとに基づいて、前記プログラム実行装置をリセットするリセットステップとを含むことを特徴とする。【００３３】
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、前記デバッガ判定ステップに基づいてリセット処理を制御し、実行中のプログラムに影響を与えることなくデバッグすることができる。【００３４】
ここで、前記デバッガ判定ステップにおいて、さらに、前記判定ステップにおいて、前記リセット要求が無効であると判定された場合に、リセット要求が無効となった旨を前記リセット要求に対応する前記デバッガに通知するステップを含んでもよい。【００３５】
かかる構成によれば、リセット処理が無効となった旨を通知することで、開発者はリセット処理が無効であったことを認識することができる。【００３６】
ここで、前記判定ステップにおいて、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取った場合に、前記実行フラグの値に関係なく、当該リセット要求を有効と判定してもよい。【００３７】
かかる構成によれば、開発者が望むタイミングで強制的にリセットすることができる。【００３８】
ここで、さらに、前記リセットフラグと前記実行フラグとに基づいて、プログラム実行装置のデバッグ資源をリセットする資源リセットステップとを含み、資源リセットステップにおいて、前記リセットフラグにより前記リセット要求が無効であると示され、かつ、前記実行フラグにより前記プログラム実行部でプログラムが実行されていると示される場合に、前記プログラム実行装置のデバッグ資源をリセットしてもよい。【００３９】
かかる構成によれば、デバッガ接続時にデバッグ資源のみ初期化を行うことでデバッグ資源が不正なまま処理が行われるのを防ぐことができる。【００４０】
また、本発明のプログラム実行装置は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置であって、前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持部と、前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御部とを備え、前記プログラム実行制御部は、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知することを特徴とする。【００４１】
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを示す情報、データまたは信号として実現したりすることもできる。
【発明の効果】
【００４２】
本発明によれば、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を実現することができる。【００４３】
また、本発明のプログラム実行装置およびその制御方法によれば、デバッガ間に通信インターフェースを設けずに同期実行を実現することができるだけでなく、プログラムを同期停止、同期ブレークさせる際には必要なデバッガだけを停止状態に遷移させることができるため、不必要なデバッグアクセスが発生せずに、デバッグ作業を迅速に行うことができる。
【図面の簡単な説明】
【００４４】
【図１】図１は、本発明の実施の形態におけるプログラム実行装置の外観を示す図である。
【図２】図２は、実施の形態１におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図３】図３は、実施の形態１におけるプログラム実行再開判定ステップＳ１の処理を示すフローチャートである。
【図４】図４は、実施の形態１におけるプログラム停止ステップＳ２の処理を示すフローチャートである。
【図５】図５は、実施の形態１におけるブレーク停止ステップＳ３の処理を示すフローチャートである。
【図６】図６は、実施の形態２におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図７】図７は、実施の形態２におけるプログラム実行終了判定ステップＳ４の処理を示すフローチャートである。
【図８】図８は、実施の形態３におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図９】図９は、実施の形態３におけるリセット処理判定ステップＳ５の処理を示すフローチャートである。
【図１０】図１０は、実施の形態３におけるリセット処理判定ステップＳ６の処理を示すフローチャートである。
【図１１】図１１は、実施の形態３におけるリセット処理判定ステップＳ７の処理を示すフローチャートである。
【図１２】図１２は、実施の形態３におけるリセット処理判定ステップＳ８の処理を示すフローチャートである。
【図１３】図１３は、本発明の実施の形態におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図１４】図１４は、マルチコンピュータデバッガシステムの構成を示すブロック図である。
【符号の説明】
【００４５】
１、６１    プログラム実行装置
１ａ    本体装置
１ｂ    表示装置
１ｃ    入力装置
２    プログラム実行装置制御部
３、６２、６３    プログラム実行部
１０    シミュレータ
１１、１２    デバッガ
１３、１４    実行要求フラグ
２１、２２    接続要求フラグ
３１、３２    リセットフラグ
３３    プログラム実行フラグ
７３    マルチコンピュータデバッガ
【発明を実施するための最良の形態】
【００４６】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。【００４７】
（実施の形態１）
図１は、本発明の実施の形態におけるプログラム実行装置１の外観を示す図である。プログラム実行装置１は、本体装置１ａ、表示装置１ｂおよび入力装置１ｃを備える。プログラム実行装置１は、単一あるいは複数のプロセッサをシミュレートする。また、プログラム実行装置１は、データ処理装置であり、シミュレータと呼ばれるアプリケーションを実行する。シミュレータは、シミュレートされるプロセッサ上で動作する複数のプログラムを同時に実行することができる。ここで、シミュレータとは、一般的に、現実的に実験することが困難な場合に、その仮想的なモデルを作成して模擬的に実験するハードウェアまたはソフトウェアのことを言う。【００４８】
なお、本発明における実施の形態のひとつとしてプログラム実行装置１をシミュレータ１０として以下説明するが、プログラム実行装置１がプロセッサを実装した評価ボードにであっても発明の実施および効果において変わることはない。【００４９】
図２は、実施の形態１におけるシミュレータ１０およびそれに接続するデバッガの構成を示すブロック図である。【００５０】
シミュレータ１０は、プログラム実行装置制御部２と、プログラム実行部３を備え、デバッガ１１、デバッガ１２と接続している。【００５１】
プログラム実行装置制御部２は、デバッガ１１からの実行要求を保持する実行要求フラグ１３と、デバッガ１２からの実行要求を保持する実行要求フラグ１４とを備える。【００５２】
なお、簡単のため、本発明の実施の形態としてデバッガが２つ接続されている構成で説明を行うが、デバッガは２つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部２は、シミュレータ１０に接続されているデバッガの数だけ実行要求フラグを持ち、それぞれの実行要求フラグは対応するデバッガからの実行要求フラグを保持する。そのため、シミュレータ１０にデバッガが２つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。【００５３】
実行要求フラグ１３は、デバッガ１１からの実行要求を保持する。ここで、実行要求フラグ１３は、初期値として０が設定されている。実行要求フラグ１３は、デバッガ１１からの実行要求を受けて、１に設定されることで、デバッガ１１からの実行要求を保持する。【００５４】
また、実行要求フラグ１３は、プログラム実行装置制御部２により設定値が変更される。なお、実行要求フラグ１４は、実行要求フラグ１３と同様であるため説明を省略する。【００５５】
プログラム実行装置制御部２は、実行要求フラグ１３および実行要求フラグ１４に示される前記開始要求および停止要求の組み合わせに基づいて、プログラム実行部３の実行の開始または停止の制御を行う。【００５６】
具体的には、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２からプログラムの実行要求または停止要求を受けてプログラムの実行再開または停止が必要か否かを判定する。また、プログラム実行装置制御部２は、実行中のプログラムでブレークポイントを検出することによりプログラムの停止が必要か否かを判定する。【００５７】
また、プログラム実行装置制御部２は、プログラムの実行再開またはプログラムの実行停止が必要か否かの判定結果に応じて、プログラム実行部３に対してプログラム実行再開またはプログラム実行停止の指示を行う。【００５８】
また、プログラム実行装置制御部２は、プログラム実行部３に対してプログラム実行停止の指示を行ったプログラムに対応するデバッガのみに、停止通知を行う。【００５９】
ここで、プログラム実行装置制御部２は、プログラムの実行再開または停止の判定を実行要求フラグ１３および実行要求フラグ１４を用いて行う。【００６０】
具体的には、プログラム実行装置制御部２は、実行要求フラグ１３および実行要求フラグ１４に設定されている値を参照することで、プログラムの実行再開またはプログラムの停止の判定を行う。例えば、プログラム実行装置制御部２は、実行要求フラグ１３および実行要求フラグ１４に共に１が設定されていることを確認すれば、プログラム実行部３のプログラムは実行開始できる状態であると判定し、プログラム実行部３でプログラムが実行中でなければプログラムの実行を再開する。【００６１】
ここで、例えば、プログラム実行部３でプログラムの実行が停止されている場合、かつ、プログラム実行装置制御部２が、実行要求フラグ１３に１が設定され、実行要求フラグ１４に０が設定されていることを確認する場合、プログラム実行装置制御部２は、実行要求フラグ１４に１が設定されるまで、プログラムを実行開始する制御を保留する。すなわち、プログラム実行装置制御部２は、実行要求フラグ１４に１が設定されるまで、プログラム実行部３によるプログラムの実行を停止する。【００６２】
また、例えば、プログラム実行部３でプログラムの実行がされている場合で、かつ、プログラム実行装置制御部２が、実行要求フラグ１３または実行要求フラグ１４に０が設定されていることを確認する場合、プログラム実行装置制御部２は、プログラム実行部３のプログラムは実行継続できない状態であると判定し、プログラム実行部３でプログラムが実行中であればすべてのプログラムの実行を停止する。【００６３】
プログラム実行部３は、複数のデバッガ（デバッガ１１およびデバッガ１２）ごとに対応するプログラムを並列して実行または停止することができる。【００６４】
また、プログラム実行部３は、プログラム実行装置制御部２の指示に基づいて、プログラムを実行または停止する。【００６５】
次に、シミュレータ１０での典型的な動作である「再開」、「停止」および「ブレーク停止」を例に挙げてデバッガ操作者の操作の流れに従って説明する。【００６６】
ここで、デバッグ操作者は、複数のデバッガ（デバッガ１１およびデバッガ１２）をシミュレータ１０に接続し、シミュレータ１０を用いて複数のプログラムのデバッグを同時に行う。【００６７】
まず、デバッガ操作者は、デバッガ１１およびデバッガ１２をシミュレータ１０に接続する。【００６８】
次に、デバッガ操作者は、デバッガ（デバッガ１１およびデバッガ１２）ごとに対応するプログラムをプログラム実行部３にロードする。【００６９】
デバッガ操作者が、シミュレータ１０においてデバッガ１１およびデバッガ１２による複数のプログラムの実行を開始する場合、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からプログラムの実行要求を受ける。その場合、プログラム実行装置制御部２は、プログラムの実行要求を受けて、実行再開判定ステップＳ１を実施する。【００７０】
また、デバッガ操作者が、シミュレータ１０において複数のプログラムのデバッグを行うために単一または複数のプログラム実行停止を行う場合、プログラム実行装置制御部２は、プログラム実行停止ステップＳ２を実施する。【００７１】
また、デバッガ操作者が、複数のプログラムのデバッグを行うためにブレークポイントを設定して、プログラム実行部３がプログラム実行中にブレークポイントを検出した場合、プログラム実行装置制御部２は、ブレーク停止ステップＳ３を実施する。【００７２】
次に、プログラム実行装置制御部２において実施されるプログラム実行再開判定ステップＳ１、プログラム実行停止ステップＳ２およびブレーク停止ステップＳ３について説明する。【００７３】
（プログラム実行再開判定ステップ）
まず、プログラム実行再開判定ステップＳ１について説明する。プログラム実行再開判定ステップＳ１は、本発明における第１の実施の形態において特徴的なプログラム実行再開判定方法である。【００７４】
図３は、実施の形態１におけるプログラム実行再開判定ステップＳ１の処理を示すフローチャートである。【００７５】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からプログラムの実行要求を受けて、プログラム実行再開判定ステップＳ１を開始する。【００７６】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２から実行要求を受け取ったことを記憶する（Ｓ１０１：実行要求受取ステップ）。【００７７】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガにより実行要求を受け取ったのかがわかるよう実行要求フラグ１３または実行要求フラグ１４を用いる。例えば、プログラム実行装置制御部２は、デバッガ１１から実行要求を受けたときは実行要求フラグ１３を１に、デバッガ１２から実行要求を受けたときは実行要求フラグ１４を１に設定する。ただし、実行要求フラグ１３と実行要求フラグ１４の初期値は０とする。【００７８】
次に、プログラム実行装置制御部２は、すべてのデバッガ（デバッガ１１およびデバッガ１２）から実行要求を受けているかどうかを判定する（Ｓ１０２：実行要求受理判定ステップ）。【００７９】
すなわち、プログラム実行装置制御部２は、実行要求フラグ１３と実行要求フラグ１４との両方に１が設定されているかどうかを確認する。【００８０】
プログラム実行装置制御部２は、Ｓ１０２において、すべてのデバッガ（デバッガ１１およびデバッガ１２）から実行要求を受けていると判定する場合、プログラム実行装置制御部２は、プログラム実行部３に対してプログラムの実行開始を指示する（Ｓ１０３：プログラム実行再開ステップ）。【００８１】
すなわち、プログラム実行装置制御部２は、実行要求フラグ１３と実行要求フラグ１４との両方に１が設定されていることを確認した場合、プログラム実行部３に対してプログラムの実行開始を指示する。【００８２】
そして、プログラム実行再開判定ステップＳ１を終了する。【００８３】
なお、プログラム実行装置制御部２は、Ｓ１０２において、すべてのデバッガ（デバッガ１１およびデバッガ１２）から実行要求を受けていないと判定する場合には、プログラム実行部３に対して何も行わずプログラム実行再開判定ステップＳ１を終了する。【００８４】
以上のように、プログラム実行装置制御部２は、プログラム実行再開判定ステップＳ１を実施する。【００８５】
なお、上述では言及していないが、デバッガ（デバッガ１１またはデバッガ１２）が、プログラム実行装置１に対して実行要求を行った場合には、プログラム実行装置１は、実際にプログラムを実行するかどうかによらず実行要求を受け取った旨の応答を返すので、デバッガ（デバッガ１１またはデバッガ１２）はプログラム実行状態に遷移している。【００８６】
（プログラム停止ステップ）
次に、プログラム実行停止ステップＳ２について説明する。プログラム実行停止ステップＳ２は、本発明における第１の実施の形態において特徴的なプログラム実行停止方法である。【００８７】
図４は、実施の形態１におけるプログラム実行停止ステップＳ２の処理を示すフローチャートである。【００８８】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からのプログラムの実行停止要求を受けて、プログラム実行停止ステップＳ２を開始する。【００８９】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２からプログラムの実行停止要求を受け取ったかを識別する。【００９０】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガから実行停止要求を受け取ったのかを実行要求フラグ１３または実行要求フラグ１４を用いて識別する。例えば、プログラム実行装置制御部２は、デバッガ１１から実行停止要求を受けた場合、実行要求フラグ１３を０クリアに設定し、デバッガ１２から実行停止要求を受けた場合、実行要求フラグ１４を０クリアに設定する。ただし、実行要求フラグ１３と実行要求フラグ１４との初期値は０である。図３で説明したように、プログラム実行部３でデバッガ１１およびデバッガ１２に対応するプログラムが実行されているときは、実行要求フラグ１３と実行要求フラグ１４とは１に設定されている。【００９１】
次に、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガからの実行要求を無効とする（Ｓ２０１：実行要求無効化ステップ）。【００９２】
具体的には、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガにより停止要求を受け取ったのかを実行要求フラグ１３と実行要求フラグ１４とで識別し、停止要求を発信したデバッガの実行要求を無効化する。すなわち、プログラム実行装置制御部２は、デバッガ１１より停止要求を受け取った場合、デバッガ１１に対応する実行要求フラグ１３を０クリアし、実行要求フラグ１３が０であることを確認して、停止要求を発信したデバッガ１１の実行要求を無効化する。そして、実行要求が無効化されたデバッガ１１は、その後、実行要求をプログラム実行装置制御部２に発信しても、実行要求フラグ１３には反映されない。【００９３】
次に、プログラム実行装置制御部２は、プログラム実行部３に対してすべてのプログラム実行を停止するよう指示する（Ｓ２０２：プログラム実行停止ステップ）。プログラム実行部３は、プログラム実行装置制御部２からの全プログラム実行の停止指示を受けて、実行しているすべてのプログラムを停止する。【００９４】
次に、プログラム実行装置制御部２は、停止要求を行ったデバッガに対してのみプログラム実行を停止したことを通知する（Ｓ２０３：プログラム停止通知ステップ）。【００９５】
そして、プログラム実行停止ステップＳ２を終了する。【００９６】
以上のように、プログラム実行装置制御部２は、プログラム実行停止ステップＳ２を実施する。【００９７】
プログラム実行装置制御部２は、ステップＳ２０３において、停止要求を行ったデバッガにのみプログラム実行停止通知を行うため、停止要求を行ったデバッガ以外は実行状態が維持される。そのため、停止要求を行わなかったデバッガからは不必要なメモリ参照などが発生しない。それにより、プログラム実行装置１は、デバッガ（デバッガ１１またはデバッガ１２）とプログラム実行装置１との間の通信を削減することができ、停止要求を行ったデバッガ（デバッガ１１またはデバッガ１２）からの要求を迅速に処理することができる。【００９８】
さらに、デバッガ操作者が停止操作を行った後、デバッガ１１またはデバッガ１２からの要求がプログラム実行装置１で迅速に処理されるので、デバッガ操作者の作業の効率化に繋がる。【００９９】
（ブレーク停止ステップ）
次に、ブレーク停止ステップＳ３について説明する。ブレーク停止ステップＳ３は、本発明における実施の形態において特徴的なプログラム実行停止方法である。【０１００】
図５は、実施の形態１におけるブレーク停止ステップＳ３の処理を示すフローチャートである。【０１０１】
シミュレータ１０におけるプログラム実行装置制御部２は、プログラム実行中にブレークポイントを検出した場合に、ブレーク停止ステップＳ３を開始する。【０１０２】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２のどちらに対応するプログラムでブレークポイントを検出したかを識別する。【０１０３】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガがブレークポイントを検出したプログラムに対応するデバッガであるのかを実行要求フラグ１３または実行要求フラグ１４を用いて識別する。例えば、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１１である場合は実行要求フラグ１３を０クリアに設定し、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１２である場合は実行要求フラグ１４を０クリアに設定する。【０１０４】
次に、プログラム実行装置制御部２は、図４同様に、ブレークポイントを検出したプログラムに対応するデバッガからの実行要求を無効にする（Ｓ３０１：実行要求無効化ステップ）。【０１０５】
例えば、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１１である場合、デバッガ１１に対応する実行要求フラグ１３を０クリアする。そして、プログラム実行装置制御部２は、実行要求フラグ１３が０であることを確認して、デバッガ１１からの実行要求を無効化する。【０１０６】
また、例えば、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１２である場合、デバッガ１２に対応する実行要求フラグ１４を０クリアする。そして、プログラム実行装置制御部２は、実行要求フラグ１４が０であることを確認して、デバッガ１２からの実行要求を無効化する。【０１０７】
次に、プログラム実行装置制御部２は、プログラム実行部３に対してすべてのプログラム実行を停止するよう指示する（Ｓ３０２：プログラム実行停止ステップ）。プログラム実行部３は、プログラム実行装置制御部２からの全プログラム実行の停止指示を受けて、実行しているすべてのプログラムを停止する。【０１０８】
次に、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガに対してのみプログラム実行を停止したことを通知する（Ｓ３０３：停止通知ステップ）。【０１０９】
そして、ブレーク停止ステップＳ３を終了する。【０１１０】
以上のように、プログラム実行装置制御部２は、ブレーク停止ステップＳ３を実施する。【０１１１】
プログラム実行装置制御部２は、ステップＳ３０３において、ブレークが検出されたプログラムに対応するデバッガにのみプログラム実行停止通知を行うため、ブレークが検出されたプログラムに対応するデバッガ以外は実行状態が維持される。そのため、ブレークで停止しなかったデバッガからは不必要なメモリ参照などが発生しない。それにより、プログラム実行装置１は、デバッガ（デバッガ１１またはデバッガ１２）とプログラム実行装置１と間の通信を削減することができ、ブレークが検出されたプログラムに対応するデバッガ（デバッガ１１またはデバッガ１２）からの要求を迅速に処理することができる。【０１１２】
さらに、プログラム実行装置１（シミュレータ１０）がブレークで停止した後、デバッガ１１またはデバッガ１２からの要求がプログラム実行装置１で迅速に処理されれば、デバッガ操作者の作業の効率化に繋がる。【０１１３】
以上のように、実施の形態１にかかるプログラム実行装置およびその制御方法は、複数プログラムの同期実行がデバッガ同士の連携なしに可能になり、停止においても不必要なデバッグアクセスが発生しない。【０１１４】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、デバッガの状態とプログラムの実行状態の一貫性にとらわれることなくプログラム実行装置の制御を行うことができる。【０１１５】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、プログラム実行装置が個別のデバッガによる実行要求を受け取ってもすべてのデバッガから実行要求が揃うまでプログラムの実行を保留することにより、プログラム実行装置の側でプログラムの実行に関する同期をとることができ、デバッガ間で通信を行うことなくデバッガごとに対応するプログラムを同期実行することが可能となる。【０１１６】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、停止要求を行ったデバッガ以外には停止通知をしないことで、停止要求を行っていないデバッガは停止状態に遷移しないため、停止要求を行っていないデバッガによる不要なデバッグアクセスの発生を防ぐことができる。【０１１７】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、ブレークを検出したプログラムに対応するデバッガ以外はプログラム実行装置から停止通知を受信しないため停止状態に遷移しない。これにより、ブレークを検出したプログラムに無関係なデバッガからの不要なデバッグアクセスの発生を防ぐことができる。【０１１８】
それにより、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を実現することができる。【０１１９】
さらに、実施の形態１のプログラム実行装置およびその制御方法によれば、デバッガ間に通信インターフェースを設けずに同期実行を実現することができるだけでなく、プログラムを同期停止、同期ブレークさせる際には必要なデバッガだけを停止状態に遷移させることができるため、不必要なデバッグアクセスが発生しないようにしてデバッグ作業を迅速に行うことができる。【０１２０】
（実施の形態２）
上記実施の形態１では、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにプログラム実行装置を制御する態様の一例について説明したが、それに限らない。実施の形態２では、プログラム実行装置を制御する態様として、実施の形態１とは別の態様の一例について説明する。【０１２１】
図６は、実施の形態２におけるシミュレータ１０およびそれに接続するデバッガの構成を示すブロック図である。【０１２２】
シミュレータ１０は、プログラム実行装置制御部２と、プログラム実行部３を備え、デバッガ１１、デバッガ１２と接続している。【０１２３】
プログラム実行装置制御部２は、デバッガ１１からの接続要求または切断要求を保持する接続要求フラグ２１と、デバッガ１２からの接続要求または切断要求を保持する接続要求フラグ２２とを備える。ここで、切断要求とは、例えばデバッガ１１とシミュレータ１０との接続を切断するための要求であり、接続要求とは、新たにシミュレータ１０に物理的に接続されたデバッガが、シミュレータ１０と接続するための要求である。【０１２４】
なお、簡単のため、本発明の実施の形態としてデバッガが２つ接続されている構成で説明を行うが、デバッガは２つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部２は、シミュレータ１０に接続されているデバッガの数だけ接続要求フラグを持ち、それぞれの接続要求フラグは対応するデバッガからの接続要求フラグを保持する。そのため、シミュレータ１０にデバッガが２つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。【０１２５】
接続要求フラグ２１は、デバッガ１１からの接続要求または切断要求を保持する。ここで、接続要求フラグ２１は、例えば初期値として０が設定されている。【０１２６】
また、接続要求フラグ２１は、プログラム実行装置制御部２により設定値が変更される。【０１２７】
すなわち、接続要求フラグ２１は、デバッガ１１からの接続要求を受けて１に設定され、または切断要求を受けて０に設定されることで、デバッガ１１からの接続要求または切断要求を保持する。【０１２８】
なお、接続要求フラグ２２は、接続要求フラグ２１と同様であるため説明を省略する。【０１２９】
プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２から接続要求または切断要求を受けてプログラムの実行終了が必要か否かを判定する。ここで、プログラムの実行終了とは、プログラム実行部３が実行中のプログラムを終了させることだけでなく、シャットダウンなどシミュレータ１０を終了させることも含む。【０１３０】
また、プログラム実行装置制御部２は、プログラムの実行終了が必要か否かの判定結果に応じて、プログラム実行部３に対してプログラムの実行終了の指示を行う。【０１３１】
ここで、プログラム実行装置制御部２は、プログラムの実行終了の判定を接続要求フラグ２１および接続要求フラグ２２を用いて行う。【０１３２】
具体的には、プログラム実行装置制御部２は、接続要求フラグ２１および接続要求フラグ２２に設定されている値を参照することで、プログラムの実行終了の判定を行う。例えば、プログラム実行装置制御部２は、接続要求フラグ２１および接続要求フラグ２２に共に０が設定されていることを確認すれば、プログラム実行終了可能状態であると判定し、プログラムの実行を終了する。【０１３３】
一方、例えば、プログラム実行装置制御部２は、接続要求フラグ２１に０が設定され、接続要求フラグ２２に１が設定されていることを確認する場合、デバッガ１２ではプログラム実行終了不可の状態であると判断できるので、プログラム実行装置制御部２は、接続要求フラグに０が設定されるまで、プログラムを実行終了する制御を保留する。【０１３４】
次に、本発明の実施の形態におけるプログラム実行終了判定ステップＳ４について説明する。【０１３５】
図７は、実施の形態２におけるプログラム実行終了判定ステップＳ４の処理を示すフローチャートである。【０１３６】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２から接続要求または切断要求を受けて、プログラム実行終了判定ステップＳ４を開始する。【０１３７】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２から接続要求または切断要求を受け取ったことを記憶する（Ｓ４０１：接続要求または切断要求受取ステップ）。【０１３８】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガにより接続要求または切断要求を受け取ったのかがわかるよう接続要求フラグ２１または接続要求フラグ２２を用いる。【０１３９】
例えば、プログラム実行装置制御部２は、デバッガ１１から接続要求を受けたときは接続要求フラグ２１を１に、デバッガ１２から接続要求を受けたときは接続要求フラグ２２を１に設定する。反対に、プログラム実行装置制御部２は、デバッガ１１から切断要求を受けたときは接続要求フラグ２１を０に、デバッガ１２から切断要求を受けたときは接続要求フラグ２２を０に設定する。ただし、接続要求フラグ２１と接続要求フラグ２２の初期値は０とする。【０１４０】
次に、プログラム実行装置制御部２は、すべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けているかどうかを判定する（Ｓ４０２：切断要求受理判定ステップ）。【０１４１】
すなわち、プログラム実行装置制御部２は、接続要求フラグ２１と接続要求フラグ２２との両方に０が設定されているかどうかを確認する。【０１４２】
プログラム実行装置制御部２は、Ｓ４０２において、すべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けていると判定する場合、プログラム実行装置制御部２は、プログラム実行部３に対してプログラムの実行終了を指示する（Ｓ４０３：プログラム実行終了ステップ）。【０１４３】
すなわち、プログラム実行装置制御部２は、接続要求フラグ２１と接続要求フラグ２２との両方に０が設定されていることを確認した場合、プログラム実行部３に対してプログラムの実行終了を指示する。【０１４４】
そして、プログラム実行終了判定ステップＳ４を終了する。【０１４５】
なお、プログラム実行装置制御部２は、Ｓ４０２において、いずれかのデバッガ（デバッガ１１もしくはデバッガ１２）から接続要求を受けていると判定する場合には、プログラム実行部３に対して何も行わずプログラム実行終了判定ステップＳ４を終了する。【０１４６】
以上のように、プログラム実行装置制御部２は、プログラム実行終了判定ステップＳ４を実施する。【０１４７】
以上、実施の形態２によれば、シミュレータ１０は、接続されているデバッガ１１およびデバッガ１２から個別に、接続要求または切断要求を受けて、シミュレータ１０に接続されたすべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けたか否かを判定する。そして、シミュレータ１０は、すべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けたと判定した場合に、プログラムの実行を終了する。【０１４８】
このように、実施の形態２にかかるプログラム実行装置およびその制御方法は、プログラムのデバッグが終了したとシミュレータ１０（プログラム実行装置１）が判断した時点で、プログラムの実行が自動的に終了されるので、開発者が手動で終了する工数を削減することができる。【０１４９】
以上のように、実施の形態２によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにシミュレータ１０のプログラム実行を終了することができる。【０１５０】
（実施の形態３）
図８は、実施の形態３におけるシミュレータ１０およびそれに接続するデバッガの構成を示すブロック図である。【０１５１】
シミュレータ１０は、プログラム実行装置制御部２と、プログラム実行部３を備え、デバッガ１１、デバッガ１２と接続している。【０１５２】
プログラム実行装置制御部２は、プログラム実行部３がプログラムを実行したかを保持するプログラム実行フラグ３３と、デバッガ１１からのリセット要求の有効性を示す情報を保持するリセットフラグ３１と、デバッガ１２からのリセット要求の有効性を示す情報を保持するリセットフラグ３２とを備える。【０１５３】
なお、簡単のため、本発明の実施の形態としてデバッガが２つ接続されている構成で説明を行うが、デバッガは２つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部２は、シミュレータ１０に接続されているデバッガの数だけリセットフラグを持ち、それぞれのリセットフラグは、対応するデバッガからのリセット要求に対応する。そのため、シミュレータ１０にデバッガが２つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。【０１５４】
リセットフラグ３１は、デバッガ１１からのリセット要求の有効性を示す情報を保持する。ここで、リセットフラグ３１は、初期値として０が設定されており、プログラム実行装置制御部２により設定値が変更される。【０１５５】
例えば、リセットフラグ３１は、デバッガ１１からのリセット要求を受け、それが有効である場合には１が設定され、またそれが無効である場合は０が設定されることで、デバッガ１１からのリセット要求が有効か無効かを示す情報を保持する。【０１５６】
プログラム実行フラグ３３は、プログラム実行部３がプログラムを実行したかどうかを示す情報を保持する。ここで、プログラム実行フラグ３３は、初期値として０が設定されており、プログラム実行装置制御部２により設定値が変更される。また、プログラムを実行したかどうかというのは、プログラムの実行中だけでなく、プログラムを実行して終了したかどうかまでも含んでいる。【０１５７】
例えば、プログラム実行フラグ３３は、プログラム実行部３がプログラムを実行したときには１が設定される。【０１５８】
なお、リセットフラグ３２は、リセットフラグ３１と同様であるため説明を省略する。【０１５９】
プログラム実行装置制御部２は、シミュレータ１０にデバッガを新たに（または再度）接続する際に、そのデバッガからリセット要求を受けて、リセット処理が必要か否かを判定する。ここで、リセット処理とは、プログラム実行装置１（ここではシミュレータ１０）を再び始動の状態に戻す処理のことである。【０１６０】
また、プログラム実行装置制御部２は、リセット処理が必要か否かの判定結果に応じて、リセット処理を行う。【０１６１】
ここで、プログラム実行装置制御部２は、リセット処理の判定をプログラム実行フラグ３３、リセットフラグ３１およびリセットフラグ３２を用いて行う。【０１６２】
具体的には、プログラム実行装置制御部２は、プログラム実行フラグ３３およびリセット要求を出している例えばデバッガ１１に対応するリセットフラグ３１の値を参照することで、リセット処理の判定を行う。【０１６３】
そして、例えばプログラム実行装置制御部２は、プログラム実行フラグ３３に１、リセットフラグ３１に０が設定されていることを確認すれば、リセット処理を行わずプログラムの実行を続行する。一方、リセットフラグ３１に１が設定されていることを確認すれば、リセット処理を行いプログラムの実行を続行する。【０１６４】
なお、リセットフラグ３２に対してもリセットフラグ３１と同様である。【０１６５】
次に、本実施の形態３におけるリセット処理判定ステップＳ５について説明する。【０１６６】
図９は、本発明の実施の形態３におけるリセット処理判定ステップＳ５の処理を示すフローチャートである。【０１６７】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からリセット要求を受けて、リセット処理判定ステップＳ５を開始する。【０１６８】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２からリセット要求を受け取ったことを記憶する（Ｓ５０１：リセット要求受取ステップ）。【０１６９】
次に、プログラム実行装置制御部２は、プログラム実行フラグ３３を用いてプログラムが実行されたかどうかを判定する（Ｓ５０２：プログラム実行判定ステップ）。【０１７０】
すなわち、プログラム実行装置制御部２は、プログラム実行フラグ３３に１が設定されているかどうかを確認する。【０１７１】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定した場合、何も行わずリセット処理判定ステップＳ５を終了する。【０１７２】
すなわち、プログラム実行装置制御部２は、プログラム実行フラグ３３に１が設定されていることを確認した場合、何も行わずリセット処理判定ステップＳ５を終了する。【０１７３】
反対に、プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、プログラムが実行されていないと判定する場合には、プログラム実行装置制御部２は、リセット処理を指示する（Ｓ５０３：リセット処理実行ステップ）。【０１７４】
そして、リセット処理判定ステップＳ５を終了する。【０１７５】
なお、プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、デバッガ１１からの受けたリセット要求が有効であるかどうかを判定し、それが有効の場合には１を設定してリセット処理判定ステップＳ５に進む。反対に、それが無効である場合には０を設定し、リセット処理判定ステップＳ５を終了する。【０１７６】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ５を実施する。【０１７７】
このようにして、プログラム実行中に新たにデバッガが接続された場合でも、すでに実行しているプログラムに影響を与えることなくデバッグを継続することができる。【０１７８】
（変形例１）
次に、本発明の実施の形態におけるリセット処理判定ステップＳ６について説明する。【０１７９】
図１０は、実施の形態３におけるリセット処理判定ステップＳ６の処理を示すフローチャートである。【０１８０】
リセット処理判定ステップＳ６は上記のリセット処理判定ステップＳ５にリセット処理無効通知ステップＳ６０４を追加したものである。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。【０１８１】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定されたとき、リセット要求を出しているデバッガ（例えばデバッガ１１）に対してリセット処理が無効であったことを通知する（Ｓ６０４：無効通知ステップ）。【０１８２】
その後、リセット処理判定ステップＳ６を終了する。【０１８３】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ６を実施する。【０１８４】
このように、リセット処理が無効となった旨をデバッガに通知することにより、開発者がリセット処理が無効であったことを認識し、シミュレータ１０（プログラム実行装置１）の動作を把握することができる。【０１８５】
（変形例２）
次に、本発明の実施の形態におけるリセット処理判定ステップＳ７について説明する。【０１８６】
図１１は、実施の形態３におけるリセット処理判定ステップＳ７の処理を示すフローチャートである。【０１８７】
リセット処理判定ステップＳ７は前記リセット処理判定ステップＳ５にリセット処理受付判定ステップＳ７０４を追加したものである。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。【０１８８】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定されたとき、リセット処理を受け付けるかの判定を行う。【０１８９】
すなわち、プログラム実行装置制御部２は、リセットフラグ３１に１が設定されていることを確認した場合、リセット処理実行ステップＳ５０３を行う。そして、リセット処理実行ステップＳ５０３を実施後、リセット処理判定ステップＳ７を終了する。【０１９０】
反対に、プログラム実行装置制御部２は、リセットフラグ３１に０が設定されていることを確認した場合、何も行わずリセット処理判定ステップＳ７を終了する。【０１９１】
なお、リセットフラグ３２は、リセットフラグ３１と同様であるため説明を省略する。【０１９２】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ７を実施する。【０１９３】
それにより、プログラム実行装置制御部２は、新たに接続されたデバッガ１１またはデバッガ１２からリセット要求を受けると、プログラム実行フラグ３３の状態に関わることなく、開発者が望むタイミングで強制的にリセットすることができる。【０１９４】
（変形例３）
次に、本発明の実施の形態におけるリセット処理判定ステップＳ８について説明する。【０１９５】
図１２は、実施の形態３におけるリセット処理判定ステップＳ８の処理を示すフローチャートである。【０１９６】
リセット処理判定ステップＳ８は、前記リセット処理判定ステップＳ５にデバッグ資源リセット処理実行ステップＳ８０４を追加したものである。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。【０１９７】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定されたとき、デバッグ資源のリセット処理を行う。【０１９８】
すなわち、プログラム実行装置制御部２は、プログラム実行フラグ３３に１が設定されていることを確認した場合、デバッグ資源リセット処理実行ステップＳ８０４を行う。そして、デバッグ資源リセット処理実行ステップＳ８０４の実施後にリセット処理判定ステップＳ８を終了する。【０１９９】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ７を実施する。【０２００】
このように、プログラム実行装置制御部２がプログラム実行中に接続したデバッガのデバッグ資源のみ初期化を行うことで、デバッグ資源が不正なまま処理が行われるのを防ぐことができる。【０２０１】
以上、実施の形態２によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにリセット処理またはデバッグ資源の初期化などを実施することができる。【０２０２】
以上のように、本発明によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにプログラム実行装置を制御することのできるプログラム実行装置およびその方法を実現できる。【０２０３】
なお、実施の形態１ないし３では、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにプログラム実行装置を制御する態様として説明したが、それに限らない。すなわち、図１３に示すように、それをすべて組み合わせた態様も本発明の範囲内に含まれる。ここで、図１３は、本発明の実施の形態におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。【０２０４】
以上、本発明のプログラム実行装置およびその制御方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０２０５】
本発明は、プログラム実行装置およびその制御方法に利用でき、特に、複数のプロセッサをシミュレーションするシミュレータまたは複数のプロセッサが実装された評価ボードを備えるプログラム実行装置およびその制御方法またはマルチデバッガでのシステムＬＳＩのシミュレータ制御可能なプログラム実行装置およびその制御方法に利用することができる。
【図１】
2009113273.tif 000003
【図２】
2009113273.tif 000004
【図３】
2009113273.tif 000005
【図４】
2009113273.tif 000006
【図５】
2009113273.tif 000007
【図６】
2009113273.tif 000008
【図７】
2009113273.tif 000009
【図８】
2009113273.tif 000010
【図９】
2009113273.tif 000011
【図１０】
2009113273.tif 000012
【図１１】
2009113273.tif 000013
【図１２】
2009113273.tif 000014
【図１３】
2009113273.tif 000015
【図１４】
2009113273.tif 000016
【手続補正書】
【提出日】平成22年6月24日(2010.6.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行装置およびその制御方法に関し、特に、複数デバッガで矛盾なくプログラム実行装置を制御するプログラム実行装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、単一もしくは複数のプロセッサの上で動作する複数のプログラムを同時に実行可能なシミュレータまたは複数のプロセッサを実装した評価ボードなどを有するプログラム実行装置がある。それらのプログラム実行装置は、プログラム開発およびデバッグにおいて有用である。
【０００３】
特に、これらのプログラム実行装置に複数のデバッガを接続させて複数のプログラムのデバッグを同時に行うことにより、不具合の発見が容易になる。このとき、原則としてプログラム実行装置で実行されるプログラムとそのプログラムをデバッグ対象とするデバッガとは１対１に対応している。
【０００４】
複数のプログラムが並列して実行することが可能で、かつ、複数のデバッガと接続させたプログラム実行装置は、デバッガから実行要求を受けた場合、実行要求を行ったデバッガに対応するプログラムの実行を開始する。
【０００５】
ここで、このプログラム実行装置は、複数のプログラムが並列して実行することが可能であるので、デバッガそれぞれがデバッグを行う複数のプログラムを同期させて実行する必要がある。
【０００６】
そこで、複数のプログラムの同期を、デバッガ間に通信インターフェースを設けてデバッガの実行要求のタイミングを合わせることで複数のプログラムの同期実行を実現するマルチコンピュータデバッガシステムが提案されている（例えば、特許文献１。）。
【０００７】
図１４は、マルチコンピュータデバッガシステムの構成を示すブロック図である。
【０００８】
図１４に示すマルチコンピュータデバッガシステムは、複数のプログラムを並行して実行することが可能なプログラム実行装置６１と、プログラム実行装置６１に接続されているデバッガ１１および１２と、デバッガ間通信インターフェースであるマルチコンピュータデバッガ７３とを備える。
【０００９】
また、プログラム実行装置６１は、デバッガ１１がデバッグ対象とするプログラムを実行するプログラム実行部６２と、デバッガ１２がデバッグ対象とするプログラムを実行するプログラム実行部６３とを備える。
【００１０】
下記特許文献１に開示されたマルチコンピュータデバッガシステムでは、デバッガ１１およびデバッガ１２によるプログラム実行要求の同期を図るために、デバッガ間通信インターフェースであるマルチコンピュータデバッガ７３を用いている。
【００１１】
次に、マルチコンピュータデバッガシステムにおいて、典型的な動作である「停止」「ブレーク停止」を例に挙げて説明する。
【００１２】
（停止動作）
まず、プログラム実行装置６１が複数プログラムを並列に実行している場合に、プログラム実行装置６１に接続されているデバッガ１１および１２の内、例えば１つのデバッガ１１が停止要求を行う。
【００１３】
その場合、プログラム実行装置６１は、デバッガ１１に対応するプログラムのみ、実行を停止する。すなわち、プログラム実行装置６１は、プログラム実行部６２を停止し、他のプログラム、ここではデバッガ１２に対応するプログラムの実行は継続する。または、プログラム実行装置６１は、プログラム実行部６２を停止し、すべてのプログラムの実行を停止し（ここではデバッガ１２に対応するプログラムの実行を停止し）、すべてのデバッガ（デバッガ１１およびデバッガ１２）を停止状態に遷移する。
【００１４】
（ブレーク停止動作）
また、プログラム実行装置６１が複数プログラムを並列に実行している場合に、プログラム実行装置６１がブレークを検出する場合、前述の停止と同様、ブレークポイントを検出したプログラムに対応するプログラムのみ実行を停止する。このとき、プログラム実行装置６１は、ブレークポイントを検出していない他のプログラムの実行を継続する。または、プログラム実行装置６１は、すべてのプログラムの実行を停止し、すべてのデバッガ（デバッガ１１およびデバッガ１２）を停止状態に遷移する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平８−１７１４９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記従来技術には下記の問題がある。
【００１７】
プログラム実行装置６１では、複数プログラムの同期実行を行うためにプログラム実行装置６１にデバッガ間通信インターフェース（マルチコンピュータデバッガ７３）を設ける。しかし、プログラム実行装置６１に通信インターフェースを設けるために、通信インターフェースの仕様策定から実装、保守などの工数がかかってしまう。さらに、その通信インターフェースに対応するデバッガの種類を増やすたびに工数が増えてしまう。
【００１８】
また、プログラム実行装置６１は、複数プログラムの並列実行が可能である。しかし、例えば１つのデバッガ１１からの停止要求によって複数実行中のプログラムのうちデバッガ１１に対応する１つのプログラムのみ停止され、他のプログラムの実行が継続される場合、メモリまたは変数の値が書き換えられてしまいデバッグの障害になる。また、１つのデバッガ、例えば１つのデバッガ１１からの停止要求によって実行中のプログラムがすべて停止される場合、停止要求を行っていないデバッガ１２も停止状態に遷移される。そのため、デバッガ１２に対して本来なら不必要なデバッグアクセスが発生してしまい、必要なデバッグ作業が迅速に行えない。
【００１９】
さらにまた、ブレークポイントによる停止に関しては、停止要求による停止の場合と同様の問題がある。すなわち、ブレークポイントを検出したプログラムのみが停止される場合、他のプログラムの実行が継続されることによりデバッグの障害が発生してしまう。また、ブレークポイントの検出によってすべてのプログラムの実行が停止される場合、すべてのデバッガが停止状態に遷移することにより不必要なデバッグアクセスが発生してしまう。
【００２０】
また、終了処理に関しては、複数プログラムの間で終了しているか否かを判断するために通信インターフェースを設ける必要があり、実装、保守などの工数がかかってしまう。
【００２１】
また、デバッガの接続に関しては、プログラム実行中にデバッガを接続すると、デバッガによるリセット処理が行われ、メモリまたは変数の値が書き換えられてしまいデバッグの障害になる。
【００２２】
本発明は、上記の課題に着目してなされたものであり、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
前記従来の課題を解決するために、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、前記複数のデバッガのそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知することを特徴とする。
【００２４】
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにプログラムの同期実行またはプログラムの同期停止を行うことができる。さらに、プログラムの同期停止の場合には、プログラム実行の停止要求を行ったデバッガのみに停止の旨の通知を行うことができるので、デバッガからの不要なデバッグアクセスを抑制することができる。
【００２５】
ここで、前記プログラム実行制御ステップにおいて、前記組み合わせが前記開始要求のみからなる場合、前記プログラム実行部は前記複数のプログラムすべての実行を開始してもよい。
【００２６】
かかる構成によれば、プログラム実行装置が個別のデバッガによる実行要求を受け取ってもすべてのデバッガから実行要求が揃うまでプログラムの実行を保留する。それにより、プログラム実行装置の側でプログラムの実行に関する同期をとることができ、デバッガ間で通信を行うことなくデバッガごとに対応するプログラムを同期実行することが可能となる。
【００２７】
また、前記プログラム実行制御ステップにおいて、前記組み合わせが前記停止要求を含む場合、前記プログラム実行部は前記複数のプログラムすべての実行を停止し、当該停止要求に対応するデバッガのみに対して、プログラムの実行の停止の旨を通知してもよい。
【００２８】
かかる構成によれば、停止要求を行ったデバッガ以外には停止通知をしないので、停止要求を行っていないデバッガは停止状態に遷移しない。そのため、停止要求を行っていないデバッガによる不要なデバッグアクセスの発生を防ぐことができる。
【００２９】
また、前記保持ステップにおいて、前記プログラム実行部が実行中の前記複数のプログラムのいずれかでブレークポイントが検出された場合に、当該プログラムの実行の停止要求を受け付けたとして前記ブレークポイントが検出されたプログラムに対応するデバッガからの停止要求を示すフラグを保持してもよい。
【００３０】
かかる構成によれば、ブレークを検出したプログラムに対応するデバッガ以外はプログラム実行装置から停止通知を受信しないため停止状態に遷移しない。これにより、ブレークを検出したプログラムに無関係なデバッガからの不要なデバッグアクセスの発生を防ぐことができる。
【００３１】
また、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、前記複数のデバッガから個別に当該デバッグと前記プログラム実行装置との接続を切断するための切断要求を受け取り、当該複数のデバッガ毎に切断要求されているか否かを示すフラグを保持する切断要求保持ステップと、前記フラグに示される前記切断要求の組み合わせに基づいて、前記プログラム実行装置を終了させる制御を行う実行終了制御ステップとを含み、前記実行終了制御ステップは、前記フラグから、前記プログラム実行装置に接続されたすべてのデバッガが切断要求しているか否かを判定する切断判定ステップと、前記切断判定ステップにおいて前記プログラム実行装置に接続されたすべてのデバッガが切断要求していると判定される場合に、前記プログラム実行装置を終了させるプログラム実行装置終了ステップとを含むことを特徴とする。
【００３２】
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、前記切断判定ステップに基づいてプログラム実行装置を終了することができる。
【００３３】
また、本発明の制御方法は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するプログラム実行装置制御方法であって、前記プログラム実行部でプログラムが実行されているか否かを示す実行フラグを保持する実行フラグ保持ステップと、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取るリセット受け取りステップと、受け取った前記リセット要求が有効か否かを判定する判定ステップと、前記判定結果に従って前記リセット要求が有効か否かを示すリセットフラグを保持するリセットフラグ保持ステップと、前記リセットフラグと前記実行フラグとに基づいて、前記プログラム実行装置をリセットするリセットステップとを含むことを特徴とする。
【００３４】
かかる構成によれば、デバッガ間に通信インターフェースを設けずに、前記デバッガ判定ステップに基づいてリセット処理を制御し、実行中のプログラムに影響を与えることなくデバッグすることができる。
【００３５】
ここで、前記デバッガ判定ステップにおいて、さらに、前記判定ステップにおいて、前記リセット要求が無効であると判定された場合に、リセット要求が無効となった旨を前記リセット要求に対応する前記デバッガに通知するステップを含んでもよい。
【００３６】
かかる構成によれば、リセット処理が無効となった旨を通知することで、開発者はリセット処理が無効であったことを認識することができる。
【００３７】
ここで、前記判定ステップにおいて、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取った場合に、前記実行フラグの値に関係なく、当該リセット要求を有効と判定してもよい。
【００３８】
かかる構成によれば、開発者が望むタイミングで強制的にリセットすることができる。
【００３９】
ここで、さらに、前記リセットフラグと前記実行フラグとに基づいて、プログラム実行装置のデバッグ資源をリセットする資源リセットステップとを含み、資源リセットステップにおいて、前記リセットフラグにより前記リセット要求が無効であると示され、かつ、前記実行フラグにより前記プログラム実行部でプログラムが実行されていると示される場合に、前記プログラム実行装置のデバッグ資源をリセットしてもよい。
【００４０】
かかる構成によれば、デバッガ接続時にデバッグ資源のみ初期化を行うことでデバッグ資源が不正なまま処理が行われるのを防ぐことができる。
【００４１】
また、本発明のプログラム実行装置は、複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置であって、前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持部と、前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御部とを備え、前記プログラム実行制御部は、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知することを特徴とする。
【００４２】
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを示す情報、データまたは信号として実現したりすることもできる。
【発明の効果】
【００４３】
本発明によれば、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を実現することができる。
【００４４】
また、本発明のプログラム実行装置およびその制御方法によれば、デバッガ間に通信インターフェースを設けずに同期実行を実現することができるだけでなく、プログラムを同期停止、同期ブレークさせる際には必要なデバッガだけを停止状態に遷移させることができるため、不必要なデバッグアクセスが発生せずに、デバッグ作業を迅速に行うことができる。
【図面の簡単な説明】
【００４５】
【図１】図１は、本発明の実施の形態におけるプログラム実行装置の外観を示す図である。
【図２】図２は、実施の形態１におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図３】図３は、実施の形態１におけるプログラム実行再開判定ステップＳ１の処理を示すフローチャートである。
【図４】図４は、実施の形態１におけるプログラム停止ステップＳ２の処理を示すフローチャートである。
【図５】図５は、実施の形態１におけるブレーク停止ステップＳ３の処理を示すフローチャートである。
【図６】図６は、実施の形態２におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図７】図７は、実施の形態２におけるプログラム実行終了判定ステップＳ４の処理を示すフローチャートである。
【図８】図８は、実施の形態３におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図９】図９は、実施の形態３におけるリセット処理判定ステップＳ５の処理を示すフローチャートである。
【図１０】図１０は、実施の形態３におけるリセット処理判定ステップＳ６の処理を示すフローチャートである。
【図１１】図１１は、実施の形態３におけるリセット処理判定ステップＳ７の処理を示すフローチャートである。
【図１２】図１２は、実施の形態３におけるリセット処理判定ステップＳ８の処理を示すフローチャートである。
【図１３】図１３は、本発明の実施の形態におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【図１４】図１４は、マルチコンピュータデバッガシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００４６】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００４７】
（実施の形態１）
図１は、本発明の実施の形態におけるプログラム実行装置１の外観を示す図である。プログラム実行装置１は、本体装置１ａ、表示装置１ｂおよび入力装置１ｃを備える。プログラム実行装置１は、単一あるいは複数のプロセッサをシミュレートする。また、プログラム実行装置１は、データ処理装置であり、シミュレータと呼ばれるアプリケーションを実行する。シミュレータは、シミュレートされるプロセッサ上で動作する複数のプログラムを同時に実行することができる。ここで、シミュレータとは、一般的に、現実的に実験することが困難な場合に、その仮想的なモデルを作成して模擬的に実験するハードウェアまたはソフトウェアのことを言う。
【００４８】
なお、本発明における実施の形態のひとつとしてプログラム実行装置１をシミュレータ１０として以下説明するが、プログラム実行装置１がプロセッサを実装した評価ボードにであっても発明の実施および効果において変わることはない。
【００４９】
図２は、実施の形態１におけるシミュレータ１０およびそれに接続するデバッガの構成を示すブロック図である。
【００５０】
シミュレータ１０は、プログラム実行装置制御部２と、プログラム実行部３を備え、デバッガ１１、デバッガ１２と接続している。
【００５１】
プログラム実行装置制御部２は、デバッガ１１からの実行要求を保持する実行要求フラグ１３と、デバッガ１２からの実行要求を保持する実行要求フラグ１４とを備える。
【００５２】
なお、簡単のため、本発明の実施の形態としてデバッガが２つ接続されている構成で説明を行うが、デバッガは２つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部２は、シミュレータ１０に接続されているデバッガの数だけ実行要求フラグを持ち、それぞれの実行要求フラグは対応するデバッガからの実行要求フラグを保持する。そのため、シミュレータ１０にデバッガが２つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。
【００５３】
実行要求フラグ１３は、デバッガ１１からの実行要求を保持する。ここで、実行要求フラグ１３は、初期値として０が設定されている。実行要求フラグ１３は、デバッガ１１からの実行要求を受けて、１に設定されることで、デバッガ１１からの実行要求を保持する。
【００５４】
また、実行要求フラグ１３は、プログラム実行装置制御部２により設定値が変更される。なお、実行要求フラグ１４は、実行要求フラグ１３と同様であるため説明を省略する。
【００５５】
プログラム実行装置制御部２は、実行要求フラグ１３および実行要求フラグ１４に示される前記開始要求および停止要求の組み合わせに基づいて、プログラム実行部３の実行の開始または停止の制御を行う。
【００５６】
具体的には、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２からプログラムの実行要求または停止要求を受けてプログラムの実行再開または停止が必要か否かを判定する。また、プログラム実行装置制御部２は、実行中のプログラムでブレークポイントを検出することによりプログラムの停止が必要か否かを判定する。
【００５７】
また、プログラム実行装置制御部２は、プログラムの実行再開またはプログラムの実行停止が必要か否かの判定結果に応じて、プログラム実行部３に対してプログラム実行再開またはプログラム実行停止の指示を行う。
【００５８】
また、プログラム実行装置制御部２は、プログラム実行部３に対してプログラム実行停止の指示を行ったプログラムに対応するデバッガのみに、停止通知を行う。
【００５９】
ここで、プログラム実行装置制御部２は、プログラムの実行再開または停止の判定を実行要求フラグ１３および実行要求フラグ１４を用いて行う。
【００６０】
具体的には、プログラム実行装置制御部２は、実行要求フラグ１３および実行要求フラグ１４に設定されている値を参照することで、プログラムの実行再開またはプログラムの停止の判定を行う。例えば、プログラム実行装置制御部２は、実行要求フラグ１３および実行要求フラグ１４に共に１が設定されていることを確認すれば、プログラム実行部３のプログラムは実行開始できる状態であると判定し、プログラム実行部３でプログラムが実行中でなければプログラムの実行を再開する。
【００６１】
ここで、例えば、プログラム実行部３でプログラムの実行が停止されている場合、かつ、プログラム実行装置制御部２が、実行要求フラグ１３に１が設定され、実行要求フラグ１４に０が設定されていることを確認する場合、プログラム実行装置制御部２は、実行要求フラグ１４に１が設定されるまで、プログラムを実行開始する制御を保留する。すなわち、プログラム実行装置制御部２は、実行要求フラグ１４に１が設定されるまで、プログラム実行部３によるプログラムの実行を停止する。
【００６２】
また、例えば、プログラム実行部３でプログラムの実行がされている場合で、かつ、プログラム実行装置制御部２が、実行要求フラグ１３または実行要求フラグ１４に０が設定されていることを確認する場合、プログラム実行装置制御部２は、プログラム実行部３のプログラムは実行継続できない状態であると判定し、プログラム実行部３でプログラムが実行中であればすべてのプログラムの実行を停止する。
【００６３】
プログラム実行部３は、複数のデバッガ（デバッガ１１およびデバッガ１２）ごとに対応するプログラムを並列して実行または停止することができる。
【００６４】
また、プログラム実行部３は、プログラム実行装置制御部２の指示に基づいて、プログラムを実行または停止する。
【００６５】
次に、シミュレータ１０での典型的な動作である「再開」、「停止」および「ブレーク停止」を例に挙げてデバッガ操作者の操作の流れに従って説明する。
【００６６】
ここで、デバッグ操作者は、複数のデバッガ（デバッガ１１およびデバッガ１２）をシミュレータ１０に接続し、シミュレータ１０を用いて複数のプログラムのデバッグを同時に行う。
【００６７】
まず、デバッガ操作者は、デバッガ１１およびデバッガ１２をシミュレータ１０に接続する。
【００６８】
次に、デバッガ操作者は、デバッガ（デバッガ１１およびデバッガ１２）ごとに対応するプログラムをプログラム実行部３にロードする。
【００６９】
デバッガ操作者が、シミュレータ１０においてデバッガ１１およびデバッガ１２による複数のプログラムの実行を開始する場合、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からプログラムの実行要求を受ける。その場合、プログラム実行装置制御部２は、プログラムの実行要求を受けて、実行再開判定ステップＳ１を実施する。
【００７０】
また、デバッガ操作者が、シミュレータ１０において複数のプログラムのデバッグを行うために単一または複数のプログラム実行停止を行う場合、プログラム実行装置制御部２は、プログラム実行停止ステップＳ２を実施する。
【００７１】
また、デバッガ操作者が、複数のプログラムのデバッグを行うためにブレークポイントを設定して、プログラム実行部３がプログラム実行中にブレークポイントを検出した場合、プログラム実行装置制御部２は、ブレーク停止ステップＳ３を実施する。
【００７２】
次に、プログラム実行装置制御部２において実施されるプログラム実行再開判定ステップＳ１、プログラム実行停止ステップＳ２およびブレーク停止ステップＳ３について説明する。
【００７３】
（プログラム実行再開判定ステップ）
まず、プログラム実行再開判定ステップＳ１について説明する。プログラム実行再開判定ステップＳ１は、本発明における第１の実施の形態において特徴的なプログラム実行再開判定方法である。
【００７４】
図３は、実施の形態１におけるプログラム実行再開判定ステップＳ１の処理を示すフローチャートである。
【００７５】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からプログラムの実行要求を受けて、プログラム実行再開判定ステップＳ１を開始する。
【００７６】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２から実行要求を受け取ったことを記憶する（Ｓ１０１：実行要求受取ステップ）。
【００７７】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガにより実行要求を受け取ったのかがわかるよう実行要求フラグ１３または実行要求フラグ１４を用いる。例えば、プログラム実行装置制御部２は、デバッガ１１から実行要求を受けたときは実行要求フラグ１３を１に、デバッガ１２から実行要求を受けたときは実行要求フラグ１４を１に設定する。ただし、実行要求フラグ１３と実行要求フラグ１４の初期値は０とする。
【００７８】
次に、プログラム実行装置制御部２は、すべてのデバッガ（デバッガ１１およびデバッガ１２）から実行要求を受けているかどうかを判定する（Ｓ１０２：実行要求受理判定ステップ）。
【００７９】
すなわち、プログラム実行装置制御部２は、実行要求フラグ１３と実行要求フラグ１４との両方に１が設定されているかどうかを確認する。
【００８０】
プログラム実行装置制御部２は、Ｓ１０２において、すべてのデバッガ（デバッガ１１およびデバッガ１２）から実行要求を受けていると判定する場合、プログラム実行装置制御部２は、プログラム実行部３に対してプログラムの実行開始を指示する（Ｓ１０３：プログラム実行再開ステップ）。
【００８１】
すなわち、プログラム実行装置制御部２は、実行要求フラグ１３と実行要求フラグ１４との両方に１が設定されていることを確認した場合、プログラム実行部３に対してプログラムの実行開始を指示する。
【００８２】
そして、プログラム実行再開判定ステップＳ１を終了する。
【００８３】
なお、プログラム実行装置制御部２は、Ｓ１０２において、すべてのデバッガ（デバッガ１１およびデバッガ１２）から実行要求を受けていないと判定する場合には、プログラム実行部３に対して何も行わずプログラム実行再開判定ステップＳ１を終了する。
【００８４】
以上のように、プログラム実行装置制御部２は、プログラム実行再開判定ステップＳ１を実施する。
【００８５】
なお、上述では言及していないが、デバッガ（デバッガ１１またはデバッガ１２）が、プログラム実行装置１に対して実行要求を行った場合には、プログラム実行装置１は、実際にプログラムを実行するかどうかによらず実行要求を受け取った旨の応答を返すので、デバッガ（デバッガ１１またはデバッガ１２）はプログラム実行状態に遷移している。
【００８６】
（プログラム停止ステップ）
次に、プログラム実行停止ステップＳ２について説明する。プログラム実行停止ステップＳ２は、本発明における第１の実施の形態において特徴的なプログラム実行停止方法である。
【００８７】
図４は、実施の形態１におけるプログラム実行停止ステップＳ２の処理を示すフローチャートである。
【００８８】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からのプログラムの実行停止要求を受けて、プログラム実行停止ステップＳ２を開始する。
【００８９】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２からプログラムの実行停止要求を受け取ったかを識別する。
【００９０】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガから実行停止要求を受け取ったのかを実行要求フラグ１３または実行要求フラグ１４を用いて識別する。例えば、プログラム実行装置制御部２は、デバッガ１１から実行停止要求を受けた場合、実行要求フラグ１３を０クリアに設定し、デバッガ１２から実行停止要求を受けた場合、実行要求フラグ１４を０クリアに設定する。ただし、実行要求フラグ１３と実行要求フラグ１４との初期値は０である。図３で説明したように、プログラム実行部３でデバッガ１１およびデバッガ１２に対応するプログラムが実行されているときは、実行要求フラグ１３と実行要求フラグ１４とは１に設定されている。
【００９１】
次に、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガからの実行要求を無効とする（Ｓ２０１：実行要求無効化ステップ）。
【００９２】
具体的には、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガにより停止要求を受け取ったのかを実行要求フラグ１３と実行要求フラグ１４とで識別し、停止要求を発信したデバッガの実行要求を無効化する。すなわち、プログラム実行装置制御部２は、デバッガ１１より停止要求を受け取った場合、デバッガ１１に対応する実行要求フラグ１３を０クリアし、実行要求フラグ１３が０であることを確認して、停止要求を発信したデバッガ１１の実行要求を無効化する。そして、実行要求が無効化されたデバッガ１１は、その後、実行要求をプログラム実行装置制御部２に発信しても、実行要求フラグ１３には反映されない。
【００９３】
次に、プログラム実行装置制御部２は、プログラム実行部３に対してすべてのプログラム実行を停止するよう指示する（Ｓ２０２：プログラム実行停止ステップ）。プログラム実行部３は、プログラム実行装置制御部２からの全プログラム実行の停止指示を受けて、実行しているすべてのプログラムを停止する。
【００９４】
次に、プログラム実行装置制御部２は、停止要求を行ったデバッガに対してのみプログラム実行を停止したことを通知する（Ｓ２０３：プログラム停止通知ステップ）。
【００９５】
そして、プログラム実行停止ステップＳ２を終了する。
【００９６】
以上のように、プログラム実行装置制御部２は、プログラム実行停止ステップＳ２を実施する。
【００９７】
プログラム実行装置制御部２は、ステップＳ２０３において、停止要求を行ったデバッガにのみプログラム実行停止通知を行うため、停止要求を行ったデバッガ以外は実行状態が維持される。そのため、停止要求を行わなかったデバッガからは不必要なメモリ参照などが発生しない。それにより、プログラム実行装置１は、デバッガ（デバッガ１１またはデバッガ１２）とプログラム実行装置１との間の通信を削減することができ、停止要求を行ったデバッガ（デバッガ１１またはデバッガ１２）からの要求を迅速に処理することができる。
【００９８】
さらに、デバッガ操作者が停止操作を行った後、デバッガ１１またはデバッガ１２からの要求がプログラム実行装置１で迅速に処理されるので、デバッガ操作者の作業の効率化に繋がる。
【００９９】
（ブレーク停止ステップ）
次に、ブレーク停止ステップＳ３について説明する。ブレーク停止ステップＳ３は、本発明における実施の形態において特徴的なプログラム実行停止方法である。
【０１００】
図５は、実施の形態１におけるブレーク停止ステップＳ３の処理を示すフローチャートである。
【０１０１】
シミュレータ１０におけるプログラム実行装置制御部２は、プログラム実行中にブレークポイントを検出した場合に、ブレーク停止ステップＳ３を開始する。
【０１０２】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２のどちらに対応するプログラムでブレークポイントを検出したかを識別する。
【０１０３】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガがブレークポイントを検出したプログラムに対応するデバッガであるのかを実行要求フラグ１３または実行要求フラグ１４を用いて識別する。例えば、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１１である場合は実行要求フラグ１３を０クリアに設定し、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１２である場合は実行要求フラグ１４を０クリアに設定する。
【０１０４】
次に、プログラム実行装置制御部２は、図４同様に、ブレークポイントを検出したプログラムに対応するデバッガからの実行要求を無効にする（Ｓ３０１：実行要求無効化ステップ）。
【０１０５】
例えば、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１１である場合、デバッガ１１に対応する実行要求フラグ１３を０クリアする。そして、プログラム実行装置制御部２は、実行要求フラグ１３が０であることを確認して、デバッガ１１からの実行要求を無効化する。
【０１０６】
また、例えば、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガがデバッガ１２である場合、デバッガ１２に対応する実行要求フラグ１４を０クリアする。そして、プログラム実行装置制御部２は、実行要求フラグ１４が０であることを確認して、デバッガ１２からの実行要求を無効化する。
【０１０７】
次に、プログラム実行装置制御部２は、プログラム実行部３に対してすべてのプログラム実行を停止するよう指示する（Ｓ３０２：プログラム実行停止ステップ）。プログラム実行部３は、プログラム実行装置制御部２からの全プログラム実行の停止指示を受けて、実行しているすべてのプログラムを停止する。
【０１０８】
次に、プログラム実行装置制御部２は、ブレークポイントを検出したプログラムに対応するデバッガに対してのみプログラム実行を停止したことを通知する（Ｓ３０３：停止通知ステップ）。
【０１０９】
そして、ブレーク停止ステップＳ３を終了する。
【０１１０】
以上のように、プログラム実行装置制御部２は、ブレーク停止ステップＳ３を実施する。
【０１１１】
プログラム実行装置制御部２は、ステップＳ３０３において、ブレークが検出されたプログラムに対応するデバッガにのみプログラム実行停止通知を行うため、ブレークが検出されたプログラムに対応するデバッガ以外は実行状態が維持される。そのため、ブレークで停止しなかったデバッガからは不必要なメモリ参照などが発生しない。それにより、プログラム実行装置１は、デバッガ（デバッガ１１またはデバッガ１２）とプログラム実行装置１と間の通信を削減することができ、ブレークが検出されたプログラムに対応するデバッガ（デバッガ１１またはデバッガ１２）からの要求を迅速に処理することができる。
【０１１２】
さらに、プログラム実行装置１（シミュレータ１０）がブレークで停止した後、デバッガ１１またはデバッガ１２からの要求がプログラム実行装置１で迅速に処理されれば、デバッガ操作者の作業の効率化に繋がる。
【０１１３】
以上のように、実施の形態１にかかるプログラム実行装置およびその制御方法は、複数プログラムの同期実行がデバッガ同士の連携なしに可能になり、停止においても不必要なデバッグアクセスが発生しない。
【０１１４】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、デバッガの状態とプログラムの実行状態の一貫性にとらわれることなくプログラム実行装置の制御を行うことができる。
【０１１５】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、プログラム実行装置が個別のデバッガによる実行要求を受け取ってもすべてのデバッガから実行要求が揃うまでプログラムの実行を保留することにより、プログラム実行装置の側でプログラムの実行に関する同期をとることができ、デバッガ間で通信を行うことなくデバッガごとに対応するプログラムを同期実行することが可能となる。
【０１１６】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、停止要求を行ったデバッガ以外には停止通知をしないことで、停止要求を行っていないデバッガは停止状態に遷移しないため、停止要求を行っていないデバッガによる不要なデバッグアクセスの発生を防ぐことができる。
【０１１７】
また、実施の形態１にかかるプログラム実行装置およびその制御方法によれば、ブレークを検出したプログラムに対応するデバッガ以外はプログラム実行装置から停止通知を受信しないため停止状態に遷移しない。これにより、ブレークを検出したプログラムに無関係なデバッガからの不要なデバッグアクセスの発生を防ぐことができる。
【０１１８】
それにより、デバッガ間に通信インターフェースを設けずに同期実行が可能で、かつ、デバッグアクセスを抑制するプログラム実行装置およびその制御方法を実現することができる。
【０１１９】
さらに、実施の形態１のプログラム実行装置およびその制御方法によれば、デバッガ間に通信インターフェースを設けずに同期実行を実現することができるだけでなく、プログラムを同期停止、同期ブレークさせる際には必要なデバッガだけを停止状態に遷移させることができるため、不必要なデバッグアクセスが発生しないようにしてデバッグ作業を迅速に行うことができる。
【０１２０】
（実施の形態２）
上記実施の形態１では、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにプログラム実行装置を制御する態様の一例について説明したが、それに限らない。実施の形態２では、プログラム実行装置を制御する態様として、実施の形態１とは別の態様の一例について説明する。
【０１２１】
図６は、実施の形態２におけるシミュレータ１０およびそれに接続するデバッガの構成を示すブロック図である。
【０１２２】
シミュレータ１０は、プログラム実行装置制御部２と、プログラム実行部３を備え、デバッガ１１、デバッガ１２と接続している。
【０１２３】
プログラム実行装置制御部２は、デバッガ１１からの接続要求または切断要求を保持する接続要求フラグ２１と、デバッガ１２からの接続要求または切断要求を保持する接続要求フラグ２２とを備える。ここで、切断要求とは、例えばデバッガ１１とシミュレータ１０との接続を切断するための要求であり、接続要求とは、新たにシミュレータ１０に物理的に接続されたデバッガが、シミュレータ１０と接続するための要求である。
【０１２４】
なお、簡単のため、本発明の実施の形態としてデバッガが２つ接続されている構成で説明を行うが、デバッガは２つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部２は、シミュレータ１０に接続されているデバッガの数だけ接続要求フラグを持ち、それぞれの接続要求フラグは対応するデバッガからの接続要求フラグを保持する。そのため、シミュレータ１０にデバッガが２つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。
【０１２５】
接続要求フラグ２１は、デバッガ１１からの接続要求または切断要求を保持する。ここで、接続要求フラグ２１は、例えば初期値として０が設定されている。
【０１２６】
また、接続要求フラグ２１は、プログラム実行装置制御部２により設定値が変更される。
【０１２７】
すなわち、接続要求フラグ２１は、デバッガ１１からの接続要求を受けて１に設定され、または切断要求を受けて０に設定されることで、デバッガ１１からの接続要求または切断要求を保持する。
【０１２８】
なお、接続要求フラグ２２は、接続要求フラグ２１と同様であるため説明を省略する。
【０１２９】
プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２から接続要求または切断要求を受けてプログラムの実行終了が必要か否かを判定する。ここで、プログラムの実行終了とは、プログラム実行部３が実行中のプログラムを終了させることだけでなく、シャットダウンなどシミュレータ１０を終了させることも含む。
【０１３０】
また、プログラム実行装置制御部２は、プログラムの実行終了が必要か否かの判定結果に応じて、プログラム実行部３に対してプログラムの実行終了の指示を行う。
【０１３１】
ここで、プログラム実行装置制御部２は、プログラムの実行終了の判定を接続要求フラグ２１および接続要求フラグ２２を用いて行う。
【０１３２】
具体的には、プログラム実行装置制御部２は、接続要求フラグ２１および接続要求フラグ２２に設定されている値を参照することで、プログラムの実行終了の判定を行う。例えば、プログラム実行装置制御部２は、接続要求フラグ２１および接続要求フラグ２２に共に０が設定されていることを確認すれば、プログラム実行終了可能状態であると判定し、プログラムの実行を終了する。
【０１３３】
一方、例えば、プログラム実行装置制御部２は、接続要求フラグ２１に０が設定され、接続要求フラグ２２に１が設定されていることを確認する場合、デバッガ１２ではプログラム実行終了不可の状態であると判断できるので、プログラム実行装置制御部２は、接続要求フラグに０が設定されるまで、プログラムを実行終了する制御を保留する。
【０１３４】
次に、本発明の実施の形態におけるプログラム実行終了判定ステップＳ４について説明する。
【０１３５】
図７は、実施の形態２におけるプログラム実行終了判定ステップＳ４の処理を示すフローチャートである。
【０１３６】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２から接続要求または切断要求を受けて、プログラム実行終了判定ステップＳ４を開始する。
【０１３７】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２から接続要求または切断要求を受け取ったことを記憶する（Ｓ４０１：接続要求または切断要求受取ステップ）。
【０１３８】
ここで、プログラム実行装置制御部２は、デバッガ１１またはデバッガ１２のいずれのデバッガにより接続要求または切断要求を受け取ったのかがわかるよう接続要求フラグ２１または接続要求フラグ２２を用いる。
【０１３９】
例えば、プログラム実行装置制御部２は、デバッガ１１から接続要求を受けたときは接続要求フラグ２１を１に、デバッガ１２から接続要求を受けたときは接続要求フラグ２２を１に設定する。反対に、プログラム実行装置制御部２は、デバッガ１１から切断要求を受けたときは接続要求フラグ２１を０に、デバッガ１２から切断要求を受けたときは接続要求フラグ２２を０に設定する。ただし、接続要求フラグ２１と接続要求フラグ２２の初期値は０とする。
【０１４０】
次に、プログラム実行装置制御部２は、すべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けているかどうかを判定する（Ｓ４０２：切断要求受理判定ステップ）。
【０１４１】
すなわち、プログラム実行装置制御部２は、接続要求フラグ２１と接続要求フラグ２２との両方に０が設定されているかどうかを確認する。
【０１４２】
プログラム実行装置制御部２は、Ｓ４０２において、すべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けていると判定する場合、プログラム実行装置制御部２は、プログラム実行部３に対してプログラムの実行終了を指示する（Ｓ４０３：プログラム実行終了ステップ）。
【０１４３】
すなわち、プログラム実行装置制御部２は、接続要求フラグ２１と接続要求フラグ２２との両方に０が設定されていることを確認した場合、プログラム実行部３に対してプログラムの実行終了を指示する。
【０１４４】
そして、プログラム実行終了判定ステップＳ４を終了する。
【０１４５】
なお、プログラム実行装置制御部２は、Ｓ４０２において、いずれかのデバッガ（デバッガ１１もしくはデバッガ１２）から接続要求を受けていると判定する場合には、プログラム実行部３に対して何も行わずプログラム実行終了判定ステップＳ４を終了する。
【０１４６】
以上のように、プログラム実行装置制御部２は、プログラム実行終了判定ステップＳ４を実施する。
【０１４７】
以上、実施の形態２によれば、シミュレータ１０は、接続されているデバッガ１１およびデバッガ１２から個別に、接続要求または切断要求を受けて、シミュレータ１０に接続されたすべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けたか否かを判定する。そして、シミュレータ１０は、すべてのデバッガ（デバッガ１１およびデバッガ１２）から切断要求を受けたと判定した場合に、プログラムの実行を終了する。
【０１４８】
このように、実施の形態２にかかるプログラム実行装置およびその制御方法は、プログラムのデバッグが終了したとシミュレータ１０（プログラム実行装置１）が判断した時点で、プログラムの実行が自動的に終了されるので、開発者が手動で終了する工数を削減することができる。
【０１４９】
以上のように、実施の形態２によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにシミュレータ１０のプログラム実行を終了することができる。
【０１５０】
（実施の形態３）
図８は、実施の形態３におけるシミュレータ１０およびそれに接続するデバッガの構成を示すブロック図である。
【０１５１】
シミュレータ１０は、プログラム実行装置制御部２と、プログラム実行部３を備え、デバッガ１１、デバッガ１２と接続している。
【０１５２】
プログラム実行装置制御部２は、プログラム実行部３がプログラムを実行したかを保持するプログラム実行フラグ３３と、デバッガ１１からのリセット要求の有効性を示す情報を保持するリセットフラグ３１と、デバッガ１２からのリセット要求の有効性を示す情報を保持するリセットフラグ３２とを備える。
【０１５３】
なお、簡単のため、本発明の実施の形態としてデバッガが２つ接続されている構成で説明を行うが、デバッガは２つ以上であればいくつ接続されていてもよい。その場合、プログラム実行装置制御部２は、シミュレータ１０に接続されているデバッガの数だけリセットフラグを持ち、それぞれのリセットフラグは、対応するデバッガからのリセット要求に対応する。そのため、シミュレータ１０にデバッガが２つ以上接続されていれば、本発明で開示した内容と同様の手法で、同様の効果を実現できる。
【０１５４】
リセットフラグ３１は、デバッガ１１からのリセット要求の有効性を示す情報を保持する。ここで、リセットフラグ３１は、初期値として０が設定されており、プログラム実行装置制御部２により設定値が変更される。
【０１５５】
例えば、リセットフラグ３１は、デバッガ１１からのリセット要求を受け、それが有効である場合には１が設定され、またそれが無効である場合は０が設定されることで、デバッガ１１からのリセット要求が有効か無効かを示す情報を保持する。
【０１５６】
プログラム実行フラグ３３は、プログラム実行部３がプログラムを実行したかどうかを示す情報を保持する。ここで、プログラム実行フラグ３３は、初期値として０が設定されており、プログラム実行装置制御部２により設定値が変更される。また、プログラムを実行したかどうかというのは、プログラムの実行中だけでなく、プログラムを実行して終了したかどうかまでも含んでいる。
【０１５７】
例えば、プログラム実行フラグ３３は、プログラム実行部３がプログラムを実行したときには１が設定される。
【０１５８】
なお、リセットフラグ３２は、リセットフラグ３１と同様であるため説明を省略する。
【０１５９】
プログラム実行装置制御部２は、シミュレータ１０にデバッガを新たに（または再度）接続する際に、そのデバッガからリセット要求を受けて、リセット処理が必要か否かを判定する。ここで、リセット処理とは、プログラム実行装置１（ここではシミュレータ１０）を再び始動の状態に戻す処理のことである。
【０１６０】
また、プログラム実行装置制御部２は、リセット処理が必要か否かの判定結果に応じて、リセット処理を行う。
【０１６１】
ここで、プログラム実行装置制御部２は、リセット処理の判定をプログラム実行フラグ３３、リセットフラグ３１およびリセットフラグ３２を用いて行う。
【０１６２】
具体的には、プログラム実行装置制御部２は、プログラム実行フラグ３３およびリセット要求を出している例えばデバッガ１１に対応するリセットフラグ３１の値を参照することで、リセット処理の判定を行う。
【０１６３】
そして、例えばプログラム実行装置制御部２は、プログラム実行フラグ３３に１、リセットフラグ３１に０が設定されていることを確認すれば、リセット処理を行わずプログラムの実行を続行する。一方、リセットフラグ３１に１が設定されていることを確認すれば、リセット処理を行いプログラムの実行を続行する。
【０１６４】
なお、リセットフラグ３２に対してもリセットフラグ３１と同様である。
【０１６５】
次に、本実施の形態３におけるリセット処理判定ステップＳ５について説明する。
【０１６６】
図９は、本発明の実施の形態３におけるリセット処理判定ステップＳ５の処理を示すフローチャートである。
【０１６７】
シミュレータ１０におけるプログラム実行装置制御部２は、デバッガ１１またはデバッガ１２からリセット要求を受けて、リセット処理判定ステップＳ５を開始する。
【０１６８】
まず、プログラム実行装置制御部２は、シミュレータ１０に接続されたデバッガ１１またはデバッガ１２からリセット要求を受け取ったことを記憶する（Ｓ５０１：リセット要求受取ステップ）。
【０１６９】
次に、プログラム実行装置制御部２は、プログラム実行フラグ３３を用いてプログラムが実行されたかどうかを判定する（Ｓ５０２：プログラム実行判定ステップ）。
【０１７０】
すなわち、プログラム実行装置制御部２は、プログラム実行フラグ３３に１が設定されているかどうかを確認する。
【０１７１】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定した場合、何も行わずリセット処理判定ステップＳ５を終了する。
【０１７２】
すなわち、プログラム実行装置制御部２は、プログラム実行フラグ３３に１が設定されていることを確認した場合、何も行わずリセット処理判定ステップＳ５を終了する。
【０１７３】
反対に、プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、プログラムが実行されていないと判定する場合には、プログラム実行装置制御部２は、リセット処理を指示する（Ｓ５０３：リセット処理実行ステップ）。
【０１７４】
そして、リセット処理判定ステップＳ５を終了する。
【０１７５】
なお、プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、デバッガ１１からの受けたリセット要求が有効であるかどうかを判定し、それが有効の場合には１を設定してリセット処理判定ステップＳ５に進む。反対に、それが無効である場合には０を設定し、リセット処理判定ステップＳ５を終了する。
【０１７６】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ５を実施する。
【０１７７】
このようにして、プログラム実行中に新たにデバッガが接続された場合でも、すでに実行しているプログラムに影響を与えることなくデバッグを継続することができる。
【０１７８】
（変形例１）
次に、本発明の実施の形態におけるリセット処理判定ステップＳ６について説明する。
【０１７９】
図１０は、実施の形態３におけるリセット処理判定ステップＳ６の処理を示すフローチャートである。
【０１８０】
リセット処理判定ステップＳ６は上記のリセット処理判定ステップＳ５にリセット処理無効通知ステップＳ６０４を追加したものである。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１８１】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定されたとき、リセット要求を出しているデバッガ（例えばデバッガ１１）に対してリセット処理が無効であったことを通知する（Ｓ６０４：無効通知ステップ）。
【０１８２】
その後、リセット処理判定ステップＳ６を終了する。
【０１８３】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ６を実施する。
【０１８４】
このように、リセット処理が無効となった旨をデバッガに通知することにより、開発者がリセット処理が無効であったことを認識し、シミュレータ１０（プログラム実行装置１）の動作を把握することができる。
【０１８５】
（変形例２）
次に、本発明の実施の形態におけるリセット処理判定ステップＳ７について説明する。
【０１８６】
図１１は、実施の形態３におけるリセット処理判定ステップＳ７の処理を示すフローチャートである。
【０１８７】
リセット処理判定ステップＳ７は前記リセット処理判定ステップＳ５にリセット処理受付判定ステップＳ７０４を追加したものである。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１８８】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定されたとき、リセット処理を受け付けるかの判定を行う。
【０１８９】
すなわち、プログラム実行装置制御部２は、リセットフラグ３１に１が設定されていることを確認した場合、リセット処理実行ステップＳ５０３を行う。そして、リセット処理実行ステップＳ５０３を実施後、リセット処理判定ステップＳ７を終了する。
【０１９０】
反対に、プログラム実行装置制御部２は、リセットフラグ３１に０が設定されていることを確認した場合、何も行わずリセット処理判定ステップＳ７を終了する。
【０１９１】
なお、リセットフラグ３２は、リセットフラグ３１と同様であるため説明を省略する。
【０１９２】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ７を実施する。
【０１９３】
それにより、プログラム実行装置制御部２は、新たに接続されたデバッガ１１またはデバッガ１２からリセット要求を受けると、プログラム実行フラグ３３の状態に関わることなく、開発者が望むタイミングで強制的にリセットすることができる。
【０１９４】
（変形例３）
次に、本発明の実施の形態におけるリセット処理判定ステップＳ８について説明する。
【０１９５】
図１２は、実施の形態３におけるリセット処理判定ステップＳ８の処理を示すフローチャートである。
【０１９６】
リセット処理判定ステップＳ８は、前記リセット処理判定ステップＳ５にデバッグ資源リセット処理実行ステップＳ８０４を追加したものである。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１９７】
プログラム実行装置制御部２は、プログラム実行判定ステップＳ５０２において、すでにプログラムが実行されていると判定されたとき、デバッグ資源のリセット処理を行う。
【０１９８】
すなわち、プログラム実行装置制御部２は、プログラム実行フラグ３３に１が設定されていることを確認した場合、デバッグ資源リセット処理実行ステップＳ８０４を行う。そして、デバッグ資源リセット処理実行ステップＳ８０４の実施後にリセット処理判定ステップＳ８を終了する。
【０１９９】
以上のように、プログラム実行装置制御部２は、リセット処理判定ステップＳ７を実施する。
【０２００】
このように、プログラム実行装置制御部２がプログラム実行中に接続したデバッガのデバッグ資源のみ初期化を行うことで、デバッグ資源が不正なまま処理が行われるのを防ぐことができる。
【０２０１】
以上、実施の形態２によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいてデバッガ同士の連携なしにリセット処理またはデバッグ資源の初期化などを実施することができる。
【０２０２】
以上のように、本発明によれば、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにプログラム実行装置を制御することのできるプログラム実行装置およびその方法を実現できる。
【０２０３】
なお、実施の形態１ないし３では、デバッガ間に通信インターフェースを設けずに、フラグに示される要求の組み合わせに基づいて、デバッガ同士の連携なしにプログラム実行装置を制御する態様として説明したが、それに限らない。すなわち、図１３に示すように、それをすべて組み合わせた態様も本発明の範囲内に含まれる。ここで、図１３は、本発明の実施の形態におけるシミュレータおよびそれに接続するデバッガの構成を示すブロック図である。
【０２０４】
以上、本発明のプログラム実行装置およびその制御方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０２０５】
本発明は、プログラム実行装置およびその制御方法に利用でき、特に、複数のプロセッサをシミュレーションするシミュレータまたは複数のプロセッサが実装された評価ボードを備えるプログラム実行装置およびその制御方法またはマルチデバッガでのシステムＬＳＩのシミュレータ制御可能なプログラム実行装置およびその制御方法に利用することができる。
【符号の説明】
【０２０６】
１、６１    プログラム実行装置
１ａ    本体装置
１ｂ    表示装置
１ｃ    入力装置
２    プログラム実行装置制御部
３、６２、６３    プログラム実行部
１０    シミュレータ
１１、１２    デバッガ
１３、１４    実行要求フラグ
２１、２２    接続要求フラグ
３１、３２    リセットフラグ
３３    プログラム実行フラグ
７３    マルチコンピュータデバッガ
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、
前記複数のデバッガのそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、
前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、
前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
ことを特徴とする制御方法。
【請求項２】
前記プログラム実行制御ステップにおいて、前記組み合わせが前記開始要求のみからなる場合、前記プログラム実行部は前記複数のプログラムすべての実行を開始する
ことを特徴とする請求項１に記載の制御方法。
【請求項３】
前記プログラム実行制御ステップにおいて、前記組み合わせが前記停止要求を含む場合、前記プログラム実行部は前記複数のプログラムすべての実行を停止し、当該停止要求に対応するデバッガのみに対して、プログラムの実行の停止の旨を通知する
ことを特徴とする請求項２に記載の制御方法。
【請求項４】
前記保持ステップにおいて、前記プログラム実行部が実行中の前記複数のプログラムのいずれかでブレークポイントが検出された場合に、当該プログラムの実行の停止要求を受け付けたとして前記ブレークポイントが検出されたプログラムに対応するデバッガからの停止要求を示すフラグを保持する
ことを特徴とする請求項３に記載の制御方法。
【請求項５】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置であって、
前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持部と、
前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御部とを備え、
前記プログラム実行制御部は、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
ことを特徴とするプログラム実行装置。
【請求項６】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するためのプログラムであって、
前記複数のデバッガそれぞれからプログラムの実行の開始要求または停止要求を受け付け、前記複数のデバッガ毎に開始要求または停止要求を示すフラグを保持する保持ステップと、
前記フラグに示される前記開始要求および停止要求の組み合わせに基づいて、前記プログラム実行部に前記複数のプログラムの実行を開始または停止させる制御を行うプログラム実行制御ステップとを含み、
前記プログラム実行制御ステップにおいて、前記プログラム実行部に前記複数のプログラムの実行を停止させた場合に、停止要求を示すフラグに対応するデバッガにプログラムの実行の停止の旨を通知する
ことをコンピュータに実行させるためのプログラム。
【請求項７】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御する制御方法であって、
前記複数のデバッガから個別に当該デバッグと前記プログラム実行装置との接続を切断するための切断要求を受け取り、当該複数のデバッガ毎に切断要求されているか否かを示すフラグを保持する切断要求保持ステップと、
前記フラグに示される前記切断要求の組み合わせに基づいて、前記プログラム実行装置を終了させる制御を行う実行終了制御ステップとを含み、
前記実行終了制御ステップは、前記フラグから、前記プログラム実行装置に接続されたすべてのデバッガが切断要求しているか否かを判定する切断判定ステップと、前記切断判定ステップにおいて前記プログラム実行装置に接続されたすべてのデバッガが切断要求していると判定される場合に、前記プログラム実行装置を終了させるプログラム実行装置終了ステップとを含む
ことを特徴とする制御方法。
【請求項８】
複数のデバッガと、前記複数のデバッガのデバッグ対象である複数のプログラムを並列に実行するプログラム実行部とを備えるプログラム実行装置を制御するプログラム実行装置制御方法であって、
前記プログラム実行部でプログラムが実行されているか否かを示す実行フラグを保持する実行フラグ保持ステップと、
前記プログラム実行装置に接続されたデバッガからリセット要求を受け取るリセット受け取りステップと、
受け取った前記リセット要求が有効か否かを判定する判定ステップと、
前記判定結果に従って前記リセット要求が有効か否かを示すリセットフラグを保持するリセットフラグ保持ステップと、
前記リセットフラグと前記実行フラグとに基づいて、前記プログラム実行装置をリセットするリセットステップとを含む
ことを特徴とする制御方法。
【請求項９】
さらに、
前記判定ステップにおいて、前記リセット要求が無効であると判定された場合に、リセット要求が無効となった旨を前記リセット要求に対応する前記デバッガに通知するステップを含む
ことを特徴とする請求項８に記載の制御方法。
【請求項１０】
前記判定ステップにおいて、前記プログラム実行装置に接続されたデバッガからリセット要求を受け取った場合に、前記実行フラグの値に関係なく、当該リセット要求を有効と判定する
ことを特徴とする請求項８に記載の制御方法。
【請求項１１】
さらに、
前記リセットフラグと前記実行フラグとに基づいて、プログラム実行装置のデバッグ資源をリセットする資源リセットステップとを含み、
資源リセットステップにおいて、前記リセットフラグにより前記リセット要求が無効であると示され、かつ、前記実行フラグにより前記プログラム実行部でプログラムが実行されていると示される場合に、前記プログラム実行装置のデバッグ資源をリセットする
ことを特徴とする請求項８に記載の制御方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009113273.tif 000017
【図２】
2009113273.tif 000018
【図３】
2009113273.tif 000019
【図４】
2009113273.tif 000020
【図５】
2009113273.tif 000021
【図６】
2009113273.tif 000022
【図７】
2009113273.tif 000023
【図８】
2009113273.tif 000024
【図９】
2009113273.tif 000025
【図１０】
2009113273.tif 000026
【図１１】
2009113273.tif 000027
【図１２】
2009113273.tif 000028
【図１３】
2009113273.tif 000029
【図１４】
2009113273.tif 000030
【国際調査報告】
2009113273.tif 000031
2009113273.tif 000032
2009113273.tif 000033
2009113273.tif 000034