(57)【要約】【課題】複数のブレークポイントの停止順序を制御することができるデバッグ方法を提供する。【解決手段】本発明のデバッグ方法は、ブレークポイントに対して優先度を与え、優先度に基づいて、ブレークポイントの有効化と無効化を行うことにより、常に有効なブレークポイントを１つになるように制御する。すべてのブレークポイントに停止させるまで、ブレークポイントの有効化と無効化を繰り返すことにより、ブレークポイントの停止順序を制御する。【選択図】図１
2012003671.tif 000002
【特許請求の範囲】
【請求項１】
メモリ上で保持されるブレークポイント優先度マップと、ここで、前記ブレークポイント優先度マップは、デバッグ対象プログラムのブレークポイントに対する優先度を記録し、
前記ブレークポイント優先度マップの前記優先度が最も高い前記ブレークポイントから順番に、唯一つの前記ブレークポイントの有効化を行い、その他の前記ブレークポイントについては、無効化を行うブレークポイント有効化制御部と、
デバッグ対象プログラムの処理を行っている間に、有効化されている前記ブレークポイントで処理を停止させるデバッガ制御部と
を備えるデバッグ装置。
【請求項２】
ブレークポイント有効化制御部が、デバッグ対象プログラムのブレークポイントに対する優先度を記録したブレークポイント優先度マップに含まれる前記ブレークポイントのうち、前記優先度の最も高い前記ブレークポイントを１つだけ有効にするステップと、
デバッガ制御部が、デバッグ対象プログラムの処理を行っている間に、有効化されている前記ブレークポイントで処理を停止させるステップと、
前記ブレークポイント有効化制御部が、停止させた前記ブレークポイントを無効にするかどうかを判定するステップと、
前記ブレークポイント有効化制御部が、停止させた前記ブレークポイントを無効にする場合には、停止させた前記ブレークポイントの次に前記優先度が高いブレークポイントを有効にするステップと
を含むデバッグ方法。
【請求項３】
請求項２に記載のデバッグ方法であって、
前記デバッガ制御部が、メモリ上で保持されるブレーク条件情報を更に参照して、前記ブレークポイントに停止させるステップと、ここで、前記ブレーク条件情報は、論理式を用いてソースコードとは直接関係しない条件も設定することができるブレークポイント停止制御用の停止条件を含み、デバッグ時の前記ブレークポイントの停止制御のために使用され、
前記ブレークポイント有効化制御部が、前記ブレーク条件情報を更に参照して、停止させた前記ブレークポイントを無効にするかどうかを判定するステップと
を更に含むデバッグ方法。
【請求項４】
請求項２又は３に記載のデバッグ方法であって、
前記デバッガ制御部が、メモリ上で保持されるグループＩＤ情報を更に参照して、前記ブレークポイントに停止させるステップと、ここで、前記グループＩＤ情報は、複数の前記ブレークポイントに対して、前記ブレークポイントをグループ化して管理するために使用され、
前記デバッガ制御部が、いずれかの前記グループＩＤにおいて、同一の前記グループＩＤが設定されている全ての前記ブレークポイントに停止させると、デバッグを終了させるステップと
を更に含むデバッグ方法。
【請求項５】
請求項２乃至４のいずれか１項に記載のデバッグ方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムのデバッグ方法に関し、特にデバッグ時のブレークポイントの制御に関する。
【背景技術】
【０００２】
近年、システムに求められる機能は増加傾向にあり、それに伴ってマイクロコンピュータ等の半導体集積回路は機能が複雑になり、制御のためのプログラム開発の負荷が非常に大きくなっている。プログラムの試験で利用されるデバッグ装置においても、機能が複雑化してきており、特に、プログラムが使用しているメモリの状態の確認や変更のために、プログラムを所定の場所で停止させるブレークポイントの制御機能の強化が望まれている。
【０００３】
特開２００５−３５２５９１号公報（特許文献１）は、マルチプロセッサシステムにおけるブレークポイントの停止条件の制御方法に関する技術が記載されている。この発明は、各プロセッサにおける各ブレークポイント発生条件が設定されるブレークポイント設定テーブルと、各プロセッサで発生した各ブレーク要因を格納するブレークポイント履歴テーブルを備えている。ブレークポイント設定テーブルとブレークポイント履歴テーブルを参照することにより、各プロセッサのブレークポイント発生条件と、各プロセッサで発生した各ブレーク要因が一致する場合に、デバッグ対象プログラムをブレークさせるように制御している。このように制御することで、１つのプロセッサのブレーク要因が発生しただけで、デバッグ対象プログラムを停止させることを防ぎ、マルチプロセッサシステムで実行されるプログラムのデバッグ効率を向上させている。
【０００４】
特開平５−０８１０６９号公報（特許文献２）は、複数のブレークポイントを設定した状態で、オペレータが意図するブレークポイントまで実行を進められるデバッグ方法に関する技術が記載されている。この発明のデバッグ方法は、各ブレークポイントにレベル値を設定し、一定のレベルのブレークポイントだけを有効にしてデバッグすることで、デバッグ効率を向上させているが、設定されている複数のブレークポイントの停止順序についての制御はしていない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３５２５９１号公報
【特許文献２】特開平５−０８１０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、オペレータが複数のブレークポイントを設定していても、オペレータが意図した順序で処理を停止させるデバッグ装置、デバッグ方法及びデバッガプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のデバッグ装置は、ブレークポイント優先度マップと、ブレークポイント有効化制御部と、デバッガ制御部を備える。ブレークポイント優先度マップは、デバッグ対象プログラムのブレークポイントに対する優先度を記録する。ブレークポイント有効化制御部は、ブレークポイント優先度マップの優先度が最も高いブレークポイントから順番に、唯一つのブレークポイントの有効化を行い、その他のブレークポイントについては、無効化を行う。デバッガ制御部は、デバッグ対象プログラムの処理を行っている間に、有効化されているブレークポイントで処理を停止させる制御を行う。
【０００８】
本発明のデバッグ装置により実施されるデバッグ方法は、ブレークポイント有効化制御部が、デバッグ対象プログラムのブレークポイントに対する優先度を記録したブレークポイント優先度マップに含まれるブレークポイントのうち、優先度の最も高いブレークポイントを１つだけ有効にするステップと、デバッガ制御部が、デバッグ対象プログラムの処理を行っている間に、有効化されているブレークポイントで処理を停止させるステップと、ブレークポイント有効化制御部が、停止させたブレークポイントを無効にするかどうかを判定するステップと、ブレークポイント有効化制御部が、停止させたブレークポイントを無効にする場合には、停止させたブレークポイントの次に優先度の高いブレークポイントを有効にするステップとを含む。
【発明の効果】
【０００９】
本発明によれば、オペレータが複数のブレークポイントを設定していても、オペレータが意図した順序で処理を停止させるデバッグ装置、デバッグ方法及びデバッガプログラムを提供することができる。オペレータが意図した順序で処理を停止させることで、オペレータによるデバッグ作業時の手順ミス、確認ミス等を防止することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の第１実施形態におけるデバッグ装置のシステム構成図である。
【図２】図２は、本発明の第１実施形態におけるブレークポイント優先度マップ１３である。
【図３Ａ】図３Ａは、本発明の第１実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【図３Ｂ】図３Ｂは、本発明の第１実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【図４】図４は、本発明の第２実施形態におけるデバッグ装置のシステム構成図である。
【図５】図５は、本発明の第２実施形態におけるブレークポイント優先度マップ１３である。
【図６Ａ】図６Ａは、本発明の第２実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【図６Ｂ】図６Ｂは、本発明の第２実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【図７】図７は、本発明の第３実施形態におけるデバッグ装置のシステム構成図である。
【図８】図８は、本発明の第３実施形態におけるブレークポイント優先度マップ１３である。
【図９Ａ】図９Ａは、本発明の第３実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【図９Ｂ】図９Ｂは、本発明の第３実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
＜第１実施形態＞
添付図面を参照して、本発明の第１実施形態によるデバッグ装置を以下に説明する。
【００１２】
［構成の説明］
はじめに、本実施形態におけるデバッグ装置の構成の説明を行う。図１は、本発明の第１実施形態におけるデバッグ装置のシステム構成図である。デバッグ装置１は、デバッガ端末２、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３、メモリ４、記憶装置５及びシステムバス６で構成されている。
【００１３】
デバッガ端末２は、オペレータがデバッグ装置を使用するための入出力装置である。ＣＰＵ３は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）及びアプリケーションプログラムを実行する制御装置である。メモリ４は、ＣＰＵ３が作業領域として使用する主記憶装置である。記憶装置５は、ＯＳ及びアプリケーションプログラム等が格納されている補助記憶装置である。記憶装置５には、本実施形態におけるデバッガプログラム１０が格納されている。システムバス６は、ＣＰＵ３と、デバッガ端末２、メモリ４及び記憶装置５とデータの送受信を行う通信路である。
【００１４】
次に、デバッグ装置１のメモリ４上で保持されるデータの構成について説明する。メモリ４には、デバッガプログラム１０、デバッガ対象プログラム２０、命令退避領域３０及びレジスタ退避領域３１の領域が確保される。
【００１５】
デバッガプログラム１０は、コマンドインタフェース１１、ブレークポイント有効化制御部１２、ブレークポイント優先度マップ１３、デバッガ制御部１４及びデバッガインタフェース１５で構成される。
【００１６】
デバッガプログラム１０は、本実施形態におけるデバッグ装置のデバッグ機能を実現するプログラムである。デバッガ対象プログラム２０は、デバッガプログラム１０がデバッグの対象とするプログラムである。命令退避領域３０は、オペレータにより設定されたブレークポイントに対応する命令が、処理を停止させるためにトラップ命令等に置換された際に、ブレークポイントに対応する命令を退避し、格納しておくための退避格納領域である。レジスタ退避領域３１は、デバッグ対象プログラム２０の実行が中断され、デバッガプログラム１０が呼び出されて実行される際に、ＣＰＵ３のレジスタ内容を退避し、格納しておくための退避格納領域である。コマンドインタフェース１１は、オペレータがデバッガ端末２から入力したコマンドを受け付けるデバッガプログラム１０のモジュールである。ブレークポイント有効化制御部１２は、オペレータにより設定されたブレークポイントに対して、ブレークポイントの有効／無効を制御するデバッガプログラム１０のモジュールである。ブレークポイント優先度マップ１３は、デバッグ対象プログラム２０を中断させるためのブレークポイントと、ブレークポイントの優先度を管理し、デバッガプログラム１０によって読み込みと書き込みが行われるメモリ上のテーブルである。デバッガ制御部１４は、デバッグ対象プログラム２０の処理を進め、ブレークポイントで処理を停止させる制御を行うデバッガプログラム１０のモジュールである。デバッガインタフェース１５は、デバッガプログラム１０とデバッグ対象プログラム２０の間でデータを送受信するモジュールである。
【００１７】
図２は、本発明の第１実施形態におけるブレークポイント優先度マップ１３である。オペレータによって設定された本発明の第１実施形態における各ブレークポイントは、ＩＤ情報１３ａ、優先度情報１３ｂ、有効状態情報１３ｃ、ブレーク情報１３ｄによって制御される。
【００１８】
ＩＤ情報１３ａは、ブレークポイントを識別するためのＩＤである。優先度情報１３ｂは、ブレークポイントの優先度を表す情報である。ブレークポイントの優先度は、正の整数で表現され、数値が小さいほど優先度が高い。したがって、優先度が１のブレークポイントが、最も優先度が高いブレークポイントとなる。有効状態情報１３ｃは、ブレークポイントが有効であるかどうかを示すフラグである。ブレーク情報１３ｄは、ブレークポイントの停止条件と、ブレークポイントが設定されている場所を特定する情報（プログラムの命令のアドレス、又はファイル名と行番号等）が格納されている。
【００１９】
［動作方法の説明］
次に、本発明の第１実施形態におけるデバッグ装置のブレークポイントの制御方法の説明を行う。図３Ａ及び図３Ｂは、本発明の第１実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【００２０】
（ステップＳ１００）
オペレータは、デバッガ端末２からデバッガプログラム１０を起動する。
【００２１】
（ステップＳ１０１）
デバッガプログラム１０は、コマンドインタフェース１１を介して、オペレータの入力を受け付ける。オペレータは、デバッガ端末２を使用して、ブレークポイント優先度マップ１３の優先度情報１３ｂに設定される優先度と、ブレークポイント優先度マップ１３のブレーク情報１３ｄに設定されるブレーク情報を与えることにより、デバッグ対象プログラム２０に対するブレークポイントを設定する。
【００２２】
このとき、ブレークポイント優先度マップ１３で管理されるブレークポイントに対して、オペレータが設定したブレークポイントを一意に識別するために、ＩＤ情報１３ａが設定される。ＩＤ情報１３ａは、デバッガプログラム１０が自動で付与しても良いし、オペレータの入力によって直接設定しても良い。
【００２３】
ブレークポイント有効化制御部１２は、ブレークポイントに対して設定した優先度に基づいて、ブレークポイント優先度マップ１３の有効状態情報１３ｃを設定する。ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３を参照し、設定されているすべてのブレークポイント中で最も高い優先度を持つブレークポイントの有効状態情報１３ｃを有効状態（例えば“１”）に設定（以降、有効化と称する。）する。
【００２４】
ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレーク情報１３ｄで指定されたデバッグ対象プログラム２０の命令を命令退避領域３０に格納し、代わりにトラップ命令に置き換える。それ以外のブレークポイントについては、ブレークポイント優先度マップ１３上の有効状態情報１３ｃを無効状態（例えば  “０”）に設定（以降、無効化と称する。）する。ブレークポイント有効化制御部１２は、無効化されたブレークポイントのブレーク情報１３ｄで指定された命令がトラップ命令に置換されている場合には、命令退避領域３０から元の命令に戻す。
【００２５】
また、オペレータは、ブレークポイント優先度マップ１３で管理されないブレークポイント（従来技術における一般のブレークポイント）を設定することもできる。
【００２６】
（ステップＳ１０２）
オペレータは、デバッガ端末２を使用して、デバッグを開始する操作を行う。
【００２７】
（ステップＳ１０３）
デバッガ制御部１４は、デバッグ対象プログラム２０の処理を次の処理に進める。
【００２８】
（ステップＳ１０４）
ＣＰＵ３が、トラップ命令を検知した場合、ステップＳ１０５に進む。トラップ命令を検知しなければ、ステップＳ１０３に進む。
【００２９】
（ステップＳ１０５）
デバッガ制御部１４は、デバッグ対象プログラムをトラップ命令で検出したブレークポイントで停止させる。
【００３０】
（ステップＳ１０６）
デバッガ制御部１４は、トラップ命令で検出したブレークポイントがブレークポイント優先度マップ１３で設定されているブレークポイントであるかを判断する。ブレークポイント優先度マップ１３で設定されているブレークポイントであれば、ステップＳ１０７に進み、ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）であれば、ステップＳ１０８に進む。
【００３１】
（ステップＳ１０７）
ブレークポイント有効化制御部１２は、ステップＳ１０４で、処理を停止させたブレークポイント優先度マップ１３のブレークポイントを無効化する。ブレークポイント有効化制御部１２は、トラップ命令に置換されていた、無効化したブレークポイントのブレーク情報１３ｄで指定されていた命令を、命令退避領域３０から元に戻す。
【００３２】
（ステップＳ１０８）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３を参照することにより、次に有効化するブレークポイントが存在するか確認する。また、ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）が存在するか確認する。ブレークポイントが存在する場合には、ステップＳ１０９に進み、ブレークポイントが存在しない場合には、ステップＳ１１１に進む。
【００３３】
（ステップＳ１０９）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３に設定されているブレークポイントであるかを確認する。ブレークポイント優先度マップ１３に設定されているブレークポイントである場合には、ステップＳ１１０に進み、ブレークポイント優先度マップ１３に設定されているブレークポイントではない場合には、ステップＳ１０３に進む。
【００３４】
（ステップＳ１１０）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３において、次に有効化するブレークポイントを有効化する。ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレーク情報１３ｄで指定されたデバッグ対象プログラム２０の命令を命令退避領域３０に格納し、代わりにトラップ命令に置き換える。その後、ステップＳ１０３に進む。
【００３５】
（ステップＳ１１１）
デバッガ制御部１４は、ステップＳ１０８で、ブレークポイントが存在しなかった場合は、オペレータにより設定されたブレークポイントの停止条件をすべて満たし、まだ停止条件を満たしていないブレークポイントは存在しないと判断する。デバッガ制御部１４は、ＣＰＵ３に対して、デバッグ対象プログラム２０の実行終了指示を行い、実行が終了したことをデバッガ端末２により表示する。
【００３６】
本発明の第１実施形態によれば、従来技術における一般のブレークポイントは設定せずに、ブレークポイント優先度マップ１３で管理されるブレークポイントのみを設定しておけば、優先度の高いブレークポイントから順番にブレークポイントを有効にすることで、常に有効なブレークポイントは１つとなる。そのため、オペレータのブレークポイントの優先度の与え方と、デバッグ対象プログラム２０の処理順序の構造が合っていれば、必ず意図した順序で処理を停止させることができ、オペレータによるデバッグ作業時の手順ミス、確認ミス等を防止することができる。
【００３７】
＜第２実施形態＞
添付図面を参照して、本発明の第２実施形態によるデバッグ装置を以下に説明する。
【００３８】
［構成の説明］
はじめに、本実施形態におけるデバッグ装置の構成の説明を行う。図４は、本発明の第２実施形態におけるデバッグ装置のシステム構成図である。デバッグ装置１は、デバッガ端末２、ＣＰＵ３、メモリ４、記憶装置５、及びシステムバス６で構成されている。本実施形態におけるデバッグ装置の構成は、第１実施形態におけるデバッグ装置の構成と同様である。
【００３９】
次に、デバッグ装置１のメモリ４上で保持されるデータの構成について説明する。メモリ４には、デバッガプログラム１０、デバッガ対象プログラム２０、命令退避領域３０及びレジスタ退避領域３１の領域が確保される。
【００４０】
デバッガプログラム１０は、コマンドインタフェース１１、ブレークポイント有効化制御部１２、ブレークポイント優先度マップ１３、デバッガ制御部１４、デバッガインタフェース１５及びブレーク条件情報格納領域１６で構成される。
【００４１】
本実施形態におけるデバッグ装置のメモリ４上で保持されるデータの構成は、デバッガプログラム１０の内部構成だけが異なり、第１実施形態とは、ブレーク条件情報格納領域１６が存在することと、ブレークポイント優先度マップ１３のデータ構造にブレーク条件情報１３ｅが追加されている点が異なる。
【００４２】
ブレーク条件情報格納領域１６は、ブレークポイント優先度マップ１３で保持されているブレークポイントのうち、有効化されているブレークポイントに対するブレーク条件情報１３ｅを格納しておく領域である。
【００４３】
図５は、本発明の第２実施形態におけるブレークポイント優先度マップ１３である。図２の優先度マップに対して、ブレーク条件情報１３ｅを追加した構成になっている。
【００４４】
ブレーク条件情報１３ｅは、論理式で表現される。論理式は、例えば、ブレーク情報１３ｄに対応するブレークポイントを、特定回数だけ通過したことを停止条件とするカウント条件式や、特定の変数やレジスタ等の演算を行い、結果が指定した数値に等しいか等を、停止条件として条件式で表したものである。ブレーク情報１３ｄに格納されているブレークポイントの停止条件とは、デバッグ時のブレークポイントの停止条件として、デバッグ対象プログラム２０のソースコードとは直接関係しないような、より自由度の高い停止条件を指定できる点が異なる。
【００４５】
［動作方法の説明］
次に、本発明の第２実施形態におけるデバッグ装置のブレークポイントの制御方法の説明を行う。図６Ａ及び図６Ｂは、本発明の第２実施形態におけるブレークポイントの制御方法を示すフローチャートである。
【００４６】
（ステップＳ２００）
オペレータは、デバッガ端末２からデバッガプログラム１０を起動する。
【００４７】
（ステップＳ２０１）
デバッガプログラム１０は、コマンドインタフェース１１を介して、オペレータの入力を受け付ける。オペレータは、デバッガ端末２を使用して、ブレークポイント優先度マップ１３の優先度情報１３ｂに設定される優先度と、ブレークポイント優先度マップ１３のブレーク情報１３ｄに設定されるブレーク情報と、ブレークポイント優先度マップ１３のブレーク情報１３ｅに設定されるブレーク条件情報を与えることにより、デバッグ対象プログラム２０に対するブレークポイントを設定する。
【００４８】
このとき、ブレークポイント優先度マップ１３で管理されるブレークポイントに対して、オペレータが設定したブレークポイントを一意に識別するために、ＩＤ情報１３ａが設定される。ＩＤ情報１３ａは、デバッガプログラム１０が自動で付与しても良いし、オペレータの入力によって直接設定しても良い。
【００４９】
ブレークポイント有効化制御部１２は、ブレークポイントに対して設定した優先度に基づいて、ブレークポイント優先度マップ１３の有効状態情報１３ｃを設定する。ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３を参照し、設定されているすべてのブレークポイント中で最も高い優先度を持つブレークポイントの有効状態情報１３ｃを有効化する。
【００５０】
ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレークポイント優先度マップ１３のブレーク条件情報１３ｅをブレーク条件情報格納領域１６に格納する。
【００５１】
ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレーク情報１３ｄで指定されたデバッグ対象プログラム２０の命令を命令退避領域３０に格納し、代わりにトラップ命令に置き換える。それ以外のブレークポイントについては、ブレークポイント優先度マップ１３上の有効状態情報１３ｃを無効化する。ブレークポイント有効化制御部１２は、無効化されたブレークポイントのブレーク情報１３ｄで指定された命令がトラップ命令に置換されている場合には、命令退避領域３０から元の命令に戻す。
【００５２】
また、オペレータは、ブレークポイント優先度マップ１３で管理されないブレークポイント（従来技術における一般のブレークポイント）を設定することもできる。
【００５３】
（ステップＳ２０２）
オペレータは、デバッガ端末２を使用して、デバッグを開始する操作を行う。
【００５４】
（ステップＳ２０３）
デバッガ制御部１４は、デバッグ対象プログラム２０の処理を次の処理に進める。
【００５５】
（ステップＳ２０４）
ＣＰＵ３は、トラップ命令を検知した場合は、ステップＳ２０５に進む。トラップ命令を検知しなければ、ステップＳ２０３に進む。
【００５６】
（ステップＳ２０５）
デバッガ制御部１４は、トラップ命令で検出したブレークポイントがブレークポイント優先度マップ１３で設定されているブレークポイントであるかを判断する。ブレークポイント優先度マップ１３で設定されているブレークポイントであれば、ステップＳ２０６に進み、ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）であれば、ステップＳ２０８に進む。
【００５７】
（ステップＳ２０６）
デバッガ制御部１４は、ブレーク条件情報格納領域１４を参照して、すべてのブレーク条件を満たしたか確認する。すべてのブレーク条件を成立させた場合には、ステップＳ２０７に進み、すべてのブレーク条件を成立させていない場合には、ステップＳ２０３に進む。例えば、条件が真の間、処理を繰り返すループ内の処理でブレークポイントを設定し、はじめの３回だけ処理を停止させる条件をブレーク条件情報として設定していた場合には、３回停止させるまでは、処理を停止させたブレークポイント優先度マップ１３のブレークポイントを無効化しない。
【００５８】
（ステップＳ２０７）
デバッガ制御部１４は、デバッグ対象プログラム２０をトラップ命令で検出したブレークポイントで停止させる。
【００５９】
（ステップＳ２０８）
ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）であるため、デバッガ制御部１４は、デバッグ対象プログラムをトラップ命令で検出したブレークポイントで停止させる。
【００６０】
（ステップＳ２０９）
ブレークポイント有効化制御部１２は、処理を停止させたブレークポイント優先度マップ１３のブレークポイントを無効化する。ブレークポイント有効化制御部１２は、トラップ命令に置換されていた、無効化したブレークポイントのブレーク情報１３ｄで指定されていた命令を、命令退避領域３０から元に戻す。
【００６１】
（ステップＳ２１０）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３を参照することにより、次に有効化するブレークポイントが存在するか確認する。また、ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）が存在するか確認する。ブレークポイントが存在する場合には、ステップＳ２１１に進み、ブレークポイントが存在しない場合には、ステップＳ２１４に進む。
【００６２】
（ステップＳ２１１）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３に設定されているブレークポイントであるかを確認する。ブレークポイント優先度マップ１３に設定されているブレークポイントである場合には、ステップＳ２１２に進み、ブレークポイント優先度マップ１３に設定されているブレークポイントではない場合には、ステップＳ２０３に進む。
【００６３】
（ステップＳ２１２）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３において、次に有効化するブレークポイントを有効化する。ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレーク情報１３ｄで指定されたデバッグ対象プログラム２０の命令を命令退避領域３０に格納し、代わりにトラップ命令に置き換える。その後、ステップＳ２１３に進む。
【００６４】
（ステップＳ２１３）
デバッガプログラム１０は、ステップＳ２１２で有効化したブレークポイントに対応するブレーク条件情報を、ブレークポイント優先度マップ１３のブレーク条件情報１３ｅから取得し、ブレーク条件情報格納領域１６に設定する。
【００６５】
（ステップＳ２１４）
デバッガ制御部１４は、ステップＳ２１０で、ブレークポイントが存在しなかった場合は、オペレータにより設定されたブレークポイントの停止条件をすべて満たし、まだ停止条件を満たしていないブレークポイントは存在しないと判断する。デバッガ制御部１４は、ＣＰＵ３に対して、デバッグ対象プログラム２０の実行終了指示を行い、実行が終了したことをデバッガ端末２により表示する。
【００６６】
本発明の第２実施形態によれば、ブレーク条件情報１３ｅによってブレークポイントごとに、必ずしもソースコードから読み取れるとは限らない条件によるブレークポイントの停止条件を設定することにより、ブレーク情報１３ｄに設定された情報に基づく停止制御よりも、自由度の高いブレークポイントの停止制御ができる。
【００６７】
＜第３実施形態＞
添付図面を参照して、本発明の第３実施形態によるデバッグ装置を以下に説明する。
【００６８】
［構成の説明］
はじめに、本実施形態におけるデバッグ装置の構成の説明を行う。図７は、本発明の第３実施形態におけるデバッグ装置のシステム構成図である。デバッグ装置１は、デバッガ端末２、ＣＰＵ３、メモリ４、記憶装置５、及びシステムバス６で構成されている。本実施形態におけるデバッグ装置の構成は、第１実施形態におけるデバッグ装置の構成と同様である。
【００６９】
次に、デバッグ装置１のメモリ４上で保持されるデータの構成について説明する。メモリ４には、デバッガプログラム１０、デバッガ対象プログラム２０、命令退避領域３０及びレジスタ退避領域３１の領域が確保される。
【００７０】
本実施形態におけるデバッグ装置のメモリ４上で保持されるデータの構成は、デバッガプログラム１０の内部構成だけが異なり、第１実施形態とは、グループＩＤ情報格納領域１７が存在することと、ブレークポイント優先度マップ１３のデータ構造にグループＩＤ情報１３ｆが追加されている点が異なる。
【００７１】
図８は、本発明の第３実施形態におけるブレークポイント優先度マップ１３である。図２の優先度マップに対して、グループＩＤ情報１３ｆを追加した構成になっている。
【００７２】
グループＩＤ情報１３ｆは、整数値で表現されるＩＤである。デバッガプログラム１０は、グループＩＤ情報１３ｆが同じ数値であるブレークポイントを一つのグループとして管理し、グループＩＤ情報１３ｆが異なる数値であるブレークポイントを別のグループとして管理する。
【００７３】
［動作方法の説明］
次に、本発明の第３実施形態におけるデバッグ装置のブレークポイントの制御方法の説明を行う。図９Ａ及び図９Ｂは、本発明の第３実施形態におけるブレークポイントの制御方法を示すフローチャートである。グループＩＤ情報１３ｆのグループごとに、図９Ａ及び図９Ｂのフローチャートの制御が行われる。
【００７４】
（ステップＳ３００）
オペレータは、デバッガ端末２からデバッガプログラム１０を起動する。
【００７５】
（ステップＳ３０１）
デバッガプログラム１０は、コマンドインタフェース１１を介して、オペレータの入力を受け付ける。オペレータは、デバッガ端末２を使用して、ブレークポイント優先度マップ１３の優先度情報１３ｂに設定される優先度と、ブレークポイント優先度マップ１３のブレーク情報１３ｄに設定されるブレーク情報と、ブレークポイント優先度マップ１３のブレーク情報１３ｆに設定されるグループＩＤ情報を与えることにより、デバッグ対象プログラム２０に対するブレークポイントを設定する。
【００７６】
このとき、ブレークポイント優先度マップ１３で管理されるブレークポイントに対して、オペレータが設定したブレークポイントを一意に識別するために、ＩＤ情報１３ａが設定される。ＩＤ情報１３ａは、デバッガプログラム１０が自動で付与しても良いし、オペレータの入力によって直接設定しても良い。
【００７７】
ブレークポイント有効化制御部１２は、ブレークポイントに対して設定した優先度に基づいて、ブレークポイント優先度マップ１３の有効状態情報１３ｃを設定する。ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３を参照し、設定されているすべてのブレークポイント中で最も高い優先度を持つブレークポイントの有効状態情報１３ｃを有効化する。
【００７８】
デバッガプログラム１０は、有効化されたブレークポイントのブレークポイント優先度マップ１３のブレーク条件情報１３ｅをブレーク条件情報格納領域１４に格納する。
【００７９】
ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレーク情報１３ｄで指定されたデバッグ対象プログラム２０の命令を命令退避領域３０に格納し、代わりにトラップ命令に置き換える。それ以外のブレークポイントについては、ブレークポイント優先度マップ１３上の有効状態情報１３ｃを無効化する。ブレークポイント有効化制御部１２は、無効化されたブレークポイントのブレーク情報１３ｄで指定された命令がトラップ命令に置換されている場合には、命令退避領域３０から元の命令に戻す。
【００８０】
また、オペレータは、ブレークポイント優先度マップ１３で管理されないブレークポイント（従来技術における一般のブレークポイント）を設定することもできる。
【００８１】
（ステップＳ３０２）
オペレータは、デバッガ端末２を使用して、デバッグを開始する操作を行う。
【００８２】
（ステップＳ３０３）
デバッガ制御部１４は、デバッグ対象プログラム２０の処理を次の処理に進める。
【００８３】
（ステップＳ３０４）
ＣＰＵ３が、トラップ命令を検知した場合、ステップＳ３０５に進む。トラップ命令を検知しなければ、ステップＳ３０３に進む。
【００８４】
（ステップＳ３０５）
デバッガ制御部１４は、デバッグ対象プログラム２０をトラップ命令で検出したブレークポイントで停止させる。
【００８５】
（ステップＳ３０６）
デバッガ制御部１４は、トラップ命令で検出したブレークポイントがブレークポイント優先度マップ１３で設定されているブレークポイントであるかを判断する。ブレークポイント優先度マップ１３で設定されているブレークポイントであれば、ステップＳ３０７に進み、デバッガ制御部１４は、ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）であれば、ステップＳ３０９に進む。
【００８６】
（ステップＳ３０７）
ブレークポイント有効化制御部１２は、ステップＳ３０４で停止させたブレークポイントのグループＩＤ情報を、ブレークポイント優先度マップ１３のグループＩＤ情報１３ｆから取得し、グループＩＤ情報格納領域１７に設定する。
【００８７】
（ステップＳ３０８）
ブレークポイント有効化制御部１２は、ステップＳ３０４で、処理を停止させたブレークポイント優先度マップ１３のブレークポイントを無効化する。ブレークポイント有効化制御部１２は、トラップ命令に置換されていた、無効化したブレークポイントのブレーク情報１３ｄで指定されていた命令を、命令退避領域３０から元に戻す。
【００８８】
（ステップＳ３０９）
ブレークポイント有効化制御部１２は、グループＩＤ情報格納領域１７を参照することにより、ステップＳ３０４で処理を停止させたブレークポイントと同一のグループＩＤの中から、次に有効化するブレークポイントが存在するか確認する。また、ブレークポイント優先度マップ１３で設定されていないブレークポイント（従来技術における一般のブレークポイント）が存在するか確認する。ブレークポイントが存在する場合には、ステップＳ３１０に進み、ブレークポイントが存在しない場合には、ステップＳ３１２に進む。
【００８９】
（ステップＳ３１０）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３に設定されているブレークポイントであるかを確認する。ブレークポイント優先度マップ１３に設定されているブレークポイントである場合には、ステップＳ３１１に進み、ブレークポイント優先度マップ１３に設定されているブレークポイントではない場合には、ステップＳ３０３に進む。
【００９０】
（ステップＳ３１１）
ブレークポイント有効化制御部１２は、ブレークポイント優先度マップ１３において、次に有効化するブレークポイントを有効化する。ブレークポイント有効化制御部１２は、有効化されたブレークポイントのブレーク情報１３ｄで指定されたデバッグ対象プログラム２０の命令を命令退避領域３０に格納し、代わりにトラップ命令に置き換える。その後、ステップＳ３０３に進む。
【００９１】
（ステップＳ３１２）
デバッガ制御部１４は、ステップＳ３０９で、ブレークポイントが存在しなかった場合は、オペレータにより設定されたブレークポイントの停止条件をすべて満たし、まだ停止条件を満たしていないブレークポイントは存在しないと判断する。デバッガ制御部１４は、ＣＰＵ３に対して、デバッグ対象プログラム２０の実行終了指示を行い、実行が終了したことをデバッガ端末２により表示する。
【００９２】
本発明の第３実施形態によれば、２種類以上のブレークポイントの停止順序の組み合わせがあり、いずれか一つの停止順序でプログラムの評価をすればよい場合において、効率的にプログラムのデバッグをすることができる。２種類以上のブレークポイントの停止順序の組み合わせが別々のＩＤで管理され、独立に図９Ａ及び図９Ｂのフローチャートの制御が行われた結果、いずれかのグループがＳ３１２の処理を終了した時点で、デバッグプログラムが終了する。
【００９３】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００９４】
１  デバッグ装置
２  デバッガ端末
３  ＣＰＵ
４  メモリ
５  記憶装置
６  システムバス
１０  デバッガプログラム
１１  コマンドインタフェース
１２  ブレークポイント有効化制御部
１３  ブレークポイント優先度マップ
１３ａ  ＩＤ情報
１３ｂ  優先度情報
１３ｃ  有効状態情報
１３ｄ  ブレーク情報
１３ｅ  ブレーク条件情報
１３ｆ  グループＩＤ情報
１４  デバッガ制御部
１５  デバッガインタフェース
１６  ブレーク条件情報格納領域
１７  グループＩＤ情報格納領域
２０  デバッグ対象プログラム
３０  命令退避領域
３１  レジスタ退避領域
【図１】
2012003671.tif 000003
【図２】
2012003671.tif 000004
【図３Ａ】
2012003671.tif 000005
【図３Ｂ】
2012003671.tif 000006
【図４】
2012003671.tif 000007
【図５】
2012003671.tif 000008
【図６Ａ】
2012003671.tif 000009
【図６Ｂ】
2012003671.tif 000010
【図７】
2012003671.tif 000011
【図８】
2012003671.tif 000012
【図９Ａ】
2012003671.tif 000013
【図９Ｂ】
2012003671.tif 000014