(57)【要約】【課題】ハードウエア上の追加等が必要なく、イベントポイントの設定数に制限のないデバッグ装置及びデバッグ方法を実現すること。【解決手段】ホスト１１は、デバッグ対象のプログラム中に設定された所定のイベントに関するイベントポイント情報として、イベントポイント情報が設定された命令のアドレス情報を関数毎に格納するイベントポイント情報テーブル１５ａと、プログラムの命令の実行時に、イベントポイント情報テーブル１５ａを参照して次に実行する関数にイベントポイント情報が設定されているか否かをチェックする。ホスト１１は、イベントポイント情報が設定されていると判定された場合、イベントポイント情報が設定されていると判定された次に実行する関数についての、イベントポイント情報テーブル１５ａに記憶されたアドレス情報を、エミュレータのイベントポイントレジスタ群１２ａに設定する。【選択図】図５
2009116682.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ対象のプログラム中に設定された所定のイベントに関するイベントポイント情報として、前記イベントポイント情報が設定された命令のアドレス情報を含む情報を関数毎に記憶して格納するイベントポイント情報格納部と、
前記プログラムの命令の実行時に、前記イベントポイント情報格納部を参照して次に実行する関数に前記イベントポイント情報が設定されているか否かをチェックするイベントポイント情報チェック部と、
前記イベントポイント情報チェック部により前記イベントポイント情報が設定されていると判定された場合、前記イベントポイント情報が設定されていると判定された前記次に実行する関数についての、前記イベントポイント情報格納部に記憶された前記アドレス情報を、前記プログラムを実行するエミュレータの所定の記憶部に、設定するアドレス情報設定部と
を有することを特徴とするデバッグ装置。
【請求項２】
前記所定のイベントは、ブレークであることを特徴とする請求項１に記載のデバッグ装置。
【請求項３】
前記所定のイベントは、ログ取得の開始及び終了であることを特徴とする請求項１に記載のデバッグ装置。
【請求項４】
前記イベントポイント情報格納部は、割り込み処理プログラムに設定された前記所定のイベントに関するイベントポイント情報も含むことを特徴とする請求項１に記載のデバッグ装置。
【請求項５】
デバッグ対象のプログラムをエミュレータにより実行させて前記プログラムのデバッグを行うデバッグ方法であって、
前記プログラムの命令の実行時に、デバッグ対象のプログラム中に設定された所定のイベントに関するイベントポイント情報として前記イベントポイント情報が設定された命令のアドレス情報を含む情報を関数毎に記憶して格納するイベントポイント情報格納部を参照して、次に実行する関数に前記イベントポイント情報が設定されているか否かをチェックし、
前記イベントポイント情報が設定されていると判定された場合、前記イベントポイント情報が設定されていると判定された前記次に実行する関数についての、前記イベントポイント情報格納部に記憶された前記アドレス情報を、前記プログラムを実行するエミュレータの所定の記憶部に、設定することを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ装置及びデバッグ方法に関し、特に、デバッグ対象のプログラムをエミュレータにより実行させてプログラムのデバッグを行うデバッグ装置及びデバッグ方法に関する。
【背景技術】
【０００２】
従来より、ソフトウエアプログラム（以下、単にプログラムともいう）の開発過程においてデバッグが行われる。プログラムの開発者すなわちプログラマは、デバッガと呼ばれるデバッグ装置を用いて、自己の作成したプログラムが設計の意図通りに動作しているかどうかを確認する。
【０００３】
デバッグ装置には、例えば、プログラムの任意の場所にブレークポイントを設定する機能があり、開発者は、その機能を利用して、プログラムをその場所の直前で命令の実行を停止させることができる。その結果、開発者は、その停止した状態における変数等のデータを確認することができる。
【０００４】
従来のデバッグ装置では、ブレークポイント設定可能数は有限である。このブレークポイント設定可能数が有限であることは、ユーザが実行状態を確認する必要があると判断した場所に、その有限数を超えてブレークポイントを設定する際の障害となる。ユーザが必要な全ての場所でブレークを生じさせるには、ユーザは、デバッグ時のプロファイルを複数に分割して、各分割されたプロファイルにブレークポイントを設定する等、を行う。その場合、プロファイル毎に、デバッグの実行対象を切り替えるなど、ユーザがブレークポイントの設定操作上の工夫をする必要がある。また、プロファイル毎に、デバッグの実行対象プログラムを切り替えて何度も実行させなければならない。このように、ブレークポイント設定可能数が有限であることにより、設定の手間、プログラム実行の切り替えの手間等、開発工数が増大するという問題が生じている。
【０００５】
また、特開平５−２３３３６４号公報および特開２００２−８２８１９号公報には、ブレークポイントを多数設定できる装置が提案されている。
【０００６】
しかし、特開平５−２３３３６４号公報に記載の装置では、多数のブレークポイントを設定できるようにするために、分岐処理に関連して設定される新たなレジスタをハードウエア回路として設けなければならない。
【０００７】
また、特開２００２−８２８１９号公報に記載の装置では、多数のブレークポイントを設定できるようにするために、デバッグ対象のプログラムを記憶するためのフラッシュメモリを設ける等のハードウエア回路上の改良が必要となる。
【０００８】
以上のように、上述した２つの提案にかかるデバッグ装置では、ハードウエア回路の追加、変更等が必要となる。
【特許文献１】特開平５−２３３３６４号公報
【特許文献２】特開２００２−８２８１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
そこで、本発明は、ハードウエア上の追加等が必要なく、イベントポイントの設定数に制限のないデバッグ装置及びデバッグ方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、デバッグ対象のプログラム中に設定された所定のイベントに関するイベントポイント情報として、前記イベントポイント情報が設定された命令のアドレス情報を含む情報を関数毎に記憶して格納するイベントポイント情報格納部と、前記プログラムの命令の実行時に、前記イベントポイント情報格納部を参照して次に実行する関数に前記イベントポイント情報が設定されているか否かをチェックするイベントポイント情報チェック部と、前記イベントポイント情報チェック部により前記イベントポイント情報が設定されていると判定された場合、前記イベントポイント情報が設定されていると判定された前記次に実行する関数についての、前記イベントポイント情報格納部に記憶された前記アドレス情報を、前記プログラムを実行するエミュレータの所定の記憶部に、設定するアドレス情報設定部とを有するデバッグ装置を提供することができる。
【００１１】
本発明の一態様によれば、デバッグ対象のプログラムをエミュレータにより実行させて前記プログラムのデバッグを行うデバッグ方法であって、前記プログラムの命令の実行時に、デバッグ対象のプログラム中に設定された所定のイベントに関するイベントポイント情報として前記イベントポイント情報が設定された命令のアドレス情報を含む情報を関数毎に記憶して格納するイベントポイント情報格納部を参照して、次に実行する関数に前記イベントポイント情報が設定されているか否かをチェックし、前記イベントポイント情報が設定されていると判定された場合、前記イベントポイント情報が設定されていると判定された前記次に実行する関数についての、前記イベントポイント情報格納部に記憶された前記アドレス情報を、前記プログラムを実行するエミュレータの所定の記憶部に、設定するデバッグ方法を提供することができる。
【発明の効果】
【００１２】
本発明によれば、ハードウエア上の追加等が必要なく、イベントポイントの設定数に制限のないデバッグ装置及びデバッグ方法を実現することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の実施の形態を説明する。  
（第１の実施の形態）
まず図１に基づき、本発明の第１の実施の形態に係わるデバッグシステムの構成を説明する。図１は、本発明の第１の実施の形態に係わるデバッグシステムの構成を示す構成図である。
【００１４】
図１に示すように、デバッグシステム１は、パーソナルコンピュータ（以下、PCという）等のコンピュータであるホストコンピュータ（以下、単にホストという）１１と、エミュレータ１２と、デバッグ対象のプログラムＰを実行可能なターゲットCPU１９を搭載したターゲットシステム１３とを含んで構成されている。
【００１５】
デバッグ装置であるホスト１１には、記憶装置１４が内蔵あるいは接続されている。記憶装置１４には、デバッグ用のプログラムであるデバッガ１５を含む。記憶装置１４は、さらに、後述するイベントポイント情報格納部としてのイベントポイント情報テーブル１５ａを含んでいる。  
エミュレータ１２は、ブレークポイントに関する情報を記憶する所定の記憶部としてのイベントポイントレジスタ群１２ａを有する。
【００１６】
ホスト１１とエミュレータ１２は、所定の通信ライン１７により接続されている。エミュレータ１２とターゲットボード１３は、所定の通信ライン１８により接続されている。
【００１７】
ターゲットシステム１３は、ここでは、ターゲットCPU１９が搭載されたターゲットボードである。CPU１９は、フラッシュメモリ等のメモリ２０を含む。メモリ２０にデバッグ対象のプログラムPが転送されて記憶され、デバッガ１５は、そのメモリ２０に記憶されたプログラムPを実行させて、プログラムＰのデバッグを行うことができる。
【００１８】
デバッグを行うユーザは、ホスト１１に接続されたキーボード、マウス等の入力装置（図示せず）を操作して、デバッガ１５を起動させることができる。デバッガ１５は、ターゲットボード１３上に構成されたターゲットシステム向けのデバッガである。ホスト１１は、表示装置１６を有し、デバッガ１５は、各種操作指示を与え、かつ後述するような各種デバッグの結果情報を表示するためグラフィカルカルユーザインターフェース（以下、GUIと略す）を、表示装置１６の画面上に、表示する。そして、ユーザは、ホスト１１を操作して、デバッグ対象のプログラムPをエミュレータ１２により実行させてプログラムPのデバッグを行うことができる。
【００１９】
まず、ユーザが、そのGUI上でブレークポイントを設定する方法について説明する。図２は、ブレークポイントが設定されたプログラムの画面の例を示す図である。  
図２に示すように、表示装置１６の画面３１には、デバッグ対象のプログラムPのソースコードがリスト形式で表示される。ユーザは、所定のイベントとしてのブレークポイントを設定したい行を、マウス等の入力装置を操作して選択し、所定の操作を行うことによって、所望の行に対してブレークポイントを設定することができる。
【００２０】
図２では、画面３１上に表示されたプログラムP中、点線で囲む４つの行３２、３３，３４，３５に、それぞれ、ブレークポイントBP1、BP2、BP3、BP4が設定されている。ブレークポイントが設定された行については、黒丸の印３６が、各行の左側に表示される。ユーザは、ブレークポイントが設定された行であることが、その印３６の有無によって容易に認識することができる。なお、ブレークポイントが設定されたことを示す印としては、黒丸以外のマークでもよいし、ブレークポイントが設定された行の表示色を、他の行と区別がつくような色に変更するようにして、ブレークポイントが設定されている行であることを示すようにしてもよい。
【００２１】
ブレークポイントは、デバッグ対象のプログラムPのソースコード中のすべての行の中の任意の行に対して設定することができる。図２では、２つの関数ｆ１、ｆ２中の４つの行３２から３５にブレークポイントが設定されている。具体的には、関数ｆ１については、２つのブレークポイントBP1、BP2が設定され、関数ｆ２については、２つのブレークポイントBP3、BP4が設定されている。以上のようにして、ユーザは、GUI上で、各関数内に、ブレークポイントの設定を行うことができる。
【００２２】
次に、関数毎の所定のイベントについての情報を格納するイベントポイント情報格納部としてのイベントポイント情報テーブル１５ａについて説明する。図３は、イベントポイント情報テーブルの例を示す図である。
【００２３】
イベントポイント情報テーブル１５ａは、関数欄４１と、イベントポイント情報欄４２とを含むテーブルである。図２で説明したようにイベントとしてのブレークのポイントが設定されると、関数毎に、設定された各ブレークポイントについてのブレークポイントについての情報が、イベントのポイントの情報として、イベントポイント情報テーブル１５ａに記憶される。イベントのポイントについての情報（以下、イベントポイント情報という）は、ブレークポイントが設定された行の行番号、メモリ上のアドレス情報等を含む情報である。すなわち、イベントポイント情報が、イベントポイント情報テーブル１５ａに関数毎に記憶されることによって、ブレークポイントについての情報が、イベントポイント情報として、関数毎に管理される。
【００２４】
また、エミュレータ１２は、所定の記憶部として、イベントポイントのアドレス情報を設定するための複数のイベントポイントレジスタ（以下、単にレジスタともいう）からなるイベントポイントレジスタ群１２ａを有しており、エミュレータ１２のイベントポイントレジスタ群１２ａに、ブレークポイントを設定したアドレス情報を設定することによって、エミュレータ１２は、ターゲットボード１３上で実行されているプログラムPをブレークすることができる。すなわち、エミュレータ１２のレジスタ群１２ａにブレークポイントが設定されたアドレス情報を設定することによって、ブレーク機能は有効にされ、既に設定されたアドレス情報を消去することによって、ブレーク機能は無効にされる。
【００２５】
図４は、ブレークポイントのアドレス情報が設定されるイベントポイントレジスタ群１２ａを説明するための図である。イベントポイントレジスタ群１２ａのイベントポイントレジスタの数は有限であり、ここでは、１０個のレジスタがあるとする。各レジスタには、番号が予め決められており、ブレークするアドレス情報が書き込まれる。実行アドレスが、書き込まれたアドレスに一致すると、そのアドレスの命令を実行する直前でプログラムPの実行を停止するように、エミュレータ１２は、ターゲットボード１３上のプログラムPの実行を制御する。
【００２６】
図５は、デバッガ１５のイベントポイントに関する処理の流れの例を示すフローチャートである。図５のフローチャートで示される処理は、デバッガ１５がエミュレータ１２にプログラムＰを実行させているときに、デバッガ１５が実行する処理である。
【００２７】
まず、プログラムＰがデバッガ１５により起動されて実行を開始すると、デバッガ１５は、プログラムＰの命令を一つずつ実行していく。デバッガ１５は、次に実行する命令がジャンプ命令であるか否かを判断する（ステップS1）。この判断は、次に実行する命令を実行する前に行われる。プログラムＰが高級言語でユーザにより記述されたとしても、プログラムＰにおいて、アセンブリコード命令のレベルでは、その関数を実行する命令にはジャンプ命令が存在する。すなわち、プログラムＰの実行の途中で、ある関数を実行させるような命令がある場合、アセンブリコード命令のレベルでは、その関数を実行する命令にはジャンプ命令が存在する。従って、ソースコードレベルで、イベントポイントとしてブレークポイントをソースコードのある行に設定すると、その行が関数の実行命令である場合、そのソースコードの行は、アセンブリコード命令レベルではその関数へのジャンプ命令を含む。
【００２８】
よって、ジャンプ命令によって飛んだ先のアドレスは、その関数の先頭アドレスであり、CPU１９が実行してきた直前の命令のアドレスに連続するものではない。よって、ここでは、そのジャンプ命令の有無によって、関数の実行か否かが判定されている。
【００２９】
また、各関数の先頭アドレスの情報は、記憶装置１４の所定の記憶領域に記憶されており、各関数とアドレスの関係はプログラムPを実行する前に事前に設定されているので、デバッガ１５は、ジャンプ先のアドレスから関数名の情報を取得することができる。従って、ジャンプ命令が発生したときに、ジャンプ先の関数名が取得される。
【００３０】
ジャンプ命令の場合、ステップS1でYESとなり、そのジャンプ先の関数のプログラム中にイベントポイントがあるか否かをチェックする（ステップS2）。このチェックは、ジャンプ先の関数と、図３のイベントポイント情報テーブル１５ａ中の関数欄４１を参照し、ジャンプ先の関数についてイベントポイント情報が設定されているか否かにより行われる。ジャンプ先の関数がイベントポイント情報テーブル１５ａ中に登録されていない、あるいは、ジャンプ先の関数がイベントポイント情報テーブル１５ａ中に登録されていても、イベントポイント情報が登録されていない場合は、ジャンプ先の関数についてイベントポイント情報が設定されていないと判定される。ステップS1とS2は、プログラムPの命令の実行時に、イベントポイント情報テーブル１５ａを参照して、次に実行する関数に所定のイベントポイント情報が設定されているか否かをチェックするイベントポイント情報チェック部を構成する。従って、このイベントポイント情報チェック部は、次に実行される命令がジャンプ命令で有る場合に、イベントポイント情報テーブル１５ａを参照して、次に実行する関数に所定のイベントポイント情報が設定されているか否かをチェックする。
【００３１】
チェックの結果、次に実行する関数中にイベントポイントであるブレークポイントが有るか否かが判定される（ステップS3）。ブレークポイントがあれば、ステップS3でYESとなり、デバッガ１５は、まず、エミュレータ１２のイベントポイントレジスタ群１２ａに既に設定されたすべてのアドレス情報を消去する処理を実行する（ステップS4）。すなわち、イベントポイント情報テーブル１５ａに記憶されたアドレス情報を書き込む前に、イベントポイントレジスタ群１２ａに既に格納されているアドレス情報を消去される。その消去後に、次に実行する関数についての、イベントポイント情報テーブル１５ａに記憶されたアドレス情報がイベントポイントレジスタ群１２ａに設定される。その結果、前に設定されたブレークポイントは、無効となる。
【００３２】
そして、デバッガ１５は、イベントポイント情報テーブル１５ａを参照して、次に実行する範囲についてのイベントポイントのアドレス情報を、すなわち次に実行する関数のプログラム中に設定されたすべてのイベントポイントのアドレス情報を、イベントポイントレジスタ群１２ａに設定する（ステップS5）。その結果、新たに設定されたブレークポイントが、有効となる。その後、デバッガ１５は、次の命令を実行する（ステップS6）。
【００３３】
ステップS5は、次に実行する関数についての、イベントポイント情報テーブル１５ａに記憶されたアドレス情報を、エミュレータ１２のイベントポイントレジスタ群１２ａに設定するアドレス情報設定部を構成する。
【００３４】
また、ステップS1で、次に実行する命令がジャンプ命令でないときは、ステップS1でNOとなり、処理は、ステップS6の処理に移行、すなわち次の命令を実行する。
【００３５】
各関数の終わりには、やはりジャンプ命令が設定されているので、各関数の実行の終わりにおいて、ジャンプ命令が検出される。その結果、ステップS1の判断でYESとなり、次の関数についても上述した処理と同様の処理が実行される。
【００３６】
なお、ステップS3において、イベントポイントが設定されていない場合にも、処理は、ステップS6に移行する。すなわち、イベントポイントが設定されていない場合も、ジャンプ命令が実行され、プログラムPの実行が継続される。
【００３７】
以上の処理を実行することにより、例えば、図２に示すように、ジャンプ命令により関数ｆ１の実行が開始されるときは、２つのブレークポイントBP1,BP2のアドレスがエミュレータ１２のイベントポイントレジスタ群１２ａに設定された後に、プログラムＰの関数ｆ１の部分のプログラムが実行される。エミュレータ１２は、関数ｆ１のプログラムの実行中にブレークポイントが設定された命令の位置において、プログラムＰの実行を停止する。
【００３８】
その後、関数ｆ１の実行が終了すると、関数ｆ１に飛ぶ前のプログラムの位置、あるいは別の関数に飛んで、プログラムＰの実行は継続される。
【００３９】
例えば関数ｆ１の実行の後に、ジャンプ命令により関数ｆ２が実行されるときは、デバッガ１５は、イベントポイントレジスタ群１２ａに設定された、関数ｆ１のブレークポイントBP1,BP2のアドレスを消去してから、２つのブレークポイントBP3,BP4のアドレスをイベントポイントレジスタ群１２ａに設定した後に、関数ｆ２を実行させる。エミュレータ１２のイベントポイントレジスタ群１２ａには、関数ｆ２に設定されたブレークポイントBP3,BP4のみのアドレス情報が設定される。
【００４０】
以上のように、デバッガ１５は、次に実行する関数のプログラム中にブレークポイントが存在すなわち設定されている場合、エミュレータ１２中に設定されていたイベントポイントのアドレス情報を消去して無効にし、ジャンプ先の関数について設定されているイベントポイントのアドレス情報を設定して有効にする。
【００４１】
従って、デバッガ１５は、プログラムＰの実行中に、関数毎に設定されたブレークポイントの中で有効なブレークポイントを切り替える。そして、次に実行する関数にブレークポイントが設定されているときは、デバッガ１５は、エミュレータ１２に既に設定されている関数のブレークポイントのアドレス情報を消去した後に、次に実行する関数のブレークポイントのアドレス情報を書き込む、すなわち設定する。このような処理を繰り返すことによって、ユーザが設定したすべてのブレークポイントにおいて、ブレークが生じるようにすることができる。
【００４２】
よって、エミュレータ１２のイベントポイントレジスタ群１２ａのレジスタ数の制限はあるため、関数毎に設定されるイベントポイント数に制限はあるが、関数毎に設定されるイベントポイント数がイベントポイントレジスタ群１２ａのレジスタ数以下の数であれば、ユーザは、デバッグ対象のプログラムＰの中に無制限にイベントポイントとしてのブレークポイントを設定することができる。
【００４３】
（第２の実施の形態）
次に、本発明の第２の実施の形態に係わるデバッグシステムの構成を説明する。第２の実施の形態に係わるデバッグシステムは、上述した第１の実施の形態に係わるデバッグシステムの構成と同様であるので、同じ構成要素については同じ符号を用いて説明を省略し、第１の実施の形態と異なる構成について主として説明する。
【００４４】
本実施の形態のデバッグ装置では、プログラム中に設定するイベントとして、タイマカウント等による時間計測の開始および終了のイベント、あるいはログ情報取得の開始および終了のイベントが設定でき、かつ、そのイベントの設定数に制限がない。
【００４５】
図６は、時間計測あるいはログ情報取得のイベントが設定されたプログラムの画面の例を示す図である。なお、以下、説明を簡単にするために、時間計測の開始および終了のイベントの例で、本実施の形態のデバッグ装置を説明する。
【００４６】
図６においても、表示装置１６の画面３１には、デバッグ対象のプログラムPがリスト形式で表示される。ユーザは、時間計測の開始および終了を設定したい行を、マウス等の入力装置を操作して選択し、所定の操作を行うことによって、所望の行に対して時間計測の開始および終了を設定することができる。
【００４７】
図６では、画面３１上に表示されたプログラムP中、点線で囲む４つの行３２ａ、３３ａ，３４ａ，３５ａに、それぞれ、時間計測の開始位置TCS1、TCS2あるいは終了位置TCE１、TCE2が設定されている。それぞれが時間計測の開始ポイントと終了ポイントである時間計測の開始位置と終了位置が設定された行については、星印３７、３８が、各行の左側に表示される。ユーザは、時間計測の開始位置あるいは終了位置が設定された行であることが、その星印３７，３８の有無によって容易に認識することができる。なお、時間計測の開始位置あるいは終了位置が設定されたことを示す印としては、星丸以外のマークでもよいし、時間計測の開始位置あるいは終了位置が設定された行の表示色を、他の行と区別がつくような色に変更するようにして、時間計測の開始位置あるいは終了位置が設定されている行であることを示すようにしてもよい。さらになお、時間計測の開始位置と終了位置の区別ができるように、時間計測の開始位置と終了位置のぞれぞれの印あるいは色を異ならせるようにしてもよい。
【００４８】
時間計測の開始位置と終了位置は、デバッグ対象のプログラムP中のすべての行の中の任意の行に対して設定することができる。図６では、２つの関数ｆ１、ｆ２中の２つの行３２ａと３４ａに時間計測の開始位置が設定され、２つの関数ｆ１、ｆ２中の２つの行３３ａと３５ａに時間計測の終了位置が設定されている。
【００４９】
以上のようにして、第１の実施の形態において説明したブレークポイントの情報と同様に、関数毎に設定された時間計測の開始および終了のイベントポイントについての情報は、上述したイベントポイント情報格納部としてのイベントポイント情報テーブル１５ａに記憶される。イベントポイント情報としての、時間計測の開始位置あるいは終了位置についての情報は、時間計測の開始位置あるいは終了位置が設定された行の行番号、メモリ上のアドレス情報等を含む情報である。すなわち、時間計測イベントについてのイベントポイント情報が、関数毎に、イベント情報テーブル１５ａに記憶される。
【００５０】
また、エミュレータ１２は、第１の実施の形態において説明したブレークポイントの場合と同様に、イベントポイントレジスタ群１２ａに、時間計測ポイントを設定したアドレス情報を設定する。本実施の形態では、エミュレータ１２は、イベントポイントレジスタ群１２ａに設定されたアドレスにおいて、時間計測を開始あるいは終了するイベントを実行する。よって、エミュレータ１２は、プログラムPの実行中の時間計測をすることができる。
【００５１】
時間計測のイベントにおいても、図３のイベントポイント情報テーブル１５ａの構成は同じである。また、図４のイベントポイントレジスタ群１２ａの構成も同様である。
【００５２】
デバッガ１５の時間計測ポイントに関する処理も、図５において説明した処理と同様であり、結果として、プログラムＰを実行中に、時間計測ポイントがあると、時間の計測が開始され、それに続く時間計測ポイントがあると、時間計測が終了する。
【００５３】
すなわち、デバッガ１１が図５の処理を実行することにより、例えば、図６に示すように、ジャンプ命令により関数ｆ１の実行が開始されるときは、２つの時間計測ポイントTCS1,TCE1のアドレスがエミュレータ１２のイベントポイントレジスタ群１２ａに設定された後に、プログラムＰの関数ｆ１の部分のプログラムが実行される。エミュレータ１２は、関数ｆ１のプログラムの実行中に時間計測ポイントが設定された命令の位置から時間の計測を開始し、次に時間計測ポイントが設定された命令の位置において時間の計測を終了する。
【００５４】
その後、関数ｆ１の実行が終了すると、関数ｆ１に飛ぶ前のプログラムの位置、あるいは別の関数に飛んで、プログラムＰの実行は継続される。
【００５５】
例えば関数ｆ１の実行の後に、ジャンプ命令により関数ｆ２が実行されるときは、デバッガ１５は、イベントポイントレジスタ群１２ａに設定された、関数ｆ１の時間計測ポイントTCS1,TCE1のアドレスを消去してから（ステップS4）、関数ｆ２の２つの時間計測ポイントTCS2,TCE2のアドレスをイベントポイントレジスタ群１２ａに設定した後に（ステップS5）、関数ｆ２の実行を開始させる（ステップS6）。このとき、エミュレータ１２のイベントポイントレジスタ群１２ａには、関数ｆ２に設定されたイベントポイントTCS2,TCE2のみのアドレス情報が設定されている。
【００５６】
すなわち、デバッガ１５は、次に実行する関数のプログラム中に時間計測ポイントが存在すなわち設定されている場合、エミュレータ１２中に設定されていた時間計測ポイントのアドレス情報を消去して無効にし、ジャンプ先の関数について設定されている時間計測ポイントのアドレス情報を設定して有効にする。
【００５７】
よって、エミュレータ１２のイベントポイントレジスタ群１２ａのレジスタ数の制限はあるため、関数毎に設定されるイベントポイント数に制限はあるが、関数毎に設定される時間計測ポイント数がイベントポイントレジスタ群１２ａのレジスタ数以下の数であれば、プログラムＰの中に無制限に時間計測ポイントを設定することができる。
【００５８】
以上のように、上述した２つの実施の形態のデバッグ装置及び方法によれば、イベントを関数毎に管理して、次に実行する関数についてのイベントの有無をチェックし、その関数中にイベントが設定されているときは、その関数の実行前にエミュレータ１２のイベントレジスタにイベントが設定された命令のアドレスが設定される。よって、デバッグ対象のプログラム中に多くのイベントを設定することができる。
【００５９】
次に応用例について説明する。  
上述した２つの実施の形態では、イベントとして、ブレーク、時間計測あるいはログ情報取得を、デバッグ対象のプログラム中に無制限に設定できるが、本応用例では、割り込み処理プログラムにおいても、上述したイベントを無制限に設定することができるようにしている。
【００６０】
割り込み処理プログラムは、プログラムPの実行中に、キー入力等に応じて、割り込みが発生し、ベクタアドレスにジャンプすることにより実行される。その割り込み処理プログラム中にも、上述したようなイベントとして、ブレークポイント、時間計測、あるいはログ情報取得が設定できる。割り込み処理プログラムすなわち割り込みハンドラは、割り込み処理の関数ということもできる。
【００６１】
図７は、割り込み処理プログラム中にイベントが設定された画面の例を示す図である。なお、以下、説明を簡単にするために、割り込み処理プログラム中にブレークのイベント、すなわちブレークポイントを設定する例で、本応用例のデバッグ装置を説明する。
【００６２】
図７においても、表示装置１６の画面３１には、デバッグ対象の割り込み処理プログラムがリスト形式で表示される。ユーザは、ブレークポイントを設定したい行を、マウス等の入力装置を操作して選択し、所定の操作を行うことによって、所望の行に対してブレークポイントを設定することができる。
【００６３】
図７では、画面３１上に表示された２つの割り込み処理プログラムInt1、Int2中、点線で囲む４つの行３２ｂ、３３ｂ，３４ｂ，３５ｂに、それぞれブレークポイントが設定されている。ブレークポイントが設定された行については、第１の実施の形態で説明した星印３６が、各行の左側に表示される。
【００６４】
以上のようにして、第１の実施の形態において説明したように、ブレークポイントのイベントについての情報は、上述したイベントポイント情報格納部としてのイベントポイント情報テーブル１５ａに記憶される。
【００６５】
また、エミュレータ１２のイベントポイントレジスタ群１２ａに、ブレークポイントを設定したアドレス情報が設定されるので、エミュレータ１２は、割り込み処理プログラムをブレークすることができる。
【００６６】
すなわち、本応用例においても、デバッガ１５が図５の処理を実行することにより、例えば、ジャンプ命令により割り込み処理プログラムInt1の実行が開始されるときは、２つのブレークポイントのアドレスがエミュレータ１２のイベントポイントレジスタ群１２ａに設定された後に、割り込み処理プログラムInt1が実行される。エミュレータ１２は、割り込み処理プログラムInt1の実行中にブレークポイントが設定された命令の位置においてブレークする。
【００６７】
その後、割り込み処理プログラムInt1の実行が終了すると、割り込み処理プログラムInt1に飛ぶ前のプログラムの位置、あるいは別の関数に飛んで、プログラムＰの実行は継続される。
【００６８】
また、各割り込み処理プログラムの先頭アドレスの情報は、記憶装置１４の所定の記憶領域に記憶されており、各割り込み処理プログラムとアドレスの関係はプログラムPを実行する前に事前に設定されているので、デバッガ１５は、ジャンプ先のベクタアドレスから割り込み処理プログラム名の情報を取得することができる。
【００６９】
例えば割り込み処理プログラムInt1の実行の後に、ジャンプ命令により割り込み処理プログラムInt2が実行されるときは、デバッガ１５は、イベントポイントレジスタ群１２ａに設定された、割り込み処理プログラムInt1のブレークポイントのアドレスを消去してから（ステップS4）、割り込み処理プログラムInt2の２つのブレークポイントのアドレスをイベントポイントレジスタ群１２ａに設定した後に（ステップS5）、割り込み処理プログラムInt2の実行を開始させる（ステップS6）。エミュレータ１２のイベントポイントレジスタ群１２ａには、割り込み処理プログラムInt2に設定されたブレークポイントのみのアドレス情報が設定される。
【００７０】
すなわち、デバッガ１５は、割り込み処理プログラム中にブレークポイントが存在すなわち設定されている場合、エミュレータ１２中に設定されていたブレークポイントのアドレス情報を消去して無効にし、ジャンプ先の関数について設定されているブレークポイントのアドレス情報を設定して有効にする。
【００７１】
以上の説明は、割り込み処理プログラムにおいて、ブレークポイントを設定する例であるが、時間計測の開始および終了のイベント、あるいはログ情報の取得の開始および終了のイベントを、割り込み処理プログラム中に、同様に設定することができる。よって、エミュレータ１２のイベントポイントレジスタ群１２ａのレジスタ数の制限はあるため、割り込み処理プログラム毎に設定されるイベントポイント数に制限はあるが、割り込み処理プログラム毎に設定されるイベント数がイベントポイントレジスタ群１２ａのレジスタ数以下の数であれば、割り込み処理プログラムの中に無制限にイベントポイントを設定することができる。
【００７２】
なお、本応用例においては、イベントポイント情報は、割り込み処理プログラムのベクタアドレスとともに、管理されるようにしてもよい。図８は、イベントポイント情報を、割り込み処理プログラムのベクタアドレスと共に管理するイベントポイント情報テーブルの例を示す図である。イベントポイント情報テーブル１５ｂは、割り込みハンドラ欄４１ａと、イベントポイント情報欄４２に加えて、各割り込み処理プログラムのベクタアドレス情報を格納するベクタアドレス欄４３を有する。
【００７３】
また、上述した各実施の形態及び応用例においては、各イベントは、予め決まっていたが、イベント毎に識別情報を設け、デバッグ対象のプログラム中に、複数種類のイベントを設定するようにしてもよい。
【００７４】
以上のように、本実施の形態によれば、デバッグを行うユーザは、イベントの設定を、数に制限なく行えるので、デバッグの効率が向上し、プログラムの開発期間の短縮に繋がる。
【００７５】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデバッグ装置を実現することができる。
【００７６】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態に係わるデバッグシステムの構成を示す構成図である。
【図２】本発明の第１の実施の形態に係わる、ブレークポイントが設定されたプログラムの画面の例を示す図である。
【図３】本発明の第１の実施の形態に係わる、イベントポイント情報テーブルの例を示す図である。
【図４】本発明の第１の実施の形態に係わる、ブレークポイントのアドレス情報が設定されるイベントポイントレジスタ群を説明するための図である。
【図５】本発明の第１の実施の形態に係わる、デバッガのイベントポイントに関する処理の流れの例を示すフローチャートである。
【図６】本発明の第２の実施の形態に係わる、時間計測あるいはログ情報取得のイベントが設定されたプログラムの画面の例を示す図である。
【図７】本発明の各実施の形態の応用例に係わる、割り込み処理プログラム中にイベントが設定された画面の例を示す図である。
【図８】本発明の各実施の形態の応用例に係わる、イベントポイント情報テーブルの例を示す図である。
【符号の説明】
【００７８】
１  デバッグシステム、１１  ホスト、１２  エミュレータ、１２ａ  イベントポイントレジスタ群、１３  ターゲットシステム、１４  記憶装置、１５  デバッガ、１５ａ  イベントポイント情報テーブル、１６  表示装置、１７，１８  通信ライン、１９  CPU、２０  メモリ、３１  画面
【図１】
2009116682.tif 000003
【図２】
2009116682.tif 000004
【図３】
2009116682.tif 000005
【図４】
2009116682.tif 000006
【図５】
2009116682.tif 000007
【図６】
2009116682.tif 000008
【図７】
2009116682.tif 000009
【図８】
2009116682.tif 000010