(57)【要約】【課題】プログラムを現実に実行したときの不利益を避けつつ、プログラムが特定の経路上を通るかどうかを、実際に近い環境下で調べる。【解決手段】  プログラムの実行中に開始ポイント（ＰＳ）に達すると、プログラムの実行を一旦停止し、仮想実行を開始する。仮想実行においてはターゲット装置のメモリ・レジスタには直接値を書き込まないようにする。そして仮想実行において、予測ポイント（ＰＰ）に達したとき（S104:false,S106）には、実行を停止し、予測ポイント（ＰＰ）に達した旨を示すダイアログを表示する。予測ポイント（ＰＰ）に達しない場合（S104:true,S105）には、一旦停止していた開始ポイント（ＰＳ）からプログラムの実行を再開する。【選択図】図７
2010287120.tif 000002
【特許請求の範囲】
【請求項１】
ターゲット装置上で実行すべきプログラムのデバッグを行うデバッグ装置であって、
前記プログラム上の位置を示す第１ポイントと、
前記第１ポイントとは異なるプログラム上の位置を示す第２ポイントと
を設定する設定手段と、
前記プログラムを、前記ターゲット装置が備える第１記憶部に値の書き込みを行いながら実行する実行手段と、
前記実行手段による実行中のプログラムの位置が前記第１ポイントに達すると、その時点で前記第１記憶部に記憶されている値を複写し、複写した記憶内容を第２記憶部に記憶させる複写手段と、
前記実行手段は、複写後、前記第１ポイントを開始位置として第２記憶部に値の書き込みを行いながら、第１記憶部には値の書き込みを行わないで、前記プログラムを実行し、
前記複写後に前記実行手段が実行するプログラムの位置が前記第２ポイントに達するかどうか判定する判定手段と
を備えることを特徴とするデバッグ装置。
【請求項２】
前記実行手段は、前記判定手段により前記第２ポイントに達したと判定されると、プログラムの実行を停止する
ことを特徴とする請求項１に記載のデバッグ装置。
【請求項３】
前記実行手段によるプログラムの実行停止に伴い、前記第２記憶部に書き込まれた値を出力する出力手段を備える
ことを特徴とする請求項２に記載のデバッグ装置。
【請求項４】
前記設定手段は、前記第２ポイントに達した時点におけるプログラムの状態を設定し、
前記判定手段は、前記第２ポイントに達した時点におけるプログラムの状態を判定し、
前記実行手段は、
前記判定手段により前記第２ポイントに達したと判定され、かつ、設定されたプログラムの状態と判定されたプログラムの状態とが一致したと判定されたときに、プログラムの実行を停止し、
前記判定手段により前記第２ポイントに達したと判定されないか、または、設定されたプログラムの状態と判定されたプログラムの状態とが一致しないと判定されたときには、プログラムの実行を停止しない
ことを特徴とする請求項２に記載のデバッグ装置。
【請求項５】
前記第２ポイントに達しないと判定されると、
前記実行手段は、
前記複写後の前記プログラムの実行を終了するとともに、
前記第１ポイントを開始位置として、前記第１記憶部に値の書き込みを行いながらのプログラムの実行を再開する
ことを特徴とする請求項１に記載のデバッグ装置。
【請求項６】
ターゲット装置上で実行すべきプログラムのデバッグを行うデバッグ装置において実行されるデバッグ方法であって、
プログラム上の位置を示す第１ポイントと、前記第１ポイントとは異なるプログラム上の位置を示す第２ポイントとを設定する設定ステップと、
前記プログラムを、前記ターゲット装置が備える第１記憶部に値の書き込みを行いながら実行する第１実行ステップと、
前記第１実行ステップにおける実行中のプログラムの位置が前記第１ポイントに達すると、その時点で前記第１記憶部に記憶されている値を第２記憶部に複写する複写ステップと、
複写後、前記第１ポイントを開始位置として第２記憶部に値の書き込みを行いながら、第１記憶部には値の書き込みを行わないで、前記プログラムを実行する第２実行ステップと、
前記第２実行ステップにおける実行中のプログラムの位置が前記第２ポイントに達するかどうか判定する判定ステップと
を含むことを特徴とするデバッグ方法。
【請求項７】
ターゲット装置上で実行すべき他のプログラムのデバッグ処理をデバッグ装置に実行させるデバッグ支援プログラムであって、
前記デバッグ処理は、
前記他のプログラム上の位置を示す第１ポイントと、前記第１ポイントとは異なる前記他のプログラム上の位置を示す第２ポイントとを設定する設定ステップと、
前記他のプログラムを、前記ターゲット装置が備える第１記憶部に値の書き込みを行いながら実行する第１実行ステップと、
前記第１実行ステップにおける実行中の前記他のプログラムの位置が前記第１ポイントに達すると、その時点で前記第１記憶部に記憶されている値を第２記憶部に複写する複写ステップと、
複写後、前記第１ポイントを開始位置として第２記憶部に値の書き込みを行いながら、第１記憶部には値の書き込みを行わないで、前記他のプログラムを実行する第２実行ステップと、
前記第２実行ステップにおける実行中のプログラムの位置が前記第２ポイントに達するかどうか判定する判定ステップと
を含むことを特徴とするデバッグ支援プログラム。
【請求項８】
ターゲット装置上で実行すべきプログラムのデバッグを行うデバッグ装置であって、
プログラムの実行位置を示す第１ポイントと、
前記第１ポイントとは異なる実行位置を示す第２ポイントと
を設定する設定手段と、
前記プログラムを実行する実行手段と、
前記実行手段によるプログラムの実行位置が前記第１ポイントに達した後、さらに前記第２ポイントに達すると実行を停止させ、
前記第１ポイントに達した後、前記第２ポイントに達しないなら実行を停止させない実行制御手段と、
を備えることを特徴とするデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム上のエラーを探してエラーの解決を図るデバッグ作業(debugging)を支援するデバッグ装置に関し、とくにプログラムの実行停止（ブレーク）に関する。
【背景技術】
【０００２】
従来からデバッグ作業においては、実行中のプログラムを強制的に停止させるためのブレークポイントを設定する。
ブレークポイントの設定条件は、例えば、（１）プログラムの実行が特定位置に達した、（２）実行が特定の関数に達した、（３）実行が特定のメモリアドレスに達した、などを条件とすることが知られている（非特許文献１参照）。
【０００３】
ブレークポイントで停止させることで、停止時の変数の値などプログラムの動作状態をユーザは確認することができる。
もっともプログラム上のエラーのタイプによっては、一度起きた事象を完全には再現しにくいエラー（再現性に乏しいエラー）がある。
これに関して、特許文献１では、レジスタやメモリへの書き込み命令の直前に、書き込む領域に格納されているデータを退避しておき、バグの影響によりプログラムの実行が停止すると、この退避したデータを用いて、停止した位置から逆方向に１ステップずつトレースすることで再現性を向上できるとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−６６４７号公報
【非特許文献】
【０００５】
【非特許文献１】「ブレークポイント」、Visual Studio デベロッパー センター、マイクロソフト株式会社、［平成21年5月28日閲覧］、インターネット＜URL：http://msdn.microsoft.com/ja-jp/library/aa291561(VS.71).aspx＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、分岐を有するプログラムの場合、分岐先の特定の経路上にブレークポイントを設定し、このブレークポイントでプログラムを停止させたいときには、このブレークポイントに向かってプログラムが流れるように、分岐条件に応じて値などを調整する必要がある。このような値の調整は煩雑な上、調整したプログラムは本来の挙動とは異なる動作となりがちで有用性に乏しいという問題をはらんでいる。
【０００７】
また、例外的な事象が発生したときに通る経路上にブレークポイントを設定すると、この例外的な事象の影響によっては、システムに異常をきたすことがあり、その回復（特に、ハード制御を伴うプログラムの場合など）に時間やコストを要することがある。このことから、プログラムをただ漫然と実行してブレークポイントに遭遇するようなことは回避したいという要請がある。
【０００８】
本発明はこのような背景の下になされたものであって、プログラムを実行したときの不利益を避けつつ、プログラムが特定の経路上を通るかどうかを、実際に近い環境下で調べることができるデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るデバッグ装置は、ターゲット装置上で実行すべきプログラムのデバッグを行うデバッグ装置であって、前記プログラム上の位置を示す第１ポイントと、前記第１ポイントとは異なるプログラム上の位置を示す第２ポイントとを設定する設定手段と、前記プログラムを、前記ターゲット装置が備える第１記憶部に値の書き込みを行いながら実行する実行手段と、前記実行手段による実行中のプログラムの位置が前記第１ポイントに達すると、その時点で前記第１記憶部に記憶されている値を複写し、複写した記憶内容を第２記憶部に記憶させる複写手段と、前記実行手段は、複写後、前記第１ポイントを開始位置として第２記憶部に値の書き込みを行いながら、第１記憶部には値の書き込みを行わないで、前記プログラムを実行し、前記複写後に前記実行手段が実行するプログラムの位置が前記第２ポイントに達するかどうか判定する判定手段とを備えることを特徴としている。
【発明の効果】
【００１０】
本発明に係るデバッグ装置によれば、第１ポイントに達した後に、第１記憶部には値の書き込みを行わないで、前記プログラムを実行させることで第２ポイントに達するかどうかを判定できる。また、第１ポイントに達した後のプログラムの実行は、ターゲット装置が備える第１記憶部に値の書き込まない形の実行となるので、プログラムを現実に実行したときの不利益などを回避できる。
【００１１】
また、前記実行手段は、前記判定手段により前記第２ポイントに達したと判定されると、プログラムの実行を停止するとしても構わない。
この構成によれば、第２ポイントに達したときにプログラムの実行を停止するので、例えば、停止した後に第２ポイントに達する要因の解析などを行うことができる。
また、前記実行手段によるプログラムの実行停止に伴い、前記第２記憶部に書き込まれた値を出力する出力手段を備えるとしても構わない。
【００１２】
この構成によれば、例えば、第２記憶部に書き込まれた値を表示出力することで、デバッグを行うユーザに有用な情報を提供することができる。
また、前記設定手段は、前記第２ポイントに達した時点におけるプログラムの状態を設定し、前記判定手段は、前記第２ポイントに達した時点におけるプログラムの状態を判定し、前記実行手段は、前記判定手段により前記第２ポイントに達したと判定され、かつ、設定されたプログラムの状態と判定されたプログラムの状態とが一致したと判定されたときに、プログラムの実行を停止し、前記判定手段により前記第２ポイントに達したと判定されないか、または、設定されたプログラムの状態と判定されたプログラムの状態とが一致しないと判定されたときには、プログラムの実行を停止しないとしても構わない。
【００１３】
この構成によれば、プログラムの状態として、例えば、データ中の値の条件式を設定すれば、この条件式を満たしたときにはプログラムの実行を停止させ、満たさないときには停止させないとすることで、より細やかな設定が可能となり、ユーザのニーズに合わせてプログラムを停止させるかさせないかを制御できる。
また、前記第２ポイントに達しないと判定されると、前記実行手段は、前記複写後の前記プログラムの実行を終了するとともに、前記第１ポイントを開始位置として、前記第１記憶部に値の書き込みを行いながらのプログラムの実行を再開するとしても構わない。
【００１４】
この構成によれば、例えば、第２ポイントに達することを回避したいという事情がある場合に、第２ポイントには達しないという判定の保証の下で、第１ポイントからプログラムの実行を再開でき、デバッグ作業の効率化に資する。
また、本発明に係るデバッグ方法は、ターゲット装置上で実行すべきプログラムのデバッグを行うデバッグ装置において実行されるデバッグ方法であって、プログラム上の位置を示す第１ポイントと、前記第１ポイントとは異なるプログラム上の位置を示す第２ポイントとを設定する設定ステップと、前記プログラムを、前記ターゲット装置が備える第１記憶部に値の書き込みを行いながら実行する第１実行ステップと、前記第１実行ステップにおける実行中のプログラムの位置が前記第１ポイントに達すると、その時点で前記第１記憶部に記憶されている値を第２記憶部に複写する複写ステップと、複写後、前記第１ポイントを開始位置として第２記憶部に値の書き込みを行いながら、第１記憶部には値の書き込みを行わないで、前記プログラムを実行する第２実行ステップと、前記第２実行ステップにおける実行中のプログラムの位置が前記第２ポイントに達するかどうか判定する判定ステップとを含むことを特徴とする。
【００１５】
また、本発明に係るデバッグ支援プログラムは、ターゲット装置上で実行すべき他のプログラムのデバッグ処理をデバッグ装置に実行させるデバッグ支援プログラムであって、前記デバッグ処理は、前記他のプログラム上の位置を示す第１ポイントと、前記第１ポイントとは異なる前記他のプログラム上の位置を示す第２ポイントとを設定する設定ステップと、前記他のプログラムを、前記ターゲット装置が備える第１記憶部に値の書き込みを行いながら実行する第１実行ステップと、前記第１実行ステップにおける実行中の前記他のプログラムの位置が前記第１ポイントに達すると、その時点で前記第１記憶部に記憶されている値を第２記憶部に複写する複写ステップと、複写後、前記第１ポイントを開始位置として第２記憶部に値の書き込みを行いながら、第１記憶部には値の書き込みを行わないで、前記他のプログラムを実行する第２実行ステップと、前記第２実行ステップにおける実行中のプログラムの位置が前記第２ポイントに達するかどうか判定する判定ステップとを含むことを特徴とする。
【００１６】
また、本発明に係るデバッグ装置は、ターゲット装置上で実行すべきプログラムのデバッグを行うデバッグ装置であって、プログラムの実行位置を示す第１ポイントと、前記第１ポイントとは異なる実行位置を示す第２ポイントとを設定する設定手段と、前記プログラムを実行する実行手段と、前記実行手段によるプログラムの実行位置が前記第１ポイントに達した後、さらに前記第２ポイントに達すると実行を停止させ、前記第１ポイントに達した後、前記第２ポイントに達しないなら実行を停止させない実行制御手段と、を備えることを特徴とする。
【００１７】
この構成によれば、例えば、プログラムが分岐を有し、分岐先の特定の経路上に第２ポイントがある場合には、第１ポイント→第２ポイントという実行経路をたどる場合にねらいを定めてプログラムを停止できる。
【図面の簡単な説明】
【００１８】
【図１】デバッグシステム１の構成を示す機能ブロック図
【図２】ソースプログラム２０のソースコード２１を示す図
【図３】デバッガ１０における処理の流れを示すフローチャート
【図４】ポイント詳細設定メニューのウインドウ４０を示す図
【図５】デバッガ１０における仮想実行に係る処理の流れを示すフローチャート
【図６】ウインドウ８０を示す図
【図７】ソースプログラム２０の実行経路や流れを示すフローチャート
【発明を実施するための形態】
【００１９】
（実施の形態）
本実施の形態について図面を用いて説明する。
＜構成＞
図１は、デバッグシステム１の構成を示す機能ブロック図である。
デバッグシステム１は、デバッガ１０とデバッガ１０のデバッグ対象となるターゲット装置１００から構成される。
【００２０】
デバッガ１０は、制御部１２、入力受付部１４、設定部１６、表示制御部１８、ソースプログラム２０、実行部２２、実行位置判定部２４、状態判定部２６、仮想実行部２８、Ｉ／Ｆ部３０、設定格納部３６、記憶部３８を備える。
制御部１２は、例えばＣＰＵ、ＲＡＭ、ＲＯＭを含んで構成されており、ＲＯＭに格納された制御プログラムに従って各ブロックを制御する。
【００２１】
入力受付部１４は、キーボード１４ａ、マウス１４ｂを介してユーザ２から入力を受け付ける。
設定部１６は、（１）開始ポイントＰＳ、（２）予測ポイントＰＰ、(３)プログラムの状態の設定を受け付けるポイント詳細設定メニュー（図４）を表示制御部１８を介してディスプレイ１８ａに表示させる。また設定部１６は、入力受付部１４が受け付けた設定内容を設定格納部３６に格納する。
【００２２】
表示制御部１８はディスプレイ１８ａに各種表示を行わせる。
実行部２２は、ソースプログラム２０を実行する。実行の際には、ターゲット装置１００のメモリ１０４やレジスタ１０６に値の読み書きを行う。
仮想実行部２８は、ソースプログラム２０を実行する。実行部２２とは異なり、実行の際には、記憶部３８（記憶部３８には、メモリ１０４およびレジスタ１０６の情報が実行前に予め複写される。）に値の読み書きを行う。
【００２３】
実行位置判定部２４は、実行部２２または仮想実行部２８により実行されているプログラムの位置を示すプログラムカウンタ（ＰＣ）を監視し、プログラムカウンタが開始ポイントＰＳまたは予測ポイントＰＰに達したかどうかを判定する。
状態判定部２６は、仮想実行部２８がプログラムを実行している間、記憶部３８を監視し、記憶部３８の状態が設定格納部３６に設定されたプログラムの状態と一致するかどうか判定する。
【００２４】
Ｉ／Ｆ部３０は、データのやりとりを行うインターフェイスであり、ターゲット装置１００のＩ／Ｆ部１０８と各種データを送受する。
設定格納部３６は、例えばＨＤＤ（Hard Disk Drive）から構成されており、設定内容としての（１）開始ポイントＰｓ、（２）予測ポイントＰＰ、(３)プログラムの状態を格納する。
【００２５】
記憶部３８は、例えばＲＡＭから構成されており、ターゲット装置１００のメモリ１０４およびレジスタ１０６から複写したメモリ情報（メモリ１０４のアドレスおよびアドレスに対応する値を含む。）、レジスタ情報を記憶する。
ターゲット装置１００は、ＭＰＵ（Micro Processing Unit）１０２、メモリ１０４、レジスタ１０６、そしてインターフェイスを担うＩ／Ｆ部１０８を備える。
【００２６】
ターゲット装置１００の具体例としては、組み込みシステム（例えば、携帯電話、テレビ、デジタルテレビなど）に搭載される回路基板が挙げられる。
図２は、ソースプログラム２０のソースコード２１を示す図である。
このソースコード２１は、Ｃ言語で記述されており、a，b，cを引数とした関数の宣言をし（101行目）、a=3ならば値aを出力する（103行目〜105行目）。
【００２７】
b=4ならば値bを出力し、b=4以外ならば（b≠4ならば）、値cを出力する（107行目〜112行目）。
このようにソースコード２１は、プログラムの経路（処理の流れ）が分岐するif,if else文を含んでいる。
＜動作＞
図３は、デバッガ１０における処理の流れを示すフローチャートである。
【００２８】
設定部２６は表示制御部１８を介してディスプレイ１８ａにポイント詳細設定メニューを表示させる（Ｓ１１）。
そして、設定部１６は、（１）開始ポイントＰｓ、（２）予測ポイントＰＰ、(３)プログラムの状態の設定を受け付け（Ｓ１２）、受け付けた内容を設定格納部３６に格納する（Ｓ１３）。
【００２９】
ステップＳ１１〜Ｓ１３に対応するポイント詳細設定メニューを図４に示す。
ウインドウ４０は、開始ポイントＰＳを設定するボックス５０、予測ポイントＰＰを設定するボックス６０、プログラムの状態を指定するボックス７０を含む。
ボックス５０は、開始ポイントＰＳを設定するためのボックスであり、イベント指定タイプのボックス５２と、行指定タイプのボックス５４とから構成される。
【００３０】
ボックス５２は、イベント１からイベント８の8つのチェックボックスを有する。このチェックボックスを選択／非選択とすることにより、開始ポイントＰＳとすべきイベントが設定可能である。なお、各イベントはソースプログラム２０においてそれぞれ予め定義されたものである。
ボックス５４は、テキストボックス５６を含む。設定部２６は、このテキストボックス５６内に入力された番号を開始ポイントＰＳの設定すべき行番号として受け付ける。図４の例では、テキストボックス５６内に「101」の番号が入力されているので、設定部２６は101行目を開始ポイントＰＳの行番号として設定する。
【００３１】
ボックス６０は、予測ポイントＰＰを設定するためのボックスであり、テキストボックス６２を含む。設定部２６は、このテキストボックス６２内に入力された番号を予測ポイントＰＰの行番号として設定する。図４の例では、111行目が予測ポイントＰＰとして設定される。なお、ソースコード行を指定する代わりに、ニーモニックコード行を指定できるようにしてもよい。
【００３２】
ボックス７０は、チェックボックス７１、状態リストのボックス７２、状態の追加・変更のボックス７３を備える。
チェックボックス７１が選択されている間は、設定部２６はボックス７４、７６を設定可能な状態とする。対して、非選択の間は、設定部２６はボックス７４、７６を薄暗く表示し（dimmed）、設定不可能な状態とする。このようにプログラムの状態の指定を利用するかどうかは任意である。
【００３３】
状態リストのボックス７２における各状態は、メモリのアドレスを示す「開始アドレス」および「終了アドレス」、値の指定を示す「データ」を含む。
ボックス７３は、状態リストの追加を受け付ける追加ボタン７８、変更を受け付ける変更ボタン７９を含む。状態の追加の場合には、設定部２６は追加ボタン７８の押下を受け付けると、「開始アドレス」、「終了アドレス」、「データ」のそれぞれテキストボックス７７〜７９に入力された値を、新しい状態として設定格納部３６に格納すると共に、ボックス７２内の状態リストに追加する。
【００３４】
状態の変更の場合には、設定部２６は、ボックス７２内の状態リストのひとつが選択状態となると、ボックス７３内のテキストボックス７７〜７９に選択状態である状態の各値を設定格納部２６から読み出して表示し、値の変更後、変更ボタン７６の押下により変更を受け付ける。
図３に戻って、入力内容の設定を終えた後に、実行部２２がソースプログラム２０を実行を開始する（Ｓ１４）。開始のトリガは例えばユーザ２の指示に基づく。
【００３５】
そして、開始後、実行位置判定部２４によりプログラムカウンタ（ＰＣ）が開始ポイントＰＳに到達したと判定されると（Ｓ１５：Ｙｅｓ）、制御部１２は、実行部２２によるソースプログラム２０の実行を一旦停止させる（Ｓ１６）。そして、仮想実行部２８による仮想実行に移行させる（Ｓ１７）。
図５に示すように、仮想実行においては、仮想実行部２８は、設定格納部３６から（１）開始ポイントＰｓ、（２）予測ポイントＰＰ、(３)プログラムの状態を複写して準備する（Ｓ３１）。
【００３６】
そして、制御部１２は、ターゲット装置１００のメモリ１０４およびレジスタ１０８からそれぞれメモリ情報、レジスタ情報を複写して（取得して）記憶部３８に記憶させる（Ｓ３２）。
続いて、制御部１２は、仮想実行部２８に、開始ポイントＰＳからプログラム１８の仮想実行を開始させる（Ｓ３３）。
【００３７】
仮想実行の開始後、実行位置判定部２４によりプログラムカウンタ（ＰＣ）が予測ポイントＰＰに到達したと判定されると（Ｓ３４：Ｙｅｓ）、プログラム状態の設定の有無を判定する（Ｓ３７）。
設定が無ければ（Ｓ３７：Ｎｏ）、状態判定部２６は、条件成立フラグを立てる（Ｓ３９）。
【００３８】
設定が有れば（Ｓ３７：Ｙｅｓ）、状態判定部２６は、設定されたプログラムの状態を満足するかどうか判定する（Ｓ３８）。この判定は、記憶部３８内のメモリ情報またはレジスタ情報が設定格納部３６に格納されたプログラムの状態と一致するかどうかに基づいて行われる。具体的には、例えば図４のNo.1の状態が設定されているならば、記憶部３８内のメモリ情報において、開始アドレス「0x000000」から終了アドレス「0x000FFF」までのアドレスが付された値をサーチし、a=1を満たす値があれば設定されたプログラムの状態を満足したと判定する。
【００３９】
状態判定部２８により設定された状態を満足したと判定すると（Ｓ３８：Ｙｅｓ）、条件成立フラグを立てる（Ｓ３９）。
仮想実行の開始（Ｓ３３）の後、ＰＣが予測ポイントＰＰに到達したと判定されない場合（Ｓ３４：Ｎｏ）には、終了要件を満足するまで仮想実行は継続される（Ｓ３５）。
終了要件としては、例えば、予測ポイントＰＰが指定されている関数から抜け出した（関数の終端に達した）ことを要件とする。
【００４０】
条件成立フラグの処理（Ｓ３６，Ｓ３９）を終えると、制御部１２は、仮想実行部２８による仮想実行を終了させる。
そして、条件成立フラグが１であれば（Ｓ１８：１）、制御部１２は、プログラムの実行を中断（ブレーク）させ、実行部２２によるソースプログラム２０の実行を停止させる（Ｓ２０）。同時に、制御部１２は表示制御部１８に、結果表示を示すウインドウを表示させる（Ｓ２１）。
【００４１】
図６は、ステップＳ２１に対応する結果表示のウインドウの例を示す図である。
図６の（ａ）と（ｂ）は、結果表示の前と後のウインドウ８０を示す。
ウインドウ内には、100行目から112行目までのソースコードが表示されている。開始ポイントＰＳである101行目、予測ポイントＰＰの111行目は背景色が他と異なる色となっており、一目で両ポイントがわかるようになっている。
【００４２】
ダイアログ９０内には、「予測ポイントＰＰに達したため、実行を中断しました。値:a=1,b=2」というメッセージが表示されている。このメッセージを見たユーザ２は、予測ポイントＰＰに達したことがわかる。また、表示された値a=1,b=2を参考に、プログラムのソースコードの修正を行うことができる。
なお、両ポイントＰＳ，ＰＰに対応する101行目，111行目の左型には、それぞれＰＳマーク８１，ＰＰマーク８２が付されており、マウスカーソル８８をマーク８１（またはマーク８２）に重ねて行方向にドラッグさせることで、開始ポイントＰＳ（または予測ポイントＰＰ）とすべき行番号の設定を変更することができる。
【００４３】
ステップＳ１８において、条件成立フラグが０であれば（Ｓ１８：０）、制御部１２は、ステップＳ１６で開始ポイントＰＳで停止させていた実行部２２による実行を、同じ開始ポイントＰＳから再開させる（Ｓ１９）。
本実施の形態の効果を図７を参照しながら説明する。図７は、ソースプログラム２０の実行経路や流れを示すフローチャートである。
【００４４】
ステップＳ１０１〜Ｓ１０６は、ソースコード２１（図２参照）の101行目から113行目までに対応している。
上述のように、本実施の形態によれば、開始ポイントＰＳを101行目（Ｓ１０１）に設定し、予測ポイントＰＰを111行目（Ｓ１０６）に設定した上で、ステップＳ１０４がfalseで予測ポイントＰＰに達するときにだけプログラムの実行を停止させることができる。
【００４５】
まず、開始ポイントＰＳに至るまでの実行は、実行部２２によりターゲット装置１００のメモリ１０４やレジスタ１０６に値を書き込みながらの実行であるので、実際の環境下での実行結果を得ることができる。
そして、開始ポイントＰＳから予測ポイントＰＰに至るまでの実行は、仮想実行部２８による仮想実行であり、値を書き込む対象は、ターゲット装置１００のメモリ１０４・レジスタ１０６ではなく、デバッガ１０内部の記憶部３８であるので、予測ポイントＰＰに達した場合に起因するターゲット装置１０４やこのターゲット装置１０４の周辺機器への悪影響を抑えることができる。
【００４６】
また、"a==1"（図４）などのプログラムの状態を条件として指定することで、予測ポイントＰＰに達し、かつ予測ポイントＰＰでのプログラムの状態が指定したものと一致した場合にのみプログラムを停止することができる。これにより、プログラムの実行を何度も繰り返して、デバッグしたい特定のプログラムの状態を構築するという操作の手間を削減できる。
【００４７】
さらに、ステップＳ１０４がtrueで予測ポイントＰＰに達しないときには（ポイントＰＸを通るときには）、仮想実行部２８による仮想実行を終了させ、実行部２２により開始ポイントＰＳからの実行を再開する。上記仮想実行部２８による仮想実行の間は、ターゲット装置のメモリ１０４およびレジスタ１０６に値が書き込まれておらず開始ポイントＰＳの時点の値が確保されているので、円滑に実行部２２による実行の再開が可能となり、むやみにプログラムを停止させてデバッグ作業を停滞させるようなこともない。
＜補足＞
以上、本発明の実施形態について説明したが、本発明は上記の内容に限定されず、本発明の目的とそれに関連または付随する目的を達成するための各種形態においても実施可能であり、例えば、以下であってもよい。
【００４８】
１．終了要件
実施の形態では、終了要件として、予測ポイントＰＰが指定されている関数から抜け出したことを例に挙げたが、例えば、（１）予測ポイントが存在するモジュールから抜け出したこと、（２）指定したソースの行番号に達したこと、を条件としても構わない。さらには、（３）終了要件を指定しない、つまり、予測ポイントＰＰを通過しない場合でも停止しないとしてもよい。
【００４９】
これらの終了要件の指定ができるように、図４のポイント詳細設定メニュー内のようなメニューを表示してユーザから受け付けるようにしてもよい。
２．開始ポイントＰＳ
実施の形態では、図４のように、開始ポイントＰＳの指定と材料として、イベント指定と行番号指定を例に挙げたが、これらに限らず、（１）関数名で指定したり、（２）アドレス（シンボルのアドレス）で指定できるようにポイント詳細設定メニューに項目を関連付けてもよい。
【００５０】
３．プログラムの状態
実施の形態では、プログラムの状態を示す状態リストは、「開始アドレス」、「終了アドレス」、「データ」の構造（図４）であったが、さらに、この「データ」のサイズの指定の項目（１バイト、２バイト、４バイト、Don't Care）を指定できるようにしたり、この「データ」を条件式（例えば、(d<=4)||(e>=5)などとＣ言語風にする。）で指定できるようにしてもよい。
【００５１】
また、プログラムの状態として、メモリの値を例に挙げたが、これに限らず、（１）レジスタの値や（２）I/O（Input / Output Device）の状態をプログラムの状態として指定できるようにしてもよい。
４．プログラムの所在
実施の形態では、デバッガ１０内に格納されたプログラムを実行する例について説明したが、これに限らず、例えば、ターゲット装置内に組み込まれたプログラムを走らせる形であってもよい。
【００５２】
５．プログラムの言語
実施の形態では、分岐の命令の例として、if,if else文を挙げて説明したが、これに限らず例えばswitch文を用いてもよい。また、プログラムの言語はＣ言語に限らず各種のプログラム言語に適用することができる。
６．複写の対象
実施の形態では、複写の対象はターゲット装置１００のメモリ１０４およびレジスタ１０６であったが、メモリまたはレジスタのいずれか一方から複写することもあり得る。また例えば、メモリ１０４において、仮想実行中のプログラムがアクセスする範囲のアドレスに限って複写の対象とし、アクセスしない範囲のアドレスは複写しないとしてもよい。
【００５３】
７．記録媒体、プログラム
上述の実施の形態で示した動作、処理（図３，図５）をデバッグ装置のプロセッサ、及びそのプロセッサに接続された各種回路に実行させるためのプログラムコードからなる制御プログラムを、記録媒体に記録すること、又は各種通信路を介して流通させ頒布することもできる。
【００５４】
このような記録媒体には、ＩＣカード、ハードディスク、光ディスク、フレキシブルディスク、ＲＯＭ等がある。
流通、頒布された制御プログラムは、プロセッサに読み出され得るメモリ等に格納されることにより利用に供され、そのプロセッサがその制御プログラムを実行することにより実施の形態で示したような各種機能が実現されるようになる。
【産業上の利用可能性】
【００５５】
本発明に係るデバッグ装置は、効率的なデバッグ作業の支援に貢献でき有用である。
【符号の説明】
【００５６】
１  デバッグシステム
２  ユーザ
１０  デバッガ（デバッグ装置）
１２  制御部
１４  入力受付部
１６  設定部
１８  表示制御部
１８ａ  ディスプレイ
２０  プログラム
２１  ソースコード
２２  実行部
２４  実行位置判定部
２６  状態判定部
３６  設定格納部
３８  記憶部
４０，８０  ウインドウ
９０  ダイアログ
１００  ターゲット装置
１０４  メモリ
１０６  レジスタ
ＰＳ  開始ポイント（予測開始ポイント）
ＰＰ  予測ポイント
【図１】
2010287120.tif 000003
【図２】
2010287120.tif 000004
【図３】
2010287120.tif 000005
【図５】
2010287120.tif 000006
【図７】
2010287120.tif 000007
【図４】
2010287120.tif 000008
【図６】
2010287120.tif 000009