(57)【要約】【課題】デバッグ時間を短縮する。【解決手段】エミュレータ装置は、所定機能を有するマクロ回路を含み、ブレークポイントにおいてターゲットプログラムの実行を中断するマイクロコンピュータを備える。プログラム解析部は、ターゲットプログラムを解析してブレーク対象部分を抽出する。ブレークポイント制御部は、ブレーク対象部分に内部設定ブレークポイントを設定する。データ保存制御部は、内部設定ブレークポイントにおいてブレークしたときに、マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存する。復元ポイント制御部は、マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいてブレークしたときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定する。プログラム実行制御部は、復元ポイントから実行させる。【選択図】図３
2012238064.tif 000002
【特許請求の範囲】
【請求項１】
所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを備えるエミュレータ装置と、
前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するプログラム解析部と、
前記ブレーク対象部分に内部設定ブレークポイントを設定するブレークポイント制御部と、
前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するデータ保存制御部と、
前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定する復元ポイント制御部と、
前記復元ポイントから実行させるプログラム実行制御部と
を備えるデバッガと、
前記ブレークポイント情報と、前記復元ポイント情報とを格納するデータメモリと
を具備する
ソフトウェア開発支援装置。
【請求項２】
前記復元ポイント制御部は、前記ユーザブレークポイントのうちの第１ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定し、
前記第１ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第２ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記プログラム実行制御部は、前記第１ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させる
請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻す
請求項１または請求項２に記載のソフトウェア開発支援装置。
【請求項４】
前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、
前記復元ポイント制御部は、前記マクロ状態テーブルを参照して前記復元ポイントを決定する
請求項１から請求項３のいずれかに記載のソフトウェア開発支援装置。
【請求項５】
所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを制御して、前記ターゲットプログラムのデバッグを行うソフトウェア開発支援方法であって、
前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するステップと、
前記ブレーク対象部分に内部設定ブレークポイントを設定するステップと、
前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するステップと、
前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定するステップと、
前記復元ポイントから実行させるステップと
前記ブレークポイント情報と、前記復元ポイント情報とをデータメモリに格納するステップと
を具備する
ソフトウェア開発支援方法。
【請求項６】
前記復元ポイントに設定するステップは、前記ユーザブレークポイントのうちの第１ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定するステップを含み、
前記復元ポイントから実行させるステップは、前記第１ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第２ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記第１ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させるステップを含む
請求項５に記載のソフトウェア開発支援方法。
【請求項７】
前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻すステップをさらに具備する
請求項５または請求項６に記載のソフトウェア開発支援方法。
【請求項８】
前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、
前記復元ポイントに設定するステップは、前記マクロ状態テーブルを参照して前記復元ポイントを決定するステップを含む
請求項５から請求項７のいずれかに記載のソフトウェア開発支援方法。
【請求項９】
所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを備えるエミュレータ装置を制御するデバッガ装置であって、
前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するプログラム解析部と、
前記ブレーク対象部分に内部設定ブレークポイントを設定するブレークポイント制御部と、
前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するデータ保存制御部と、
前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定する復元ポイント制御部と、
前記復元ポイントから実行させるプログラム実行制御部と
を具備し、
前記ブレークポイント情報と、前記復元ポイント情報とをデータメモリに格納する
デバッガ装置。
【請求項１０】
前記復元ポイント制御部は、前記ユーザブレークポイントのうちの第１ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定し、
前記第１ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第２ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記プログラム実行制御部は、前記第１ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させる
請求項９に記載のデバッガ装置。
【請求項１１】
前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻す
請求項９または請求項１０に記載のデバッガ装置。
【請求項１２】
前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、
前記復元ポイント制御部は、前記マクロ状態テーブルを参照して前記復元ポイントを決定する
請求項９から請求項１１のいずれかに記載のデバッガ装置。
【請求項１３】
所定機能を有するマクロ回路を含み、ターゲットプログラムを実行し、ブレークポイントにおいて前記ターゲットプログラムの実行を中断するマイクロコンピュータを備えるエミュレータ装置を制御する処理をコンピュータに実行させるデバッガプログラムであって、
前記ターゲットプログラムを解析して前記マクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するステップと、
前記ブレーク対象部分に内部設定ブレークポイントを設定するステップと、
前記マイクロコンピュータが前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マイクロコンピュータの動作環境を示す復元ポイント情報を収集して保存するステップと、
前記マイクロコンピュータがユーザによって設定されるユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の初期化を実行するプログラム部分を示す前記内部設定ブレークポイントを復元ポイントに設定するステップと、
前記復元ポイントから実行させるステップと、
前記ブレークポイント情報と、前記復元ポイント情報とをデータメモリに格納するステップと
を具備する処理をコンピュータに実行させるデバッガプログラム。
【請求項１４】
前記復元ポイントに設定するステップは、前記ユーザブレークポイントのうちの第１ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記復元ポイントを設定するステップを含み、
前記復元ポイントから実行させるステップは、前記第１ユーザブレークポイントから実行再開後、前記ユーザブレークポイントのうちの第２ユーザブレークポイントにおいて前記ターゲットプログラムの実行を中断したとき、前記第１ユーザブレークポイントからの実行を指示されると、前記マイクロコンピュータに前記復元ポイントから実行させるステップを含む
請求項１３に記載の処理をコンピュータに実行させるデバッガプログラム。
【請求項１５】
前記復元ポイントから実行するとき、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときの状態に戻すように、前記マイクロコンピュータの動作環境を前記データメモリに保持される前記復元ポイント情報に基づいて書き戻すステップをさらに具備する
請求項１３または請求項１４に記載の処理をコンピュータに実行させるデバッガプログラム。
【請求項１６】
前記データメモリは、前記内部設定ブレークポイントにおいて前記ターゲットプログラムの実行を中断したときに、前記マクロ回路の状態と、中断したアドレスとを記録するマクロ状態テーブルを格納し、
前記復元ポイントに設定するステップは、前記マクロ状態テーブルを参照して前記復元ポイントを決定するステップを含む
請求項１３から請求項１５のいずれかに記載の処理をコンピュータに実行させるデバッガプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発支援装置に関し、特に半導体集積回路に搭載されるソフトウェアのデバッグに使用されるエミュレータ装置およびその制御方法に関する。
【背景技術】
【０００２】
マイクロコンピュータを用いるシステムの開発では、そのマイクロコンピュータを制御するプログラム（以下、「ターゲットプログラム」と称す）をデバッグするときに、エミュレータ装置が広く使用されている。エミュレータ装置を使用するデバッグでは、デバッグ対象のプログラムであるターゲットプログラムにブレークポイントが設定される。ターゲットプログラムが実行されると、設定されたブレークポイントまでターゲットプログラムはリアルタイムで実行される。ブレークポイントにおいて、ターゲットプログラムが実行を停止すると、エミュレータ装置の制御プログラムに制御が移され、デバッグ作業が行われる。このようなデバッグ方法がよく利用される。ターゲットプログラムにおいて、部分的に実行を繰り返してデバッグする場合、ブレークしたブレークポイントではなく、その以前にブレークして実行が再開されたブレークポイントから実行するには、毎回始めからリスタートする必要がある。そのため、ターゲットプログラムのサイズが膨大であれば、リスタートから所望の実行済みのブレークポイントに達するまでに時間がかかる。
【０００３】
このようなデバッグ方法を短時間で実現する技術が、特開２００６−１３９４４０号公報に開示されている。このエミュレータ装置は、以前のブレークポイントに戻ってターゲットプログラムのデバッグ作業を再開することができるインサーキットエミュレータである。以前に実行停止されたブレークポイントからの実行再開時に、実行停止時に保存用メモリに格納されるブレークポイント情報（ＢＰ情報）をワークエリアに書き戻し、ワークエリアを以前の実行停止時の状態に復帰させる。
【０００４】
図１は、そのエミュレータ装置の構成を示すブロック図である。エミュレータ装置１１は、デバッグ作業の対象である評価用ＭＣＵ（ＭｉｃｒｏＣｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）１２と、エミュレーションメモリ１３と、スチルメモリ１４と、保存用メモリ１６と、制御用ＭＣＵ１７とを備える。エミュレーションメモリ１３は、評価用ＭＣＵ１２がワークエリア１９として使用される。また、エミュレーションメモリ１３には、ターゲットプログラム１８が格納される。スチルメモリ１４は、ブレークポイントでの実行停止時に実行されるエミュレータ用プログラム２０が格納されている。保存用メモリ１６は、ブレークポイントでの実行停止ごとにブレークポイント情報１５（以下、「ＢＰ情報１５」という。）が格納される。制御用ＭＣＵ１７は、ＢＰ情報１５の保存や書き戻しを制御する。
【０００５】
ユーザは、開発システムに合わせて評価用ＭＣＵ１２のプログラム（ターゲットプログラム１８）を作成し、エミュレータ装置１１を用いてそれをデバッグする。スチルメモリ１４は、評価用ＭＣＵ１２に接続されるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）である。スチルメモリ１４には、エミュレータ用プログラム２０が格納されている。エミュレータ用プログラム２０は、ブレークポイントにおいてブレークして評価用ＭＣＵ１２の制御が実行モードからデバッグモードに移った時に、評価用ＭＣＵ１２がデバッグ処理を行うために実行するプログラムである。保存用メモリ１６は、制御用ＭＣＵ１７に接続されるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を備える。その容量は、評価用ＭＣＵ１２が使用するワークエリア１９の数十倍になるように設定されている。保存用メモリ１６には、ブレークポイントでの実行停止毎に収集される、評価用ＭＣＵ１２の内部レジスタおよびエミュレーションメモリ１３のワークエリア１９の内容がＢＰ情報１５として格納される。ターゲットプログラム１８に複数のブレークポイントが設定されている場合には、それぞれのＢＰ情報は別々のアドレスに格納される。また、制御用ＭＣＵ１７は、ターゲットプログラム１８をエミュレーションメモリ１３に格納したり、ＢＰ情報１５を保存用メモリ１６に格納したり、評価用ＭＣＵ１２やワークエリア１９にＢＰ情報１５を書き戻したりなどデバッグ動作を制御する。
【０００６】
図２は、このエミュレータ装置１１の動作を説明するフロー図である。エミュレータ装置１１の制御方法は、ターゲットプログラム１８をエミュレーションメモリ１３へ格納する転送ステップ３１、ブレークポイントまでをリアルタイムで実行する実行ステップ３２、ターゲットプログラム１８の終了を判定する終了判定ステップ３４、ブレークポイントで実行停止しデバッグモードに制御を移す停止ステップ３３、ブレークポイントでの実行停止ごとにＢＰ情報１５を保存用メモリ１６へ格納する保存ステップ３５、実行再開位置の変更を判定する指示判定ステップ３６、および、ＢＰ情報１５を評価用ＭＣＵ１２とワークエリア１９へ書き戻す復帰ステップ３７を備える。
【０００７】
ターゲットプログラム１８の実行中に、ブレークポイント、ターゲットプログラム１８の終了、あるいは、致命的エラー（不正コマンドの実行等）に遭遇すると、評価用ＭＣＵ１２は、ブレーク信号を制御用ＭＣＵ１７へ送信して実行モードからデバッグモードに移行する（停止ステップ３３）。
【０００８】
制御用ＭＣＵ１７は、ブレークポイントに起因するブレーク信号を受信すると（終了判定ステップ３４−Ｎｏ）、ブレークポイントの処理を行う。すなわち、制御用ＭＣＵ１７は、ブレークポイントでの実行停止毎に、そのブレークポイントでの評価用ＭＣＵ１２の内部レジスタおよびワークエリア１９の内容をＢＰ情報１５として保存用メモリ１６へ格納するように動作する（保存ステップ３５）。ＢＰ情報１５を保存用メモリ１６に格納し終わると、制御用ＭＣＵ１７は、パーソナルコンピュータ２１からの指示に基づいて、実行再開位置の判定を行う（指示判定ステップ３６）。
【０００９】
パーソナルコンピュータ２１から指示される実行再開位置が現在のブレークポイントであれば、制御用ＭＣＵ１７は、評価用ＭＣＵ１２がリアルタイム実行を再開するように、実行ステップ３２へ制御を移行する（指示判定ステップ３６−続行）。また、パーソナルコンピュータ２１から指示される実行再開位置が以前のブレークポイントであれば、制御用ＭＣＵ１７は、復帰ステップ３７へ制御を移行する（指示判定ステップ３６−変更）。
【００１０】
復帰ステップ３７では、制御用ＭＣＵ１７は、パーソナルコンピュータ２１から指示された実行再開位置のＢＰ情報１５を保存用メモリ１６から読み出して評価用ＭＣＵ１２に送り、評価用ＭＣＵ１２の内部レジスタおよびワークエリア１９に書き戻すように評価用ＭＣＵ１２を制御する。このとき、実際にエミュレーションメモリ１３にワークエリア１９の内容を書き戻すのは、エミュレータ用プログラム２０を実行する評価用ＭＣＵ１２である。ＢＰ情報１５の書き戻しが終了すると、制御用ＭＣＵ１７は、パーソナルコンピュータ２１からの指示に基づいて、評価用ＭＣＵ１２の内部レジスタおよびエミュレーションメモリ１３に必要な修正を加え、実行ステップ３２へ移行するように動作する。
【００１１】
この方法では、ブレークポイントにおいてマクロ回路内にあって外部からは見えない（メモリマッピングされていない）レジスタや値を設定することができないリードオンリーレジスタの状態の復元はできない。したがって、マイクロコンピュータが具備する複数の機能（以降、マクロ回路または周辺マクロ回路と称す）を動作させる場合に、先行して通過するポイント（以降、前方と称する）において設定されたり、起動されたりしたマクロ回路が、後に通過するポイント（以降、後方と称する）において停止後に、リスタートせずに後方のポイントから前方のポイントへ戻してもマクロ回路を前方の状態（設定開始或は起動）には戻すことができない。
【００１２】
また、システムの状態を完全に復元する方法は、例えば、特開２００５−０７１１５３号公報に開示されている。ここに開示されるソフトウェア評価システムは、ソフトウェア制御で動作する信号処理装置と、それに付随する周辺回路とを実装し、信号処理装置のスキャン回路に接続するデータ入出力回路を内蔵する。このソフトウェア評価システムは、スキャン出力手段と、スキャン入力手段とを備える。スキャン出力手段は、信号処理装置のスキャン回路から出力されるデータをシステム内部の記憶手段に記憶する。スキャン入力手段は、記憶手段に記憶されたデータを信号処理装置のスキャン回路に入力する。信号処理装置の内部フリップフロップの状態をも復元することにより、システムの状態を完全に復元する。
【００１３】
デバッグに好適なタイマに関する技術が、特開平０４−０３３１１８号公報に開示されている。このタイマは、カウンタと、このカウンタに初期値を入力するための入力ラッチと、カウンタからカウント値を出力するための出力ラッチとを有する。さらに、このタイマは、カウント値保持制御手段と、カウント値ロード手段とを備える。カウント値保持制御手段は、コンピュータシステムによるプログラムの実行を中断したときのカウント値を出力ラッチに一時保持しておく。カウント値ロード手段は、中断から復帰した際、カウント値保持制御手段によって出力ラッチに保持した値をカウンタにロードする。これにより、カウンタが中断状態になったときのカウント値からカウントを再開できる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００６−１３９４４０号公報
【特許文献２】特開２００５−０７１１５３号公報
【特許文献３】特開平０４−０３３１１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明の目的は、デバッグ時間を短縮することができるソフトウェア開発支援装置およびその制御方法を提供することにある。
【課題を解決するための手段】
【００１６】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１７】
本発明の観点では、ソフトウェア開発支援装置（１００）は、エミュレータ装置（１１１）と、デバッガ（１２６）と、データメモリ（１２５）とを具備する。エミュレータ装置（１１１）は、所定機能を有するマクロ回路（１３０）を含み、ターゲットプログラム（１１８）を実行し、ブレークポイントにおいてターゲットプログラム（１１８）の実行を中断するマイクロコンピュータ（１１２）を備える。デバッガ（１２６）は、プログラム解析部（１４１）と、ブレークポイント制御部（１４３）と、データ保存制御部（１４４）と、復元ポイント制御部（１４５）と、プログラム実行制御部（１４２）とを備える。プログラム解析部（１４１）は、ターゲットプログラム（１１８）を解析してマクロ回路の動作を制御する命令を示すブレーク対象部分を抽出する。ブレークポイント制御部（１４３）は、ブレーク対象部分に内部設定ブレークポイントを設定する。データ保存制御部（１４４）は、マイクロコンピュータ（１１２）が内部設定ブレークポイントまたはユーザブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マイクロコンピュータ（１１２）の動作環境を示す復元ポイント情報を収集して保存する。復元ポイント制御部（１４５）は、マイクロコンピュータ（１１２）がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定する。プログラム実行制御部（１４２）は、復元ポイントから実行させる。データメモリ（１２５）は、ブレークポイント情報と、復元ポイント情報とを格納する。
【００１８】
本発明の他の観点では、ソフトウェア開発支援方法は、所定機能を有するマクロ回路（１３０）を含み、ターゲットプログラム（１１８）を実行し、ブレークポイントにおいてターゲットプログラム（１１８）の実行を中断するマイクロコンピュータ（１１２）を制御して、ターゲットプログラム（１１８）のデバッグを行うソフトウェア開発支援方法であって、ターゲットプログラム（１１８）を解析してマクロ回路の動作を制御する命令を示すブレーク対象部分を抽出するステップと、ブレーク対象部分に内部設定ブレークポイントを設定するステップと、マイクロコンピュータ（１１２）が内部設定ブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マイクロコンピュータ（１１２）の動作環境を示す復元ポイント情報を収集して保存するステップと、マイクロコンピュータ（１１２）がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定するステップと、復元ポイントから実行させるステップと、ブレークポイント情報と復元ポイント情報とをデータメモリ（１２５）に格納するステップとを具備する。
【００１９】
また、本発明の他の観点では、デバッガ装置は、所定機能を有するマクロ回路（１３０）を含み、ターゲットプログラム（１１８）を実行し、ブレークポイントにおいてターゲットプログラム（１１８）の実行を中断するマイクロコンピュータ（１１２）を備えるエミュレータ装置（１１１）を制御するデバッガ装置であって、プログラム解析部（１４１）と、ブレークポイント制御部（１４３）と、データ保存制御部（１４４）と、復元ポイント制御部（１４５）と、プログラム実行制御部（１４２）とを具備する。プログラム解析部（１４１）は、ターゲットプログラム（１１８）を解析してマクロ回路の動作を制御する命令を示すブレーク対象部分を抽出する。ブレークポイント制御部（１４３）は、ブレーク対象部分に内部設定ブレークポイントを設定する。データ保存制御部（１４４）は、マイクロコンピュータ（１１２）が内部設定ブレークポイントまたはユーザブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マイクロコンピュータ（１１２）の動作環境を示す復元ポイント情報を収集して保存する。復元ポイント制御部（１４５）は、マイクロコンピュータ（１１２）がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定する。プログラム実行制御部（１４２）は、復元ポイントから実行させる。ブレークポイント情報と、復元ポイント情報とをデータメモリ（１２５）に格納する。
【００２０】
さらに、本発明の他の観点では、デバッガプログラムは、所定機能を有するマクロ回路（１３０）を含み、ターゲットプログラム（１１８）を実行し、ブレークポイントにおいてターゲットプログラム（１１８）の実行を中断するマイクロコンピュータ（１１２）を備えるエミュレータ装置（１１１）を制御する処理をコンピュータに実行させるデバッガプログラムであって、ターゲットプログラム（１１８）を解析してマクロ回路（１３０）の動作を制御する命令を示すブレーク対象部分を抽出するステップと、ブレーク対象部分に内部設定ブレークポイントを設定するステップと、マイクロコンピュータ（１１２）が内部設定ブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マイクロコンピュータ（１１２）の動作環境を示す復元ポイント情報を収集して保存するステップと、マイクロコンピュータ（１１２）がユーザによって設定されるユーザブレークポイントにおいてターゲットプログラム（１１８）の実行を中断したときに、マクロ回路の初期化を実行するプログラム部分を示す内部設定ブレークポイントを復元ポイントに設定するステップと、復元ポイントから実行させるステップと、ブレークポイント情報と復元ポイント情報とをデータメモリ（１２５）に格納するステップとを具備する処理をコンピュータに実行させる。
【発明の効果】
【００２１】
本発明によれば、後に通過するポイントにおいてプログラム実行停止後、リスタートせずに先に通過したポイントからプログラム実行開始することができ、デバッグ時間を短縮することができるソフトウェア開発支援装置およびその制御方法を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】図１は、従来のエミュレータ装置の構成を示すシステムブロック図である。
【図２】図２は、図１に示されるエミュレータ装置の動作を説明するフロー図である。
【図３】図３は、本発明の実施の形態に係るソフトウェア開発支援装置の構成を示すシステムブロック図である。
【図４】図４は、本発明の実施の形態に係る疑似命令テーブルの構成を模式的に示す図である。
【図５】図５は、本発明の実施の形態に係るマクロ状態テーブルの構成を模式的に示す図である。
【図６】図６は、本発明の実施の形態に係るソフトウェア開発支援装置の動作を説明するフロー図である。
【図７】図７は、本発明の実施の形態に係る復元ポイント検索処理を説明するためのフロー図である。
【図８】図８は、本発明の実施の形態に係るソフトウェア開発支援装置の動作を経時的に説明するためのターゲットプログラムのリストイメージを示す図である。
【図９】図９は、本発明の実施の形態に係る保存用メモリに格納されるブレークポイント情報および復元ポイント情報の例を示す図である。
【発明を実施するための形態】
【００２３】
図面を参照して発明を実施するための形態を説明する。
【００２４】
図３は、本発明の実施の形態に係るソフトウェア開発支援装置１００の構成を示すシステムブロック図である。ソフトウェア開発支援装置１００は、デバッガ１２６と、エミュレータ装置１１１と、データメモリ１２５とを具備する。
【００２５】
エミュレータ装置１１１は、制御用ＭＣＵ１１７と、評価用ＭＣＵ１１２と、エミュレーションメモリ１１３と、スチルメモリ１１４とを備え、デバッガ１２６を経由してデータメモリ１２５に接続される。エミュレーションメモリ１１３には、デバッグ対象であるターゲットプログラム１１８が格納される。スチルメモリ１１４には、評価用ＭＣＵ１１２が実行するエミュレータ用プログラム１２０が格納される。
【００２６】
制御用ＭＣＵ１１７は、評価用ＭＣＵ１１２とデバッガ１２６とを接続する。したがって、デバッガ１２６は、制御用ＭＣＵ１１７を介して評価用ＭＣＵ１１２を制御する。制御用ＭＣＵ１１７は、ターゲットプログラムをデバッガ１２６から入力し、評価用ＭＣＵ１１２に供給する。また、制御用ＭＣＵ１１７は、ターゲットプログラムに組み込まれる疑似命令のアドレス情報をデバッガ１２６から受け取る。アドレス情報は、内部ブレークポイントの設定時に使用される。
【００２７】
評価用ＭＣＵ１１２は、ターゲットプログラムを取り込み、エミュレーションメモリ１１３に格納する。スチルメモリ１１４には、エミュレーション機能を実現するためのデバッグ制御プログラムが予め格納されている。また、評価用ＭＣＵ１１２は、所定の機能を有するマクロ回路１３０を備える。
【００２８】
デバッガ１２６は、プログラム解析、プログラム実行制御等の機能を有し、エミュレータ装置１１１の制御を行なう。また、デバッガ１２６は、データメモリ１２５をアクセスしてデータの入出力を行なう。
【００２９】
データメモリ１２５は、マクロ状態テーブル１２２と、疑似命令テーブル１２３と、保存用メモリ１１６とを格納する。疑似命令テーブル１２３は、疑似命令がターゲットプログラム内に組み込まれた位置を示すアドレスをマクロ名に関連付けて格納する。マクロ状態テーブル１２２は、疑似命令の実行状況に応じて、マクロ回路の動作状態をマクロ名に関連付けて格納する。保存用メモリ１１６は、ブレークポイント情報１１５と復元ポイント情報１２４とを格納する。
【００３０】
本実施の形態では、評価用ＭＣＵ１１２に搭載されるマクロ回路は、マクロ回路制御命令が実行されることにより制御される。マクロ回路制御命令は、マクロ回路のレジスタ等に所定のデータを設定したり、マクロ回路を起動したり、停止させたりするための命令群である。プログラムリストの表記として、名称が“マクロ１”であるマクロ回路に、所定のデータを設定するマクロ回路制御命令を“マクロ１設定命令”、マクロ回路を起動するマクロ回路制御命令を“マクロ１起動命令”、マクロ回路を停止するマクロ回路制御命令を“マクロ１停止命令”と表記する。マクロ回路“マクロ２”に対しても、“マクロ２設定命令”、“マクロ２起動命令”、“マクロ２停止命令”が定義される。ここでは、説明を簡単にするために、それぞれ１命令によって設定、起動、停止を行うものとして記述するが、複数の命令によりその動作を実現してもよいし、また、設定、起動、停止以外の動作を指示するマクロ回路制御命令があってもよい。
【００３１】
また、本実施の形態において、デバッグ用に疑似命令が定義される。疑似命令は、ターゲットプログラム１１８のデバッグに関連するマクロ回路制御命令の位置を示すために、ユーザによってデバッグに先立って設定される。疑似命令は、マクロ回路制御命令の機能毎に区別できるようになっている。ここでは、上記に示されるように、疑似命令は、マクロ回路制御命令の設定命令に対応するＳｅｔ命令、起動命令に対応するＳｔａｒｔ命令、停止命令に対応するＳｔｏｐ命令を有している。すなわち、マクロ回路“マクロ１”に対して、疑似命令は、“Ｓｅｔマクロ１”、“Ｓｔａｒｔマクロ１”、“Ｓｔｏｐマクロ１”を有する。さらに、疑似命令は、“Ｓｅｔマクロ２”、“Ｓｔａｒｔマクロ２”、“Ｓｔｏｐマクロ２”のように、マクロ回路毎に用意される。また、マクロ回路制御命令が他にあれば、それに対応する疑似命令が用意される。また、ターゲットプログラム１１８に対して疑似命令が自動的に設定されてもよい。
【００３２】
図４は、疑似命令テーブル１２３の構成を模式的に示す図である。疑似命令テーブル１２３は、ターゲットプログラム１１８に組み込まれている疑似命令のアドレス一覧を示す。疑似命令テーブル１２３には、エミュレータ装置１１１に搭載されるマクロ回路１３０のマクロ名と、ターゲットプログラム１１８に組み込まれるＳｅｔ命令、Ｓｔａｒｔ命令、Ｓｔｏｐ命令のアドレスとを関連付けて、組み込まれている数分だけ格納される。図４では、マクロ回路は、“マクロ１”〜“マクロｎ”のｎ個あり、疑似命令は、それぞれＳｅｔ命令、Ｓｔａｒｔ命令、Ｓｔｏｐ命令を備え、それぞれの疑似命令が格納されるターゲートプログラム１１８上の位置（アドレス）が示される。マクロ回路を制御するマクロ回路制御命令は、ターゲットプログラム１１８の複数個所にあり、また、設定箇所数、起動箇所数、停止箇所数が同数とは限らず、疑似命令もマクロ回路毎、機能毎に数が異なり、疑似命令テーブル１２３の全て欄がデータで満たされるわけではない。
【００３３】
図５は、マクロ状態テーブル１２２の構成を模式的に示す図である。マクロ状態テーブル１２２は、エミュレータ装置１１１に搭載されるマクロ回路の動作状態を示す。デバッガ１２６は、起動時に、マクロ状態テーブル１２２を初期化する。ターゲットプログラム１１８が実行されると、疑似命令の出現毎に、デバッガ１２６は、その後実行されるマクロ回路制御命令によってマクロ回路がどのような動作状態になるかをマクロ状態テーブル１２２に記録する。すなわち、疑似命令（Ｓｅｔ命令、Ｓｔａｒｔ命令、Ｓｔｏｐ命令）の位置にデバッガ１２６によって設定される内部設定ブレークポイントにおいて、実行中のプログラムがブレークすると、疑似命令によって示されるマクロ回路の動作状態と、ブレークした疑似命令の位置とがマクロ状態テーブル１２２に記録される。マクロ状態は、マクロ回路が設定中か（Ｓｅｔ命令）、マクロ回路が起動中か（Ｓｔａｒｔ命令）、マクロ回路が停止中か（Ｓｔｏｐ命令）の状態を示す情報であり、コード化されて示される。ここでは、停止状態は０ｘ００、起動中状態は０ｘ０１、設定開始状態は０ｘ０２により示される。図５では、マクロ回路“マクロ１”〜“マクロｎ”のマクロ状態、および、Ｓｅｔ命令、Ｓｔａｒｔ命令、Ｓｔｏｐ命令の実行位置が初期化された状態で示される。疑似命令は、マクロ回路制御命令の前に設定されるため、マクロ状態テーブル１２２に示されるマクロ状態は、ブレークしたときのマクロ回路の動作状態を示すものではなく、実行が再開されたときのマクロ回路の動作状態を示す。
【００３４】
デバッガ１２６は、機能的に、プログラム解析部１４１と、プログラム実行制御部１４２と、ブレークポイント制御部１４３と、データ保存制御部１４４と、復元ポイント制御部１４５とを備え、パーソナルコンピュータに例示される情報処理装置により実現される。したがって、データメモリ１２５は、デバッガ１２６として動作する情報処理装置に搭載されるディスク装置等の記憶装置とすることが可能である。
【００３５】
プログラム解析部１４１は、ターゲットプログラム１１８を解析し、ブレーク位置を抽出する。ブレーク位置は、ユーザにより設定されたユーザブレークポイントと、マクロ回路１３０を制御するマクロ回路制御命令の箇所である。ユーザブレークポイントは、ターゲットプログラム１１８が停止したときの要因を解析するときに識別できるように、その位置が登録される。マクロ回路１３０を制御するマクロ回路制御命令の箇所には、本実施の形態では、ユーザによって疑似命令が設定されている。したがって、プログラム解析部１４１は、ターゲットプログラム１１８に設定されている疑似命令を抽出する。抽出された疑似命令は、疑似命令テーブル１２３に登録される。
【００３６】
ブレークポイント制御部１４３は、疑似命令テーブル１２３に基づいて、抽出されたマクロ回路制御命令の箇所、すなわち、疑似命令が設定されている箇所の直前の命令に内部設定ブレークポイントを設定する。内部設定ブレークポイントは、デバッガ１２６の処理のために設定されるブレークポイントであるため、ユーザに通知する必要はない。したがって、内部設定ブレークポイントにおいてブレークした場合、デバッガ１２６の処理が終了すると、ターゲットプログラム１１８の実行が続行される。
【００３７】
データ保存制御部１４４は、ターゲットプログラム１１８がブレークしたときに、制御用ＭＣＵ１１７を介して評価用ＭＣＵ１１２から各種情報を収集して保存用メモリ１１６に保存する。ブレーク箇所がユーザブレークポイントＢＰ１の場合、ブレークポイント情報１１５（ＢＰ１）として、ＢＰ１の復元ポイントのアドレスが保存用メモリ１１６に保存される。ブレーク箇所が内部設定ブレークポイントＩＢ１の場合、復元ポイント情報１２４（ＩＢ１）として、そのときのスタック領域１３２や変数領域１３３の内容、マクロ回路１３０の動作状態を示す出力端子情報等が収集され、保存用メモリ１１６に保存される。ブレークポイント情報１１５、復元ポイント情報１２４は、ターゲットプログラム１１８のブレークの発生毎に別々に保存される。ターゲットプログラム１１８の実行再開時に、データ保存制御部１４４は、保存されたブレークポイント情報１１５、復元ポイント情報１２４を、必要に応じて保存用メモリ１１６から読み出して評価用ＭＣＵ１１２に提供する。評価用ＭＣＵ１１２は、受け取ったデータを書き戻してターゲットプログラム１１８の実行を再開する。
【００３８】
プログラム実行制御部１４２は、評価用ＭＣＵ１１２の動作状態を管理する。プログラム実行制御部１４２は、評価用ＭＣＵ１１２にターゲットプログラム１１８の実行を指示し、評価用ＭＣＵ１１２がブレークするまで待機する。評価用ＭＣＵ１１２がブレークすると、そのブレーク要因を解析し、ブレーク要因に応じた処理を行う。また、プログラム実行制御部１４２は、ユーザの指示に基づいてターゲットプログラム１１８の実行再開位置を変更する場合、復元ポイント制御部１４５によって選択された復元ポイントから実行させる。
【００３９】
復元ポイント制御部１４５は、内部設定ブレークポイントにおいてブレークしたとき、復元ポイント情報１２４に基づいて、マクロ状態テーブル１２２を更新する。ユーザブレークポイントにおいてブレークしたとき、復元ポイント制御部１４５は、マクロ状態テーブル１２２を参照して復元ポイントを検索し、登録する。登録される復元ポイントは、別のユーザブレークポイントにおいてブレークして実行再開をこのユーザブレークポイントに指定されたときに使用される。復元ポイント検索処理の詳細は後述する。
【００４０】
図６、図７を参照して、本発明の実施の形態に係るソフトウェア開発支援装置１００の動作を説明する。
【００４１】
図６に示されるように、まず、エミュレータ装置１１１を制御するデバッガ１２６が起動され、図示されない外部装置からターゲットプログラム１１８がダウンロードされる（ステップＳ１００）。デバッガ１２６がパーソナルコンピュータ等の情報処理装置により実現されている場合、ターゲットプログラム１１８は、その記憶装置内に記憶されていてもよい。
【００４２】
ターゲットプログラムがダウンロードされると、デバッガ１２６のプログラム解析部１４１は、ターゲットプログラム１１８内の疑似命令を抽出し、疑似命令テーブル１２３のその疑似命令の区分に対応する欄にアドレスを登録する。また、プログラム解析部１４１は、ユーザブレークポイントを抽出し、そのアドレスをデバッガの内部情報として保持する。疑似命令がターゲットプログラム１１８に含まれていない場合（ステップＳ１０１−ＮＯ）、ユーザの指示を待つ待機状態に移行する（ステップＳ１２０）。ここでは、疑似命令が用いられるが、同様の機能を実現できるものであればそれでも良い。
【００４３】
ターゲットプログラム１１８内に疑似命令が組み込まれている場合（ステップＳ１０１−Ｙｅｓ）、ブレークポイント制御部１４３は、疑似命令の位置でターゲットプログラムをブレークさせるために、それぞれの疑似命令の一つ前の命令の位置にブレークポイントを設定する（ステップＳ１０２）。内部ブレークポイントを設定する処理が終了すると、ユーザの指示を待つ待機状態に移行する（ステップＳ１２０）。
【００４４】
ユーザからターゲットプログラム１１８を実行する指示があると、プログラム実行制御部１４２は、制御用ＭＣＵ１１７を介して評価用ＭＣＵ１１２にターゲットプログラム１１８の実行を指示する。したがって、エミュレータ装置１１１は、ブレーク状態からターゲットプログラム１１８の実行を開始して実行中状態に移行する（ステップＳ１０３）。
【００４５】
デバッガ１２６のプログラム実行制御部１４２は、エミュレータ装置１１１のプログラム実行がブレークしているか否かをブレークするまで監視し続ける（ステップＳ１２１−ＮＯ）。エミュレータ装置１１１のプログラム実行がブレークすると（ステップＳ１２１−ＹＥＳ）、デバッガ１２６のプログラム実行制御部１４２は、制御用ＭＣＵ１１７を介して評価用ＭＣＵ１１２から取得したブレークアドレスを参照し、ブレーク要因を解析する（ステップＳ１０４）。疑似命令が設定されている内部設定ブレークポイントにおいてブレークしたと判定されると（ステップＳ１０４−内部設定ＢＰ）ステップＳ１１０へ進む。ユーザブレークポイントにおいてブレークしたと判定されると（ステップＳ１０４−ユーザＢＰ）、デバッガ１２６の復元ポイント制御部１４５は、ブレークポイントの復元ポイントを検索する（ステップＳ２００）。ブレークポイントでなければ（ステップＳ１０４−その他）、プログラム実行中の強制ブレーク、不正なアドレスのアクセス、または不正なコマンドの実行等により致命的なエラーの発生か、デバッガ１２６の想定外で実行上支障のない特殊なブレークの発生かを判定する（ステップＳ１２２）。特殊なブレークで続行可能である場合（ステップＳ１２２−ＹＥＳ）、そのままステップＳ１０３に戻ってプログラム実行を再開する。続行不可能な場合（ステップＳ１２２−ＮＯ）、ステップＳ１２０に戻って実行中状態からユーザからの指示を待つ待機状態に移行する。
【００４６】
内部設定ブレークポイントでブレークしたと判定された場合（ステップＳ１０４−内部設定ＢＰ）、デバッガ１２６の復元ポイント制御部１４５は、制御用ＭＣＵ１１７を介して、ブレークした時点でのスタック領域１３２、変数領域１３３および出力端子領域の内容等を収集し、ブレークした時点の復元ポイントデータ１２４として保存用メモリ１１６に保存する。また、復元ポイント制御部１４５は、ブレークした内部設定ブレークポイントの区分に応じて、マクロ状態テーブル１２２を更新する（ステップＳ１１２）。その後、プログラム実行を再開する（ステップＳ１０３）。
【００４７】
ここで、マクロ状態テーブル１２２の更新について説明する。ブレークした箇所の疑似命令がＳｅｔマクロ１命令である場合、マクロ回路“マクロ１”が設定開始されるところである。したがって、図５に示されように、マクロ状態テーブル１２２の“マクロ１”の行の“マクロ状態”欄に設定開始中状態を示すコード０ｘ０２が書き込まれ、“Ｓｅｔ命令の位置”欄にブレークした箇所のアドレスが書き込まれる。また、ブレークした箇所の疑似命令がＳｔａｒｔマクロ１命令の場合、マクロ回路“マクロ１”が起動されるところである。したがって、マクロ状態テーブル１２２の“マクロ１”の行の“マクロ状態”欄に起動中状態を示すコード０ｘ０１が書き込まれ、“Ｓｔａｒｔ命令の位置”欄にブレークした箇所のアドレスが書き込まれる。また、ブレークした箇所の疑似命令がＳｔｏｐマクロ１命令の場合、マクロ回路“マクロ１”が停止されるところである。したがって、マクロ状態テーブル１２２の“マクロ１”の行の“マクロ状態”欄に停止中状態を示すコード０ｘ００が書き込まれ、“Ｓｔｏｐ命令の位置”にブレークした箇所のアドレスが書き込まれる。さらに、“Ｓｔａｒｔ命令の位置”、“Ｓｅｔ命令の位置”のそれぞれの列には、アドレス情報が無効であることを示す０ｘＦＦＦＦＦＦＦＦが書き込まれる。
【００４８】
ユーザが設定したユーザブレークポイントでブレークした場合（ステップＳ１０４−ユーザＢＰ）、デバッガ１２６の復元ポイント制御部１４５は、ブレークポイントの復元ポイントを検索する（ステップＳ２００）。復元ポイント検索処理の詳細は後述する。復元ポイント制御部１４５は、検索した復元ポイントのアドレスをユーザブレークポイントのブレークポイント情報１１５のアイテムとして保存用のメモリ１１６に記録する（ステップＳ１０７）。ただし、復元ポイントの検索処理において、復元ポイントがユーザブレークポイントに設定されたとき（図７ステップＳ２１１）、ユーザブレークポイントの復元ポイントの情報として、その時点でのデバッグ情報（スタック領域１３２、変数領域１３３および出力端子領域の内容等）が保存されていない。そのため、復元ポイントがユーザブレークポイントに設定されたか否かを判定し、設定されたとき（ステップＳ１１４−ＹＥＳ）、登録した復元ポイントの情報にブレークした時点でのスタック領域１３２、変数領域１３３および出力端子領域の内容等をそのブレークポイントの復元ポイント情報として追加登録する（ステップＳ１１１）。ここで記録された復元ポイントは、別のユーザブレークポイントでブレークしたときに、実行再開をこのブレークポイントから行うと指示されたときに使用される。
【００４９】
デバッガ１２６は、ユーザから以前のブレークポイントへの戻り指示があるかを判定する（ステップＳ１０８）。戻り指示がなく、そのまま続行であれば（ステップＳ１０８−ＮＯ）、プログラム実行が再開される（ステップＳ１０３）。
【００５０】
以前のブレークポイントへの戻り指示がある場合（ステップＳ１０８−ＹＥＳ）、復元ポイント制御部１４５は、マクロ状態テーブル１２２を参照して起動中のマクロ回路があるか否か調べる（ステップＳ１１６）。起動中のマクロ回路がある場合（ステップＳ１１６−ＹＥＳ）、復元ポイント制御部１４５は、その起動中のマクロ回路を停止させる（ステップＳ１１８）。データ保存制御部１４４は、保存メモリ１１６に格納されているブレークポイント情報１１５から戻り指定のブレークポイントの情報を読み出す。データ保存制御部１４４は、指定されたブレークポイントのブレークポイント情報１１５に登録されている復元ポイントにおいて記録された復元ポイント情報１２４を取り出して、制御用ＭＣＵ１１７を介して評価用ＭＣＵ１１２に提供する。評価用ＭＣＵ１１２は、スタック領域１３２、変数領域１３３、出力端子領域等を戻り指定のブレークポイントの復元ポイントにおいて記録された復元ポイント情報１２４に基づいて書き換え、プログラムカウンタ（ＰＣ）に復元ポイントのアドレスを設定する（ステップＳ１０９）。そして、プログラム実行が再開される（ステップＳ１０３）。以前のブレークポイントへの戻り指示がある場合（ステップＳ１０８−ＹＥＳ）、そのブレークポイントの復元ポイントで保存したデータを置き換えたあと、そのユーザブレークポイントの復元ポイントからプログラムは再開されるため、例え以前のブレークポイントの時点でマクロの一部の設定が済んだ場合であっても、そのマクロを、復元ポイント以降の命令の再実行により、改めて再設定することができ、マクロ回路の動作状況を以前のブレークポイントの状態に戻してプログラムを実行させることができる。
【００５１】
図７は、復元ポイント検索処理の詳細を説明するためのフロー図である。
【００５２】
復元ポイント検索処理（ステップＳ２００）では、デバッガ１２６（復元ポイント制御部１４５）は、それぞれのマクロ回路が、起動中か、停止中か、設定中かを判定するためにマクロ状態テーブル１２２（図５）を参照する。復元ポイント検索処理は、ユーザが設定したユーザブレークポイントにおいてターゲットプログラム１１８が停止したときに起動される（図６ステップＳ１０４−ユーザＢＰ）。
【００５３】
デバッガ１２６（復元ポイント制御部１４５）は、ターゲットプログラム１１８によって利用されている全てのマクロ回路が停止中であるか調べる（ステップＳ２０１）。マクロ回路が停止中か否かを判定するためには、図５に示されるように、マクロ状態テーブル１２２の“マクロ状態”の欄を参照する。この欄の内容が“停止中”を示すコード０ｘ００であれば、そのマクロ回路は“停止中”と判定される。
【００５４】
全てのマクロ回路が停止中である場合（ステップＳ２０１−ＹＥＳ）、マクロ回路を設定する必要がないため、復元ポイント制御部１４５は、ユーザブレークポイントのアドレス、すなわち、ブレークしたときのプログラムカウンタ（ＰＣ）の値をユーザブレークポイントにおける復元ポイントとして登録する。復元ポイント情報１２４として、デバッグ情報（スタック領域１３２、変数領域１３３および出力端子領域の内容）が保存メモリ１１６に記録され、復元ポイント検索処理を終了する（ステップＳ２１１）。
【００５５】
停止中ではないマクロ回路がある場合（ステップＳ２０１−ＮＯ）、復元ポイント制御部１４５は、マクロ状態テーブル１２２を参照して設定開始中のマクロ回路があるか調べる（ステップＳ２０２）。設定開始中のマクロ回路があるかを判定するためには、図５に示されるように、マクロ状態テーブル１２２の“マクロ状態”の欄を参照する。この欄の内容が“設定開始中”を示すコード０ｘ０２であれば、そのマクロ回路は“設定開始中”と判定される。
【００５６】
設定開始中のマクロ回路がある場合（ステップＳ２０２−ＹＥＳ）、設定開始中のマクロ回路の“Ｓｅｔ命令の位置”に記録されているアドレスの中から、一番前に実行された命令のアドレスを復元ポイントとして一時保存する（ステップＳ２０３）。
【００５７】
次に、デバッガ１２６の復元ポイント制御部１４５は、マクロ状態テーブル１２２を参照して起動中のマクロ回路があるか調べる（ステップＳ２０４）。起動中のマクロ回路があるかを判定するためには、図５に示されるように、マクロ状態テーブル１２２の“マクロ状態”の欄を参照する。この欄の内容が“起動中”を示すコード０ｘ０１であれば、そのマクロ回路は“起動中”と判定される。起動中のマクロ回路がない場合（ステップＳ２０４−ＮＯ）、復元ポイント制御部１４５は、復元ポイント検索処理を終了する。起動中のマクロ回路がある場合（ステップＳ２０４−ＹＥＳ）、起動中のマクロ回路の“Ｓｅｔ命令の位置”欄が有効な値（初期値以外の値）であるか調べる（ステップＳ２０５）。
【００５８】
起動中のマクロ回路の“Ｓｅｔ命令の位置”の値が有効である場合（ステップＳ２０５−ＹＥＳ）、有効であるアドレスの中から、一番前に実行された命令のアドレスを復元ポイントの候補としてデバッガ１２６内に一時的に保存する（ステップＳ２０６）。起動中のマクロ回路の“Ｓｅｔ命令の位置”欄が有効でない場合（ステップＳ２０５−ＮＯ）、起動中のマクロ回路の“Ｓｔａｒｔ命令の位置”欄に記録されているアドレスの中から、一番前に実行された命令のアドレスを復元ポイントの候補としてデバッガ１２６内に一時的に保存する（ステップＳ２０７）。
【００５９】
復元ポイントの候補を保存した復元ポイント制御部１４５は、復元ポイントの候補のアドレスと、設定開始中マクロ回路の処理（ステップＳ２０３）において復元ポイントに設定したアドレスとを比較する。復元ポイント制御部１４５は、そのうちのより前に実行されたアドレスを復元ポイントとして設定する（ステップＳ２０８）。以上により、ユーザブレークポイントのアドレス、Ｓｅｔ命令のアドレス、Ｓｔａｒｔ命令のアドレスのうちのいずれかが復元ポイントとして設定され、復元ポイント検索処理が終了する。
【００６０】
次に、図８を参照して、本実施の形態に係るソフトウェア開発支援装置の動作を経時的に説明する。
【００６１】
図８は、ターゲットプログラム１１８のリストイメージを示す図であり、既にユーザによって、ユーザブレークポイントＢＰ１、ＢＰ２、ＢＰ３と、疑似命令Ｓｅｔマクロ１、Ｓｔａｒｔマクロ１、Ｓｔｏｐマクロ１とが設定されている。マクロ回路“マクロ１”に対するマクロ回路制御命令として、“マクロ１設定命令”が行番号１２２の位置に、“マクロ１起動命令”が行番号１４７の位置に、“マクロ１停止命令”が行番号１６０の位置に、それぞれ組み込まれている。したがって、マクロ回路制御命令の位置を示す疑似命令は、“Ｓｅｔマクロ１”が行番号１２１の位置、“Ｓｔａｒｔマクロ１”が行番号１４６の位置、“Ｓｔｏｐマクロ１”が行番号１６０の位置に設定される。
【００６２】
行番号１００に示される“命令（１）”が実行開始ポイントであり、行番号２１０に示される“終了命令”が実行終了ポイントである。ユーザブレークポイントＢＰ１は、行番号１３３の位置に設定され、ユーザブレークポイントＢＰ２は、行番号１８１の位置に設定され、ユーザブレークポイントＢＰ３は、行番号１９５の位置に設定されている。したがって、ターゲットプログラム１１８の実行状態は、ユーザブレークポイントで区切られる実行１部分、実行２部分、実行３部分、実行４部分がそれぞれ連続して実行されるようにユーザから見える。実行１部分は、実行開始ポイントである行番号１００の“命令（１）”からブレークポイントＢＰ１の直前にある行番号１３２の“命令（ｉ＋ｔ）”までの間のコマンド列を含む。実行２部分は、ブレークポイントＢＰ１直後にある行番号１３４の“命令（ｍ）”からブレークポイントＢＰ２の直前にある行番号１８０の“命令（ｐ＋ｑ）”までの間のコマンド列を含む。実行３部分は、ブレークポイントＢＰ２直後にある行番号１８２の“命令（ｕ）”からブレークポイントＢＰ３の直前にある行番号１９４の“命令（ｕ＋ｖ）”までの間のコマンド列を含む。実行４部分は、ブレークポイントＢＰ３の直後にある行番号１９６の“命令（ｅ）”から最後にある行番号２１０の“終了命令”までの間のコマンド列を含む。
【００６３】
このようなターゲットプログラム１１８がソフトウェア開発支援装置１００にダウンロードされると、デバッガ１２６は、ターゲットプログラム１１８を解析して疑似命令を抽出し、疑似命令テーブル１２３を生成する。疑似命令は、その後続にマクロ回路制御命令があることを示している。したがって、デバッガ１２６は、復元ポインタを設けるために、この疑似命令の前の命令の位置に内部設定ブレークポイントを設定する。
【００６４】
行番号１２２に示される“マクロ１設定命令”は、ターゲットプログラム１１８内のマクロ回路“マクロ１”の制御に関連する最初の命令であり、マクロ回路“マクロ１”の設定を開始したことを示す。その前の行番号１２１に、マクロ回路“マクロ１”用のＳｅｔ疑似命令である“Ｓｅｔマクロ１”が、ユーザによってデバッガ１２６等を介して設定されている。その前の行番号１２０に示される“命令（ｎ）”の位置に内部設定ブレークポイントＩＢ１がデバッガ１２６により設定される。
【００６５】
行番号１４７に示される“マクロ１起動命令”は、マクロ回路“マクロ１”の初期化後にマクロ回路“マクロ１”を起動するための最初の命令であり、マクロ回路“マクロ１”の停止後に、再設定あるいは再起動する際の最初の命令でもある。したがって、行番号１４６の位置にマクロ回路用“マクロ１”のＳｔａｒｔ疑似命令である“Ｓｔａｒｔマクロ１”が、ユーザによってデバッガ１２６等を介して設定されている。その前の行番号１４５に示される“命令（ｍ＋ｋ）”の位置に内部設定ブレークポイントＩＢ２がデバッガ１２６により設定される。
【００６６】
行番号１６０に示される“マクロ１停止命令”は、マクロ回路“マクロ１”を停止するための命令であり、その前の行番号１５９の位置にマクロ回路“マクロ１”用のＳｔｏｐ疑似命令である“Ｓｔｏｐマクロ１”が、ユーザによってデバッガ１２６等を介して設定されている。その前の行番号１５８に示される命令（ｊ＋ｌ）の位置に内部設定ブレークポイントＩＢ３がデバッガ１２６により設定される。
【００６７】
このように、デバッガ１２６は、各疑似命令の１命令前のアドレスに内部設定ブレークポイントを設定し、その情報をデバッガ１２６の内部で管理する情報として保持する。ここでは、内部設定ブレークポイントは、行番号１２０、１４５、１５８の位置に設定される。
【００６８】
デバッガ１２６により内部設定ブレークポイントが設定されると、ターゲットプログラム１１８は、内部設定ブレークポイントにおいても実行が中断されるため、さらに細分化されて実行されることになる。すなわち、実行１部分は、２つに分断され、行番号１００の命令（１）から“Ｓｅｔマクロ１”の直前にある行番号１２０の命令（ｎ）までのコマンド列が連続実行されて内部設定ブレークポイントＩＢ１で中断される（実行１−１部分）。実行が再開されて、“マクロ１設定命令”からユーザブレークポイントＢＰ１の前にある行番号１３２の命令（ｉ＋ｔ）までのコマンド列が連続して実行される（実行１−２部分）。実行２領域は、３つに分断され、ブレークポイントＢＰ１直後にある行番号１３４の命令（ｍ）から“Ｓｔａｒｔマクロ１”の直前にある行番号１４５の命令（ｍ＋ｋ）までのコマンド列が連続的に実行され、内部設定ブレークポイントＩＢ２で中断される（実行２−１部分）。内部設定ブレークポイントＩＢ２において実行が再開されると、“マクロ１起動命令”から“Ｓｔｏｐマクロ１”の直前にある行番号１５８の命令（ｊ＋ｌ）までのコマンド列が連続的に実行されて、内部ブレークポイントＩＢ３で中断される（実行２−２部分）。内部設定ブレークポイントＩＢ３において実行が再開されると、“マクロ１停止命令”からブレークポイントＢＰ２の直前にある行番号１８０の命令（ｐ＋ｑ）までのコマンド列が連続的に実行されて、ブレークポイントＢＰ２で中断される（実行２−３部分）。ブレークポイントＢＰ２において実行が再開されると、ユーザブレークポイントＢＰ３まで連続して実行され（実行３部分）、ユーザブレークポイントＢＰ３から実行再開すると行番号２１０の終了命令まで連続して実行される。
【００６９】
デバッグの準備が終わると、デバッガ１２６は、ユーザからの指示を待つ。ユーザからターゲットプログラム１１８の実行が指示されると、行番号１００の先頭の命令（１）からリアルタイムでプログラムが実行される。行番号１２０の位置に設定された内部設定ブレークポイントＩＢ１においてプログラムの実行が一旦停止する。デバッガ１２６は、行番号１２０の命令（ｎ）の位置における復元ポイント情報１２４として復元ポイント情報（ＩＢ１）を保存メモリ１１６に保存し（図６ステップＳ１１０）、マクロ状態テーブル１２２を更新する（図６ステップＳ１１２）。
【００７０】
保存される復元ポイント情報（ＩＢ１）は、例えば、図９（ａ）に示されるように、そのときのスタック領域１３２の内容を示すスタック情報ＩＢ１、変数領域１３３の情報である変数情報ＩＢ１、出力端子領域の情報である出力端子情報ＩＢ１等がある。マクロ状態テーブル１２２の更新は、行番号１２０の命令（ｎ）でターゲットプログラム１１８を停止させたので、マクロ状態テーブル１２２の“マクロ１”に対応する“マクロ状態”が０ｘ０２に更新され、“Ｓｅｔ命令の位置”に命令（ｎ）のアドレスが書き込まれる。
【００７１】
復元ポイント情報１２４の収集が終了すると、行番号１２０の命令（ｎ）からプログラム実行が再開される。行番号１３３のユーザブレークポイントＢＰ１まで連続して実行されて、ターゲットプログラム１１８の実行が停止される。ユーザブレークポイントＢＰ１であるから、ユーザブレークポイントＢＰ１における復元ポイントが検索される（図６ステップＳ２００／図７）。ユーザブレークポイントＢＰ１でプログラムが停止したとき、マクロ状態テーブル１２２を参照すると、マクロ回路“マクロ１”のマクロ状態が０ｘ０２であり、マクロ回路“マクロ１”が設定開始中の段階であると判定される（図７ステップＳ２０２−ＹＥＳ）。しかし、マクロ回路“マクロ１”はまだ起動されていない状態であるため（図７ステップＳ２０４−ＮＯ）、マクロ状態テーブル１２２のＳｅｔマクロ１命令の前に格納されている命令（ｎ）のアドレスが、このときの復元ポイントとして決定される（図７ステップＳ２０３）。したがって、図９（ｂ）に示されるように、ブレークポイント情報（ＢＰ１）の復元ポイントとして命令（ｎ）のアドレスが保存メモリ１１６に保存される（図６ステップＳ１０７）。
【００７２】
このとき、マクロ回路“マクロ１”は起動していない。Ｓｅｔマクロ１命令が行番号１２１にあるため、マクロ回路“マクロ１”の一部の制御レジスタが設定されている。したがって、他のユーザブレークポイントにおいて、ユーザブレークポイントＢＰ１から実行を再開する指示があるときは、起動前の設定を行ってからマクロ回路“マクロ１”を再起動させるため、内部設定ブレークポイントＩＢ１（マクロ回路“マクロ１”の設定を開始する前の命令（ｎ）のアドレス）がユーザブレークポイントＢＰ１から実行再開するときの復元ポイントとされる。ユーザブレークポイントＢＰ１へ戻って実行再開する指示があると、この復元ポイント（命令（ｎ））から実行が再開され、マクロ回路“マクロ１”の設定は、復元ポイント（命令（ｎ））の情報が保存された時点における状態に再設定することが可能になる。
【００７３】
次に、ユーザブレークポイントＢＰ１におけるユーザの作業が終了すると、ユーザは、ターゲットプログラム１１８の実行再開を指示する。ユーザの指示に基づいて、実行が再開される（図６ステップＳ１０８−ＮＯ）と、実行２−１部分が実行され（図６ステップＳ１０３）、行番号１４５に設定される内部設定ブレークポイントＩＢ２において実行が中断される。上記と同じように、復元ポイント情報（ＩＢ２）が保存された後、ターゲットプログラム１１８の実行が再開される。このとき保存される復元ポイント情報（ＩＢ２）は、例えば、図９（ｃ）に示されるように、スタック領域１３２の内容を示すスタック情報ＩＢ２、変数領域１３３の内容を示す変数情報ＩＢ２、出力端子領域の内容を示す出力端子情報ＩＢ２等がある。マクロ状態テーブル１２２の更新は、マクロ回路“マクロ１”の“マクロ状態”を０ｘ０１（起動中）に更新し、“Ｓｔａｒｔ命令の位置”に命令（ｍ＋ｋ）のアドレスを入れる。
【００７４】
次に、内部設定ブレークポイントＩＢ３においてターゲットプログラム１１８の実行が停止され、復元ポイント情報（ＩＢ３）が保存され（図６ステップＳ１１０）、その後ターゲットプログラム１１８の実行が再開される。このとき保存される復元ポイント情報（ＩＢ３）は、例えば、図９（ｄ）に示されるように、スタック領域１３２の内容を示すスタック情報ＩＢ３、変数領域１３３の内容を示す変数情報ＩＢ３、出力端子領域の内容を示す出力端子情報ＩＢ３等がある。マクロ状態テーブル１２２の更新は、行番号１５８の命令（ｊ＋ｌ）においてターゲットプログラム１１８を停止させたので、マクロ回路１の“マクロ状態”に０ｘ００（停止状態）を書き込み、“Ｓｅｔ命令の位置”と“Ｓｔａｒｔ命令の位置”に０ｘＦＦＦＦＦＦＦＦ（無効アドレス）を、“Ｓｔｏｐ命令の位置”に命令（ｊ＋ｌ）のアドレスを書き込む。
【００７５】
次に、復元ポイントＩＢ３からターゲットプログラム１１８が実行され、行番号１６１のユーザブレークポイントＢＰ２において停止する。ユーザブレークポイントであるから、復元ポイントが検索される（図６ステップＳ２００／図７）。ユーザブレークポイントＢＰ２においてプログラムが停止したとき、マクロ状態テーブル１２２のマクロ回路“マクロ１”の“マクロ状態”は０ｘ００（停止中）を示し（図７ステップＳ２０１−ＹＥＳ）、ユーザブレークポイントＢＰ２が復元ポイントとして設定される。したがって、復元ポイント情報（ＢＰ２）およびブレークポイント情報（ＢＰ２）が保存用メモリ１１６に保存される（図６ステップＳ１０７、図７ステップＳ２１１）。保存される復元ポイント情報（ＢＰ２）は、例えば、図９（ｆ）に示されるように、スタック領域１３２の内容を示すスタック情報ＢＰ２、変数領域１３３の内容を示す変数情報ＢＰ２、出力端子領域の内容を示す出力端子情報ＢＰ２等がある。
【００７６】
ここで、ユーザブレークポイントＢＰ２から以前に実行されたユーザブレークポイントＢＰ１へ戻って実行するときの動作を示す。
【００７７】
エミュレータ装置１１１を過去にブレークしたユーザブレークポイントＢＰ１の状態に戻す場合、ユーザは、デバッガ１２６にユーザブレークポイントＢＰ１からの戻り実行を指示する（図６ステップＳ１０８−ＹＥＳ）。
【００７８】
戻り指示を受けたデバッガ１２６は、戻り指定のポイントである行番号１３３のユーザブレークポイントＢＰ１において保存したブレークポイント情報（ＢＰ１）を保存用メモリ１１６から読み出す。ブレークポイント情報（ＢＰ１）に含まれる復元ポイントは“内部設定ブレークポイントＩＢ１”を示している。復元ポイント“内部設定ブレークポイントＩＢ１”に基づいて、復元ポイント情報（ＩＢ１）を保存用メモリ１１６から読み出し、スタック領域１３２および変数領域１３３の内容、出力端子領域の内容が書き戻される（ステップＳ１０９）。戻り指示を受けたときのプログラムポインタ（ＰＣ：ブレークポイントＢＰ２において停止したとき値）を、戻り指定されたブレークポイントＢＰ１から実行するときの復元ポイントである内部設定ブレークポイントＩＢ１において停止したときのプログラムポインタ（ＰＣ）の値に書き換えられ、実行が再開される。評価用ＭＣＵ１１２は、ユーザが戻り指定したユーザブレークポイントＢＰ１までプログラムを実行し（ステップＳ１０３）、戻り指定のユーザブレークポイントＢＰ１で一旦停止する。ユーザは、ここからの実行を指示していたので、ブレークポイントにおける退避処理が終了するとすぐに実行を再開する。ユーザが指定した戻りポイントではなく、その復元ポイントから実行する理由は、マクロ回路“マクロ１”がユーザブレークポイントＢＰ１において起動中を示しており、そのまま実行を再開するとマクロ回路“マクロ１”の設定が不完全となり、期待通りの動作とならない可能性があるためである。したがって、ユーザブレークポイントＢＰ１に実行ポイントを戻すときは、ユーザブレークポイントＢＰ１の復元ポイントに遡り、そこからユーザ指定のポイントまでプログラムを実行する。
【００７９】
マクロ回路“マクロ１”は、ユーザブレークポイントＢＰ２の時点では停止中を示すが、ユーザブレークポイントＢＰ１に到達する前に一部の設定がされている。ユーザブレークポイントＢＰ１以降において、マクロ回路“マクロ１”は、その設定された値に基づいて起動される。ステップＳ１０９において、プログラムカウンタ（ＰＣ）およびスタック領域１３２、変数領域１３３、出力端子領域等の情報を書き換えると、ターゲットプログラム１１８の実行がユーザブレークポイントＢＰ２から行番号１２０の内部設定ブレークポイントＩＢ１に移動するため、ユーザブレークポイントＢＰ２において停止中であったマクロ回路“マクロ１”を再び起動前の設定開始の状態にすることができる。また、行番号１２０の内部設定ブレークポイントＩＢ１からプログラムを実行して、ユーザの戻り指定のポイントでは、マクロ回路の設定を含め、プログラムをユーザ指定のポイントの状態に戻すことができる。
【００８０】
このように、本発明では周辺マクロが設定開始中または起動中のマクロ回路があれば、一旦設定開始前または起動前の状態に戻してからマクロ回路を再起動してプログラム実行を行なうため、書き込みシーケンスがあるようなレジスタや周辺マクロ回路内にあり外から見えていない（メモリマッピングされていない）レジスタやリードオンリーのマクロ回路内のレジスタなどの復元が出来る。したがって、デバッグ時間を短縮できる効果がある。
【００８１】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００８２】
１１  エミュレータ装置
１２  評価用ＭＣＵ
１３  エミュレーションメモリ
１４  スチルメモリ
１５  ブレークポイント情報
１６  保存用メモリ
１７  制御用ＭＣＵ
１８  ターゲットプログラム
１９  ワークエリア
２０  エミュレータ用プログラム
２１  パーソナルコンピュータ
１００  ソフトウェア開発支援装置
１１１  エミュレータ装置
１１２  評価用ＭＣＵ
１１３  エミュレーションメモリ
１１４  スチルメモリ
１１５  ブレークポイント情報
１１６  保存用メモリ
１１７  制御用ＭＣＵ
１１８  ターゲットプログラム
１２０  エミュレータ用プログラム
１２２  マクロ状態テーブル
１２３  疑似命令テーブル
１２４  復元ポイント情報
１２５  データメモリ
１２６  デバッガ
【図１】
2012238064.tif 000003
【図２】
2012238064.tif 000004
【図３】
2012238064.tif 000005
【図４】
2012238064.tif 000006
【図５】
2012238064.tif 000007
【図６】
2012238064.tif 000008
【図７】
2012238064.tif 000009
【図８】
2012238064.tif 000010
【図９】
2012238064.tif 000011