(57)【特許請求の範囲】
【請求項１】
プログラムのデバッグを行うデバッグ装置であって、
前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの情報を解析する解析部と、
解析して得られた前記デバッグ不要なコードの、処理内容の情報、開始アドレス、終了アドレスを出力する出力部と、
を有することを特徴とするデバッグ装置。
【請求項２】
プログラムのデバッグを行うデバッグ装置であって、
前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの表示又は非表示を選択する表示選択部と、
前記デバッグ不要なコードの表示が選択された場合、前記デバッグ不要なコードの直前及び直後に前記デバッグ不要なコードの開始及び終了を示す第１の所定のメッセージを表示し、前記デバッグ不要なコードの非表示が選択された場合、前記デバッグ不要なコードを隠蔽し、前記デバッグ不要なコードが隠蔽されていることを示す第２の所定のメッセージのみを表示する表示処理部と、
を有することを特徴とするデバッグ装置。
【請求項３】
前記表示処理部は、ステップ実行の際に、前記デバッグ不要なコードの非表示が選択されている場合、前記デバッグ不要なコードの終了まで実行することを特徴とする請求項２に記載のデバッグ装置。
【請求項４】
プログラムのデバッグを行うデバッグ方法であって、
前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの情報を解析し、
解析して得られた前記デバッグ不要なコードの、処理内容の情報、開始アドレス、終了アドレスを出力することを特徴とするデバッグ方法。
【請求項５】
プログラムのデバッグを行うデバッグ方法であって、
前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの表示又は非表示を選択し、
前記デバッグ不要なコードの表示が選択された場合、前記デバッグ不要なコードの直前及び直後に前記デバッグ不要なコードの開始及び終了を示す第１の所定のメッセージを表示し、前記デバッグ不要なコードの非表示が選択された場合、前記デバッグ不要なコードを隠蔽し、前記デバッグ不要なコードが隠蔽されていることを示す第２の所定のメッセージのみを表示することを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ装置及びデバッグ方法に関し、特に、プログラムのデバッグを行うデバッグ装置及びデバッグ方法に関する。
【背景技術】
【０００２】
従来、プログラムの作成にあたって、そのプログラムが正常に動作するかを確認するためデバッグ装置を用いてデバッグが行われる。デバッグ装置は、コンパイル装置により生成されたオブジェクトプログラムを入力とし、対応するソースコード又はアセンブリコードをグラフィカルユーザインターフェース（以下、GUIという）に表示する。
【０００３】
また、デバッグ装置には、ブレークポイントの設定及びステップ実行等を行う機能がある。例えば、デバッグ実行者が、GUIを利用しステップ実行を行うと、デバッグ装置は、ソースコードの１行又はアセンブリコードの１命令を実行する。更に、デバッグ装置は、ソースコード又はアセンブリコードの１命令を実行した結果、エラーの発生につながるような問題となるコードが存在すると、問題となる箇所を強調表示したり、そのエラー内容を示す補助的なコード又はメッセージ等の表示を行う。この結果、デバッグ実行者は、問題となるコードの発見が容易となっていた。
【０００４】
このようなデバッグ装置は、数多く提案されており、例えば、デバッグ実行者がデバッグを行う際に、ソースコード又はアセンブリコード中に補助的なコード又はメッセージ等の表示を行うデバッグ装置が提案されている（例えば、特許文献１参照）。
【０００５】
この提案によると、デバッグ実行者がソースレベルのステップ実行を行う場合、コンパイラの最適化によりソースコードの実行順序に変更があると、デバッグ実行者に注意を促すためのメッセージの表示を行う。
【０００６】
しかしながら、従来のデバッグ装置は、上述したような問題となるコードに補助的なメッセージを表示することはできるが、デバッグ中にコンパイラの最適化に伴い生成された、デバッグの不要なコードの情報と、デバッグの必要なコードの情報とを区別することができなかった。
【０００７】
また、従来のデバッグ装置は、このように区別されたデバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することができなかった。
【特許文献１】特許第３１０７１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、デバッグの不要なコードの情報をデバッグの必要なコードの情報と区別することができるデバッグ装置及びデバッグ方法を提供することを目的とする。
【０００９】
また、本発明は、デバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することによりデバッグの効率を向上させることができるデバッグ装置及びデバッグ方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、プログラムのデバッグを行うデバッグ装置であって、前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの情報を解析する解析部と、解析して得られた前記デバッグ不要なコードの、処理内容の情報、開始アドレス、終了アドレスを出力する出力部と、を有するデバッグ装置を提供することができる。
【００１１】
本発明の一態様によれば、プログラムのデバッグを行うデバッグ装置であって、前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの表示又は非表示を選択する表示選択部と、前記デバッグ不要なコードの表示が選択された場合、前記デバッグ不要なコードの直前及び直後に前記デバッグ不要なコードの開始及び終了を示す第１の所定のメッセージを表示し、前記デバッグ不要なコードの非表示が選択された場合、前記デバッグ不要なコードを隠蔽し、前記デバッグ不要なコードが隠蔽されていることを示す第２の所定のメッセージのみを表示する表示処理部と、を有するデバッグ装置を提供することができる。
【発明の効果】
【００１２】
本発明のデバッグ装置によれば、デバッグの不要なコードの情報をデバッグの必要なコードの情報と区別することができる。
【００１３】
また、本発明のデバッグ装置によれば、デバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することによりデバッグの効率を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態を詳細に説明する。  
まず図１及び図２に基づき、本発明の一実施の形態に係るデバッグ装置の構成を説明する。図１は、本実施の形態に係るデバッグ装置が含まれるプログラム生成装置の構成を示す構成図である。
【００１５】
プログラム生成装置１００は、中央処理装置（CPU）、主メモリ等を搭載した本体装置１０１と、各種データを記憶する記憶装置１０２と、各種データを表示する表示装置１０３とを有して構成されている。
【００１６】
本体装置１０１は、パーソナルコンピュータ等のコンピュータ装置本体であり、入力装置として、キーボード１０４及びマウス１０５が接続されている。本体装置１０１は、これらの入力装置からの指示に基づいて、各種プログラムを実行する。
【００１７】
記憶装置１０２には、コンパイル機能のプログラムを有するコンパイラ１０６と、デバッグ機能のプログラムを有するデバッガ１０７とが記憶されている。
【００１８】
ユーザは、プログラミング言語により記述されたソースプログラムを入力とし、コンパイラ１０６を本体装置１０１上において実行することにより、オブジェクトプログラムを得ることができる。即ち、本体装置１０１とコンパイラ１０６とにより、コンパイル装置が構成されている。
【００１９】
また、ユーザは、コンパイル装置により得られたオブジェクトプログラムを入力とし、デバッガ１０７を本体装置１０１上おいて実行することにより、後述する各デバッグを実行することができる。即ち、本体装置１０１とデバッガ１０７とにより、デバッグ装置が構成されている。
【００２０】
ここで、このように構成される本実施の形態に係るデバッグ装置について説明する。図２は、本実施の形態に係るデバッグ装置の構成を説明するためのブロック図である。
【００２１】
デバッグ装置１は、内部生成コード情報解析部１１と、デコード部１２と、コマンド実行部１３と、表示処理部１４とを有して構成されている。
【００２２】
上述したコンパイル装置２は、後述する内部生成コード情報を内部生成コード情報解析部１１に出力すると共に、ビットマップの命令列、即ち、オブジェクトコードをデコード部１２に出力する。なお、説明を簡単にするために図２では、内部生成コード情報とオブジェクトコードとを別々に出力するように示しているが、内部生成コード情報は、オブジェクトコードを含むオブジェクトファイルの所定の領域オブジェクトに格納されている。
【００２３】
内部生成コード情報解析部１１は、入力された内部生成コード情報を解析し、解析した内部生成コード情報解析結果をコマンド実行部１３及び表示処理部１４に出力する。
【００２４】
デコード部１２は、入力されたオブジェクトコードをデコード処理し、機械命令の命令列、即ち、アセンブリコードに変換し、表示処理部１４に出力する。
【００２５】
コマンド実行部１３には、ユーザからのデバッグ用のコマンドが入力される。ユーザが、表示装置１０３上に表示されるGUIを操作することにより、対応するデバッグ用のコマンドがコマンド実行部１３に入力される。コマンド実行部１３は、入力されたデバッグ用のコマンドを解析し、コマンド実行結果を表示処理部１４に出力する。また、コマンド実行部１３は、入力された内部生成コード情報解析結果を解析し、後述する内部生成コードの表示又は非表示に応じて、ブレークポイントの設定の処理を行う。
【００２６】
表示処理部１４は、入力されたアセンブリコード、内部生成コード解析結果及びコマンド実行結果に基づいて、表示処理を実行し、処理結果を表示装置１０３に出力する。表示処理部１４は、内部生成コードの表示又は非表示の処理を実行する。表示処理部１４は、内部生成コードの表示又は非表示を選択する表示選択部を構成する。内部生成コードの表示が選択された場合、内部生成コードの開始行の直前に内部生成コードの処理内容と開始位置であることを示すメッセージを表示し、内部生成コードの終了行の直後に内部生成コードの処理内容と終了位置であることを示すメッセージを表示する。内部生成コードの非表示が選択された場合、内部生成コードの処理内容と内部生成コード自体は隠蔽されていることを示すメッセージを表示し、内部生成コード自体は隠蔽される。
【００２７】
また、表示処理部１４は、内部生成コードの表示又は非表示に依存して、ステップ系コマンドの処理を切り換えることができる。ステップ系コマンドが実行されると、内部生成コードの表示が選択されている場合、内部生成コードにおいてもプログラムは１ステップずつ進む。ステップ系コマンドが実行されると、内部生成コードの非表示が選択されている場合、プログラムは内部生成コードの最後まで進む。このステップ系コマンドには、stepコマンド及びstepiコマンドが存在する。以下、stepコマンドは、ソースコードの１行を実行し、stepiコマンドは、アセンブリコードの１命令を実行するものとする。
【００２８】
ここで、コンパイル装置２の処理について説明する。図３は、コンパイル装置の処理の流れの例を示すフローチャートである。
【００２９】
まず、コンパイル装置２は、ソースプログラムを読み込み（ステップＳ１）、コンパイルを実行する（ステップＳ２）。ステップＳ２におけるコンパイルの実行は、最適化、デバッグ情報の付加及び後述する内部生成コード情報の付加等である。次に、コンパイル装置２は、アセンブリコードを生成し（ステップＳ３）、オブジェクトプログラムを出力する（ステップＳ４）。最後に、コンパイル装置２は、上述した処理により生成された複数のオブジェクトプログラムをリンクし（ステップＳ５）、１つの実行可能なオブジェクトプログラム、即ち、実行モジュールを生成する。
【００３０】
コンパイラの最適化の機能を適用すると、ユーザにとってデバッグしにくい又はデバッグ不要なアセンブリコードが生成されることがある。例えば、コンパイラが並列化技術の１つである自動SIMD（Single Instruction Multiple Data）最適化を行う場合、以下の３つのアセンブリコードが生成されることがある。１つ目は、SIMD化可能か否かを動的に判定するコードである。２つ目は、SIMD化コードであり、３つ目は、非SIMD化コードである。
【００３１】
自動SIMD最適化が実行され、上述した３つのコードが生成された場合、まずSIMD化可能か否かを動的に判定するコードが実行される。このSIMD化可能か否かを動的に判定するコードによりSIMD化可能と判定されるとSIMD化コードが実行され、SIMD化不可能と判定されると非SIMD化コードが実行される。
【００３２】
ここで、ユーザが注目するポイントは、SIMD化可能か否かを動的に判定するコードではなく、判定の結果どちらのコード、即ち、SIMD化コード又は非SIMD化コードが実行されるかである。つまり、デバッグ対象コードは、SIMD化コード又は非SIMD化コードになり、SIMD化可能か否かを動的に判定するコードは、デバッグ不要なコードになる。このコンパイラの最適化に伴い生成されるデバッグ不要なコードを内部生成コードと定義する。
【００３３】
例えば、デバッグ不要なコードの１つの例として、SIMD化可能か否かを動的に判定するコードをあげているが、このコードはプログラムを正常に実行するために、コンパイル装置が暗黙的に生成するコードである。そのため、このコードに不具合が混入した場合は、コンパイル装置自体の不具合の可能性が高いと考えられる。即ち、プログラマは、このコードをケアする必要が低いと推測される。
【００３４】
ただし、注意すべき点は、全てコンパイル装置の不具合であると決め付けられる訳ではなく、プログラマが記述したソースコードとコンパイル装置との相互作用により、上記の暗黙的に生成されたコードに不具合が混入する可能性もある。そのため、デバッグ不要なコードも表示できるようになっている。
【００３５】
自動SIMD最適化の例では、SIMD化可能か否かを動的に判定するコードが内部生成コードに相当する。この内部生成コードは、入力データ等に基づいて、SIMDの処理を実行するか、非SIMDの処理を実行するかを判定するためのプログラムである。言い換えると、内部生成コードは、コンパイラがソースコードに対して複数の実行命令群を生成する場合に、コンパイラの内部において生成されるコードである。
【００３６】
内部生成コード情報の付加では、最適化により生成された内部生成コードから内部生成コード情報が生成され、生成された内部生成コード情報は、所定のフォーマットにより暗号化されオブジェクトプログラム内の所定の領域に付加される。
【００３７】
コンパイラの最適化に伴い生成されるデバッグ対象ではない内部生成コードがGUI上に表示されると、デバッグの妨げとなり効率の悪化が予想される。
【００３８】
そこで、本実施の形態では、内部生成コード情報を解析し、デバッグ対象ではない内部生成コードに対して内部生成コードの処理内容等を示すメッセージを付加する、又は、内部生成コード自体をユーザから隠蔽することにより、デバッグ効率を向上させることを特徴とする。
【００３９】
ここで、内部生成コード情報解析部１１の処理について説明する。図４は、内部生成コード情報解析部の処理の例を説明するための説明図である。
【００４０】
内部生成コード情報解析部１１には、所定のフォーマットにより暗号化された内部生成コード情報が入力される。内部生成コード情報解析部１１は、この内部生成コード情報を解析し、内部生成コード情報解析結果を得る。
【００４１】
内部生成コード情報解析部１１により得られる内部生成コード情報解析結果は、内部生成コードの処理内容、開始アドレス、終了アドレス及び終了後に実行されうる命令アドレスを含む。図４の例では、内部生成コード情報解析結果は、内部生成コードの処理内容は、align checkとalias checkであり、内部生成コードの開始アドレスは、0x8102b0であり、内部生成コードの終了アドレスは、0x810320であり、内部生成コードの終了後に実行されうる命令アドレスは、0x810328又は0x810386であることを示す情報である。内部生成コードの終了後に実行されうる命令アドレスとは、SIMD化コードの先頭のアドレス又は非SIMD化コードの先頭のアドレスである。コマンド実行部１３は、ステップ実行時に、次に処理が行われる命令のアドレスへ、ブレークポイントの設定を行うことによって、後述するような内部生成コードの表示又は非表示に応じた処理を行う。
【００４２】
内部生成コード情報解析部１１により解析して得られた内部生成コード情報解析結果は、コマンド実行部１３及び表示処理部１４に入力され、コマンド実行部１３及び表示処理部１４のそれぞれは、この内部生成コード情報解析結果に基づいて上述した処理を実行する。
【００４３】
なお、内部生成コード情報解析部１１は、解析した内部生成コード情報解析結果を表示装置１０３に表示するようにしてもよい。内部生成コード情報解析部１１は、内部生成コード情報を解析して得られた内部生成コードの、処理内容の情報、開始アドレス、終了アドレスを出力する出力部を構成する。この結果、ユーザは、内部生成コードの処理内容、開始位置及び終了位置等を認識することができるため、デバッグの効率を向上することができる。
【００４４】
図５は、内部生成コードの表示又は非表示が選択された場合の処理の流れの例を示すフローチャートである。この処理は、ユーザが表示装置１０３のGUIを操作し、内部生成コードを表示するか否かを選択すると開始される。
【００４５】
まず、コマンド実行部１３は、入力されたコマンドの解析を行い、コマンド実行結果を表示処理部１４に出力する（ステップＳ１１）。表示処理部１４は、コマンド実行結果を解析し、内部生成コードを表示するか否かを判定する（ステップＳ１２）。内部生成コードを表示する場合、YESとなり、内部生成コードの開始直前及び終了直後に、内部生成コードの処理内容と開始位置又は終了位置とを示す所定のメッセージを表示する（ステップＳ１３）。
【００４６】
このステップＳ１３における処理は、内部生成コード情報解析結果に基づいて、アセンブリコードに対し行われる。表示処理部１４には、コマンド実行結果が入力されると共に、内部生成コード情報解析部１１からの内部生成コード情報解析結果とデコード部１２からのアセンブリコードが入力される。表示処理部１４は、内部生成コード情報解析結果から上述した内部生成コードの開始アドレス及び終了アドレス等を解析し、対応するアセンブリコードのアドレスの位置に所定のメッセージを付加する。このように処理されたアセンブリコードは、表示装置１０３に出力され、表示装置１０３に表示される。
【００４７】
一方、内部生成コードを非表示にする場合、NOとなり、内部生成コードを隠蔽し、内部生成コードの処理内容と内部生成コードを隠蔽したことを示す所定のメッセージのみを表示する（ステップＳ１４）。このステップＳ１４における処理は、ステップＳ１３と同様に、内部生成コード情報解析結果に基づいて、アセンブリコードに対し行われる。
【００４８】
図６は、内部生成コードの表示又は非表示に基づいて、ステップ系コマンドの処理を切り換える処理の流れの例を示すフローチャートである。この処理は、ユーザが表示装置１０３のGUIを操作し、ステップ系コマンドであるstepiを実行すると開始される。
【００４９】
まず、コマンド実行部１３は、入力されたコマンドの解析を行い、コマンド実行結果を表示処理部１４に出力する（ステップＳ２１）。表示処理部１４は、コマンド実行結果を解析すると共に、内部生成コードが表示されているか否かを検出する（ステップＳ２２）。内部コードが表示されている場合、YESとなり、内部生成コードを１ステップずつ実行する（ステップＳ２３）。内部生成コードが表示されていない場合、NOとなり、内部生成コードの最後まで実行する（ステップＳ２４）。
【００５０】
図７は、図５のステップＳ１３における、内部生成コードの表示が選択された場合の画面の表示例を示す図である。図７では、アドレス0x891a68からアドレス0x891b00の区間が内部生成コードに相当する。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x891a68の直前に点線により囲まれた部分２１が付加され、内部生成コードの終了のアドレス0x891b99の直後に点線により囲まれた部分２２が付加される。
【００５１】
点線により囲まれた部分２１は、内部生成コードの処理内容と開始位置であることを示すサポートメッセージであり、点線により囲まれた部分２２は、内部生成コードの処理内容と終了位置であることを示すサポートメッセージである。なお、プログラムカウンタ（以下、PCという）は、アドレス0x891a60に停止している。PCの停止位置は、図７において、三角印３０であり、以下の説明でも同様とする。３つの三角印３０が存在するのは、３つの命令を同時に実行することが可能であることを示している。
【００５２】
図８は、図５のステップＳ１３における、内部生成コードの非表示が選択された場合の画面の表示例を示す図である。内部生成コードの非表示が選択された場合、図７の内部生成コードが隠蔽され、点線により囲まれた部分２３が付加される。
【００５３】
点線により囲まれた部分２３は、内部生成コードの処理内容と内部生成コード自体は隠蔽されていることを示すサポートメッセージである。なお、PCは、アドレス0x891a60に停止している。
【００５４】
図９は、内部生成コードが表示されている状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。内部生成コードが表示されている場合、即ち、図７ではPCはアドレス0x891a60に停止している。この状態において、stepiコマンドを１度実行すると、内部生成コードの直前のコードが実行された後、PCは、内部生成コードの先頭、即ち、アドレス0x891a68において停止する。その後も、stepiコマンドを実行すると、内部生成コードを１ステップずつ実行する。
【００５５】
図１０は、内部生成コードが表示されていない状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。内部生成コードが表示されていない場合、即ち、図８ではPCはアドレス0x891a60に停止している。この状態において、stepiコマンドを１度実行すると、内部生成コードの直前のコードが実行された後、内部生成コードの最後まで実行する。この結果、PCは、内部生成コードの終了直後、即ち、アドレス0x891b08において停止する。このPCが内部生成コードの終了直後において停止する処理は、上述したコマンド設定部１３により設定されたブレークポイントに跳ぶことにより実行される。
【００５６】
以上のように、デバッグ装置１は、オブジェクトファイルの所定の領域に格納されている内部生成コード情報を解析し、デバッグ対象ではない内部生成コードに対して、内部生成コードの処理内容と開始位置又は終了位置とを示すサポートメッセージを付加するようにした。また、デバッグ装置１は、デバッグ対象ではない内部生成コードを隠蔽し、内部生成コードの処理内容と内部生成コードを隠蔽したことを示すサポートメッセージを付加するようにした。この結果、ユーザは、デバッグ対象ではない内部生成コードの処理内容、開始位置及び終了位置を認識する、あるいは、デバッグ対象ではない内部生成コード自体を隠蔽することができる。
【００５７】
以上から、内部生成コードを表示する場合でも、内部生成コードの開始位置と終了位置にメッセージを付加することで、ユーザは、内部生成コードを深く読み解く必要がなくなる。また、内部生成コード自体をユーザから隠蔽することで、ユーザが読むべきアセンブリコード量を減らすことができる。
【００５８】
よって、本実施の形態のデバッグ装置によれば、デバッグの不要なコードの情報をデバッグの必要なコードの情報と区別することができる。また、デバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することによりデバッグの効率を向上させることができる。
【００５９】
次に、本実施の形態の応用例について説明する。  
上述した実施の形態では、自動SIMD最適化により生成される内部生成コードについて説明したが、自動SIMD最適化以外の内部生成コードについて適用してもよい。
【００６０】
図１１は、ループ展開を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。図１１では、アドレス0x8102a8からアドレス0x8102f0の区間が、ループ展開を行う場合に生成される内部生成コードに相当する。即ち、この内部生成コードは、ループ展開を実行できるか否かの判定するためのプログラムであり、デバッグ不要なコードである。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x8102a8の直前に点線により囲まれた部分２４が付加され、内部生成コードの終了のアドレス0x8102f0の直後に点線により囲まれた部分２５が付加される。なお、PCは、アドレス0x8102a0に停止している。
【００６１】
図１２は、レジスタの退避を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。図１２では、アドレス0x81016eからアドレス0x810178の区間が、レジスタの退避を行う場合にコンパイラにより生成される内部生成コードに相当し、デバッグ不要なコードの部分である。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x81016eの直前に点線により囲まれた部分２６が付加され、内部生成コードの終了のアドレス0x810178の直後に点線により囲まれた部分２７が付加される。なお、PCは、アドレス0x81016cに停止している。
【００６２】
図１３は、分岐テーブルの参照を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。図１３では、アドレス0x81015eからアドレス0x810168の区間が、分岐テーブルの参照を行う場合にコンパイラにより生成される内部生成コードに相当し、デバッグ不要なコードの部分である。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x81015eの直前に点線により囲まれた部分２８が付加され、内部生成コードの終了のアドレス0x810168の直後に点線により囲まれた部分２９が付加される。なお、PCは、アドレス0x81015cに停止している。
【００６３】
なお、応用例では、内部生成コードを表示する例について説明したが、上述した実施の形態と同様、内部生成コードを非表示にすることもできる。また、上述した実施の形態と同様、内部生成コードの表示又は非表示の状態に基づいて、ステップ系コマンドの処理を切換えることもできる。
【００６４】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。また、本明細書における各フローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００６５】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD-ROM等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全体あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデバッグ装置を実現することができる。
【００６６】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００６７】
【図１】本実施の形態に係るデバッグ装置が含まれるプログラム生成装置の構成を示す構成図である。
【図２】本実施の形態に係るデバッグ装置の構成を説明するためのブロック図である。
【図３】コンパイル装置の処理の流れの例を示すフローチャートである。
【図４】内部生成コード情報解析部の処理の例を説明するための説明図である。
【図５】内部生成コードの表示又は非表示が選択された場合の処理の流れの例を示すフローチャートである。
【図６】内部生成コードの表示又は非表示に基づいて、ステップ系コマンドの処理を切り換える処理の流れの例を示すフローチャートである。
【図７】図５のステップＳ１３における、内部生成コードの表示が選択された場合の画面の表示例を示す図である。
【図８】図５のステップＳ１３における、内部生成コードの非表示が選択された場合の画面の表示例を示す図である。
【図９】内部生成コードが表示されている状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。
【図１０】内部生成コードが表示されていない状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。
【図１１】ループ展開を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。
【図１２】レジスタの退避を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。
【図１３】分岐テーブルの参照を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。
【符号の説明】
【００６８】
１  デバッグ装置、２  コンパイル装置、１１  内部生成コード情報解析部、１２  デコード部、１３  コマンド実行部、１４  表示処理部、１００  プログラム生成装置、１０１  本体装置、１０２  記憶装置、１０３  表示装置、１０４  キーボード、１０５  マウス、１０６  コンパイラ、１０７  デバッガ
【図１】
0004909877.tif 000002
【図２】
0004909877.tif 000003
【図３】
0004909877.tif 000004
【図４】
0004909877.tif 000005
【図５】
0004909877.tif 000006
【図６】
0004909877.tif 000007
【図７】
0004909877.tif 000008
【図８】
0004909877.tif 000009
【図９】
0004909877.tif 000010
【図１０】
0004909877.tif 000011
【図１１】
0004909877.tif 000012
【図１２】
0004909877.tif 000013
【図１３】
0004909877.tif 000014