(57)【要約】      （修正有）【課題】プログラムの実行過程における任意の位置におけるデータの変化を認識することができるデバッグ装置及びデバッグ方法を提供する。【解決手段】デバッグ装置１は、プログラム６中の任意の機械命令を選択し、表示属性を含む所定の属性情報を設定し、プログラム６を実行する。デバッグ装置１は、プログラム６が実行されたときに、実行すべき機械命令に所定の属性情報が設定されている場合、選択された機械命令の実行の結果データが格納されるメモリ中の位置あるいはレジスタを特定する格納データ特定部を有する。格納データ特定部によって特定されたメモリ中の位置あるいはレジスタについて、選択された機械命令の表示属性と同じ表示属性を設定して保存し、選択された機械命令と、特定されたメモリ中の位置あるいはレジスタのデータとを、それぞれ設定された表示属性に基づいて対応付けて表示する。【選択図】図１
2009070270.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのデバッグを行うデバッグ装置であって、
前記プログラムを構成する複数の機械命令中の任意の機械命令を選択し、表示属性を含む所定の属性情報を設定する属性情報設定部と、
前記プログラムの前記複数の機械命令を実行するプログラム実行部と、
該プログラム実行部により前記プログラムが実行されたときに、実行すべき機械命令に前記所定の属性情報が設定されている場合、前記属性情報設定部によって選択された機械命令の実行の結果データが格納されるメモリ中の位置あるいはレジスタを特定する格納データ特定部と、
該格納データ特定部によって特定された前記メモリ中の位置あるいはレジスタについて、前記属性情報設定部によって選択された機械命令の前記表示属性と同じ表示属性を設定して保存する表示属性保存部と、
前記属性情報設定部によって選択された機械命令と、特定された前記メモリ中の位置あるいはレジスタのデータとを、それぞれ設定された前記表示属性に基づいて対応付けて表示するデータ表示部と、
を有することを特徴とするデバッグ装置。
【請求項２】
前記属性情報設定部は、前記選択された機械命令がSIMD命令であるときには、該SIMD命令の処理する複数の入力データを、互いに区別できるように所定の表示属性により前記データ表示部の画面上に表示することを特徴とする請求項１に記載のデバッグ装置。
【請求項３】
前記表示属性保存部は、前記SIMD命令が処理する前記複数の入力データについて設定されている表示属性を、前記格納データ特定部によって特定された、前記SIMD命令の結果データが格納される前記メモリ中の位置あるいはレジスタに保存する表示属性として引き継ぐことを特徴とする請求項２に記載のデバッグ装置。
【請求項４】
前記プログラムを構成する複数の機械命令中の任意の機械命令を選択し、一時停止機能を設定する一時停止設定部を有し、
前記プログラム実行部は、前記一時停止設定部によって選択された機械命令よりも１つ前の機械命令を実行後、前記選択された機械命令を実行する前に、前記プログラムの実行を一時停止することを特徴とする請求項１に記載のデバッグ装置。
【請求項５】
プログラムのデバッグを行うデバッグ方法であって、
前記プログラムを構成する複数の機械命令中の任意の機械命令を選択し、表示属性を含む所定の属性情報を設定し、
前記プログラムの前記複数の機械命令を実行し、
前記プログラムが実行されたときに、実行すべき機械命令に前記所定の属性情報が設定されている場合、選択された機械命令の実行の結果データが格納されるメモリ中の位置あるいはレジスタを特定し、
特定された前記メモリ中の位置あるいはレジスタについて、選択された機械命令の前記表示属性と同じ表示属性を設定して保存し、
選択された機械命令と、特定された前記メモリ中の位置あるいはレジスタのデータとを、それぞれ設定された前記表示属性に基づいて対応付けて表示することを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ装置及びデバッグ方法に関し、特に、プログラムのデバッグを行うデバッグ装置及びデバッグ方法に関する。
【背景技術】
【０００２】
従来より、ソフトウエアプログラム（以下、単にプログラムともいう）の開発過程においてデバッグが行われている。プログラムの開発者すなわちプログラマは、デバッガと呼ばれるデバッグ装置を用いて、自己の作成したプログラムが設計の意図通りに動作しているかどうかを確認する。
【０００３】
デバッグ装置には、例えば、プログラムの任意の場所にブレークポイントを設定する機能があり、開発者は、その機能を利用して、プログラムをその場所の直前で命令の実行を停止させることができる。その結果、開発者は、その停止した状態における変数等のデータを確認することができる。
【０００４】
その場合、開発者は、データ表示用のグラフィカルユーザインターフェース（GUI）を利用する。デバッグ装置は、データ表示用のGUIの表示部分のデータ内容をプログラム実行開始前と停止時の差分を比較し、変化のあった部分を、強調表示あるいは着色のような表示の修飾を行って、開発者に示す。
【０００５】
また、メディア処理向けのデータ表示を判りやすく表示するための提案、各命令が使用するデータの値を表示するための提案、等もなされている（例えば、特許文献１、２参照）。
【０００６】
しかし、データ内容をプログラム実行開始前と停止時の差分を比較し、変化のあった部分に強調表示等の表示の修飾がされる場合、命令の実行の途中でデータの更新が発生しているにもかかわらず、プログラムの最小単位である機械命令の実行前後において、結果としてデータの内容に変化がない場合は、表示の修飾がなされない。そのため、開発者は、そのデータの内容の変化があったことを認識できないという問題があった。
【０００７】
このような場合は、結果データがどの原始データから得られたものであるかをデバッグする必要があるが、上述した従来のデータの変化を検出する方法では、処理過程の履歴を保持しないため、プログラムのトレース結果を解析するなど別な手段を利用しなければならなかった。
【特許文献１】特開2005-25579号公報
【特許文献２】特開2006-3987号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、上記の点に鑑みてなされたものであって、プログラムの実行過程における任意の位置におけるデータの変化を認識することができるデバッグ装置及びデバッグ方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、プログラムのデバッグを行うデバッグ装置であって、前記プログラムを構成する複数の機械命令中の任意の機械命令を選択し、表示属性を含む所定の属性情報を設定する属性情報設定部と、前記プログラムの前記複数の機械命令を実行するプログラム実行部と、該プログラム実行部により前記プログラムが実行されたときに、実行すべき機械命令に前記所定の属性情報が設定されている場合、前記属性情報設定部によって選択された機械命令の実行の結果データが格納されるメモリ中の位置あるいはレジスタを特定する格納データ特定部と、該格納データ特定部によって特定された前記メモリ中の位置あるいはレジスタについて、前記属性情報設定部によって選択された機械命令の前記表示属性と同じ表示属性を設定して保存する表示属性保存部と、前記属性情報設定部によって選択された機械命令と、特定された前記メモリ中の位置あるいはレジスタのデータとを、それぞれ設定された前記表示属性に基づいて対応付けて表示するデータ表示部と、を有するデバッグ装置を提供することができる。
【発明の効果】
【００１０】
本発明のデバッグ装置によれば、ユーザは、プログラムの実行過程における任意の位置におけるデータの変化を認識することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の形態を説明する。  
まず図１に基づき、本発明の実施の形態に係わるデバッグ装置の構成を説明する。図１は、本実施の形態に係わるデバッグ装置の構成を示す構成図である。  
デバッグ装置１は、中央処理装置（CPU）、主メモリ等を搭載した本体装置２と、各種データを記憶する記憶装置３と、各種データを表示する表示装置４とを含んで構成される。
【００１２】
本体装置２は、パーソナルコンピュータ（PC）等のコンピュータ装置本体であり、入力装置として、キーボード２ａとマウス２ｂが接続されている。これらの入力装置からの指示に基づいて、本体装置２は各種プログラムを実行する。
【００１３】
記憶装置３には、デバッグ機能のプログラムを有するデバッグプログラム（以下、デバッガという）５と、デバッグ対象のプログラム６とが記憶されている。  
プログラム６は、ここではターゲットのチップ上で実行されるプログラムである。そのチップ上には、プログラム６が実行されるときに、使用する主メモリ、レジスタ等が搭載されている。
【００１４】
なお、本実施の形態では、プログラム６は、そのようなチップ上の中央処理装置（CPU）上で実行されるものであるが、通常のパーソナルコンピュータ等のコンピュータ上で実行されるプログラムであってもよい。
【００１５】
記憶装置３には、さらに、プログラム６の各機械命令に対応して設定される属性情報を記憶する属性情報記憶部７と、表示データを記憶する表示データ記憶部８と、表示データ毎の表示属性情報を記憶する表示属性記憶部９とが記憶されている。
【００１６】
属性情報記憶部７は、各機械命令に対応して、表示属性を含む属性情報を記憶する。表示データ記憶部８は、開発者の指示に基づいて、後述するようなプログラムの表示とデータの表示を行う場合（例えば図１１参照）に、プログラム６が読み出し及び書き込む、ターゲットチップ上のメモリ中のデータ及びレジスタのデータを表示するためのデータを記憶する。表示属性記憶部９は、各データを表示するための表示属性を記憶する。
【００１７】
図２は、本実施の形態に係るデバッグ装置１のソフトウエア構成を示す構成図である。オペレーティングシステム（以下、OSという）１０上で、デバッガ５が実行され、そのデバッガ５上で、デバッグの対象のプログラム６が実行される。開発者は、開発中のプログラム６をデバッガ５上で実行させて、プログラム６の動作の確認を行う。
【００１８】
デバッガ５は、プログラム６中における、開発者により指定された部分の複数の命令を表示する機能を有する（図５参照）。そして、デバッガ５は、後述するように、開発者により選択された、プログラム６中の任意の行に、所定の属性設定及びブレークポイントの設定をすることができる。プログラム６の機械命令毎に設定された所定の属性情報は、属性情報記憶部７に記憶される。所定の属性情報の設定は、後述するように、プログラムの実行により処理されて格納されるデータが判別できるようにするための処理を行うことを指示する設定である。デバッガ５は、プログラム６を機械命令単位に実行する。
【００１９】
ここで、まず、本実施の形態に係るデバッグ装置１を用いたデバッグ作業の流れの例を説明する。図３は、本実施の形態に係るデバッグ装置１における処理の流れの例を示すフローチャートである。
【００２０】
まず、開発者は、後述する図５から図８に示すように、プログラム６を構成する複数の機械命令の中から、所定の属性設定あるいはブレークポイントの設定を行う機械命令を含むプログラムの部分を表示装置４の画面上に表示させて、所定の属性設定あるいはブレークポイントの設定を行いたい機械命令を選択する（ステップS1）。ステップS1の設定は、図５から図８を用いて後述する。ステップS1の処理が、属性情報設定部を構成する。
【００２１】
次に、開発者は、デバッガ５を実行させる（ステップS2）。ステップS2の処理は、図９により後述する。ステップS2の処理が、プログラム６の複数の機械命令を実行するプログラム実行部を構成する。
【００２２】
そして、開発者は、デバッガ５の実行結果を表示装置４の画面上に表示させると、表示画面である表示GUI（グラフィカルユーザインターフェース）には、選択した機械命令と、その機械命令の実行の結果データが格納されるメモリ中の位置あるいはレジスタのデータとを、それぞれ設定されあるいは保存された表示属性に基づいて対応付けて表示する（ステップS3）。対応付けの表示は、図１０及び図１１により後述する。
【００２３】
なお、後述するように、プログラム６が途中で一時停止した場合にも、ステップS3による機械命令とデータの表示が可能である。ステップS3の処理が、選択された機械命令と、特定されたメモリ中の位置あるいはレジスタのデータとを、それぞれ設定された表示属性に基づいて対応付けて表示するデータ表示部を構成する。
【００２４】
図４は、属性情報記憶部７に記憶される機械命令とその属性情報と、表示属性記憶部９に記憶されるデータとその属性情報の関係を説明するための図である。図４に示すように、ステップS1で選択された機械命令毎に、表示属性の情報が設定されて、属性情報記憶部７に記憶される。また、その機械命令が実行して結果データを格納するメモリの位置あるいはレジスタの位置には、その機械命令の表示属性が複製されて、表示属性記憶部９に記憶されて保存される。表示属性の保存処理については、後述する。
【００２５】
図５から図７は、図３のステップS1における、所定の属性設定及びブレークポイントの設定の例を説明するための画面の表示例を示す図である。例えば、図５に示すように、開発者は、記憶装置３に記憶されたプログラム６を読み出して、プログラム６中の任意の機械命令を含むプログラムの部分を、表示装置４の画面１１上に表示させることができる。そして、開発者は、ポインティングデバイスであるマウス２ｂを用いて、任意の行を選択することができる。図５では、選択された行Lnは、いわゆる反転表示、他の行とは異なる色による着色表示、反転表示、等の表示方法により、選択された行が、選択されていない他の行と、区別されて表示される。図５において、行Lnにおいて、点線で囲まれた部分２１が、例えば、反転表示されている。
【００２６】
具体的には、図５は、C言語で記述されたソースコードの複数の行の中の１つの行について、機械命令コードとアセンブリコードを、併せて表示している例を示す。開発者は、任意のソースコードのある１つの行について、そのソースコードの１行を構成する、１以上の機械命令と１以上のアセンブリコードを表示させることができる。図５では、１行のソースコードに対して、それぞれが機械命令を含む複数の行の部分１２が表示され、各行には、主メモリ中の絶対アドレスと、機械命令と、アセンブリコードの情報が含まれる。図５では、選択された行Lnの機械命令（４８０ａ）と、アセンブリコード（ｓｗ  ＄８  ０ｘ０００８（＄ｓｐ））とを含む部分２１が、反転表示される。
【００２７】
デバッガ５の機能として、選択された行に対して、ここでは２つの設定をすることができる。１つの設定は、所定の属性設定としてのデータ処理追跡の設定であり、もう一つは、ブレークポイントの設定である。これらの設定が行われると、これらの設定に関する属性情報が、その選択された行に対応する属性情報として、属性情報記憶部７に記憶される。
【００２８】
開発者は、マウス２ｂを用いて、任意の行に対して、データ処理追跡の設定、すなわち所定の属性設定、をすることができる。例えば、上述したように、データ処理追跡を設定したい行を選択した状態（図５に示す状態）において、マウス２ｂの右ボタンをクリックして、図６のようなポップアップメニュー画面３１を表示させる。ポップアップメニュー画面３１は、ブレークポイント設定のコマンド表示部３１ａと、データ処理追跡の設定のコマンド表示部３１ｂを有する。そのポップアップメニュー画面３１が表示された状態で、開発者は、データ処理追跡のコマンド表示部３１ｂにカーソル３２を移動させて、左クリックをすることによって、選択した行（図５の行Ln）にデータ処理追跡というコマンドを設定することができる。同様に、開発者は、任意の行に対して、コマンド表示部３１ａを選択することによって、ブレークポイントの設定もすることができる。例えば、図６では、データ処理追跡のコマンド表示部３１ｂが選択されていることを示すために、データ処理追跡のコマンド表示部３１ｂは、斜線により表示の修飾が行われている。ステップS1におけるコマンド表示部３１ａが、プログラム６を構成する複数の機械命令中の任意の機械命令を選択し、一時停止機能を設定する一時停止設定部を構成する。
【００２９】
図７は、データ処理追跡の設定がされた結果の表示例を示す図である。図７では、行Lnに対してデータ処理追跡の設定がされたので、部分２１ａに所定の着色の表示修飾がされている、所定の一色は、例えば水色であり、図７では、その水色を、点線と斜線（右上から左下へ向かう斜線）で示している。
【００３０】
さらに、図７は、データ処理追跡の設定がされた行Lnの１行前の行Ln-1に対してもデータ処理追跡の設定がされ、行Lnの色とは別の一色、例えば黄色の着色がされている状態を示している。図７では、行Ln-1の部分２１ｂに、その黄色の着色がされていることを、一点鎖線と別の斜線（左上から右下へ向かう斜線）で示している。
【００３１】
データ処理追跡の設定において、選択された行に表示される色は、所定の規則の下で、色の選択がされ、開発者は、表示装置４の画面上で図７に示すように、着色された行を見ることができる。例えば、行の選択順序に応じて、所定の色が選択されて設定される。本実施の形態では、記憶装置３に、選択された順序に対応する着色する色の情報が予め記憶されており、選択された順番に、選択された行が着色される。その着色された色の情報が、表示属性として、図４に示したように、属性情報記憶部７において、選択された行に対応して記憶される。
【００３２】
また、開発者は、ポップアップメニュー画面３１が表示された状態で、ブレークポイントの設定のコマンド表示部３１ａにカーソル３２を移動させて、右クリックをすることによって、選択した行（図７の行Ln-3）にブレークポイントの設定というコマンドを設定することができる。図７では、ブレークポイントが設定された行であることを示す、黒丸のマーク２２が、行Ln-3の先頭、ここでは左端に付けられることによって、行Ln-3にブレークポイントが設定されたことを示している。ブレークポイントの設定が行われても、その設定が行われた行について、属性情報として、一時停止の指示情報が記憶される。
【００３３】
以上のようにして、開発者は、デバッグ対象のプログラム中の任意の位置、すなわち行に対して、データ処理追跡の設定及びブレークポイントの設定を行うことができる。図５から図７は、プログラム６を構成する複数の機械命令中の任意の機械命令を選択し、表示属性を含む所定の属性情報を設定する属性情報設定部を構成する。  
その結果、データ処理追跡の設定の場合、その行について所定の属性情報が設定され、属性情報記憶部７に記憶される。すなわち、その行について、上述したような着色の色情報のような表示属性と、一時停止の指示情報と、データ処理追跡の設定がされていることを示す情報であるデータ処理追跡指示情報とが、属性情報記憶部７に記憶される。また、ブレークポイントの設定がされると、そのブレークポイントの設定がされた行について、属性情報として、一時停止の指示情報が、属性情報記憶部７に記憶される。
【００３４】
後述するように、データ処理追跡の設定がされると、デバッガ５は、その設定された行についての一時停止の指示情報に基づいて、その設定された行の１行前の行の機械命令を実行した後に、その設定された行の機械命令を実行する前に、プログラムの実行を一時停止する。一時停止した後に、デバッガ５は、後述する図９に示す処理を実行する。図９の処理を実行した後、その行以降の機械命令の実行が再開される。また、データ処理追跡の設定がされると、デバッガ５は、その設定された行についての一時停止の指示情報に基づいて、その設定された行の機械命令を実行する前に、実行を一時停止する。図７の場合、行Ln-1の前の行でプログラムの実行が一端停止する。この停止は、デバッガ５の実行においては、ユーザである開発者には、停止したことは見えない。一時停止した後に、図９の処理を実行した後に、行Ln-1以降の行の機械命令が実行される。なお、図７の場合、行Lnにもデータ処理追跡の設定がされているので、行Lnの機械命令の実行の前に一時停止され、図９の処理を実行した後に、行Ln以降の行の機械命令が実行される。
【００３５】
ブレークポイントの設定により、プログラムの実行が停止した場合、開発者が所定の指示を行うことによって、停止した以降の機械命令の実行が再開される。図７の場合、行Ln-3の機械命令にブレークポイントの設定がされているので、デバッガ５は、行Ln-3の機械命令の直前で、プログラムの実行を停止する。この停止は、デバッガ５の実行においては、ユーザである開発者には、停止したことは見えるので、開発者は、上述した所定の指示を行うことによって、行Ln-3以降の行の機械命令を実行させることができる。  
なお、プログラムの実行の一時停止は、従来のデバッガの有する一時停止の機能を利用してもよい。
【００３６】
図８は、プログラム中に、複数のデータ処理追跡の設定と、複数のブレークポイントが設定されたことを示す図である。開発者は、デバッグ対象のプログラム６中、所望する行に、データ処理追跡の設定をし、かつブレークポイントの設定を行うことができる。図８に示すように、複数の行に、データ処理追跡の設定がされ（符号２１ｃで示す）、別の複数の行に、ブレークポイントの設定されている（符号２２で示す）。
【００３７】
このような設定が行われたプログラム６が実行されると、後述するように、データ処理追跡を行って実行結果のデータについて修飾表示を行い、かつブレークポイントが設定された行では、その行の直前の行を実行した状態で、実行が停止される。
【００３８】
次に、デバッガ５のデータ処理追跡の機能に関する処理について説明する。  
図９は、デバッグ処理において、上述したようなデータ処理追跡の設定及びブレークポイントの設定がされたプログラム６を実行したときの処理の流れの例を示すフローチャートである。
【００３９】
プログラム６は、機械命令単位で実行される。デバッガ５は、機械命令を一行毎に読み出して図９の処理を実行する。デバッガ５は、読み出した機械命令の実行前にその行について設定されている属性情報を参照し、一時停止が設定されているか否か、すなわち一時停止の指示情報があるか否か、を判定する（ステップS11）。  
図７の場合、上述した行Ln-2を実行後、行Ln-1を実行するが、プログラムカウンタが行Ln-1の行に達すると、行Ln-1を実行する前に、その行Ln-1の属性情報に、一時停止が設定されているかが判定される。
【００４０】
具体的には、図７の例の場合、行Ln-1の命令は、メモリのスタックポインタspのアドレスから「８」のオフセット量だけ離れたアドレスに、レジスタ＄８の内容を、ストアする、という命令である。
【００４１】
デバッガ５は、前の行Ln-2の実行後、次の行Ln-1を実行する前に、次の行Ln-1の属性情報を参照する。  
デバッガ５は、行Ln-1の属性情報を参照すると、一時停止の指示情報があるので、ステップS11で、YESとなり、次に、行Ln-1がデータ処理追跡の設定がされた機械命令が否かを判断する（ステップS12）。すなわち、ステップS12において、データ処理追跡指示情報があるか否かが判断される。
【００４２】
行Ln-1には属性情報としてデータ処理追跡の設定がされているので、ステップS12でYESとなり、処理結果の格納先を特定する処理を行う（ステップS13）。ステップS13の処理が、プログラム６が実行されたときに、実行すべき機械命令に所定の属性情報が設定されている場合、選択された機械命令の実行の結果データが格納されるメモリ中の位置あるいはレジスタを特定する格納データ特定部を構成する。  
上述したように、行Ln-1の命令は、メモリのスタックポインタspのアドレスからオフセット量「８」だけ離れたアドレスに、レジスタ＄８の内容を、ストアする、という命令であるので、行Ln-1の機械命令の実行による結果データが格納されるのは、メモリ中のスタックポインタspからオフセット量８だけ離れたアドレス（以下、このアドレスをsp8という）に、処理結果のデータが格納される。
【００４３】
よって、デバッガ５は、ステップS13において、処理結果の格納先は、アドレスsp8であると特定される。
【００４４】
次に、デバッガ５は、表示GUI用の表示属性として、その機械命令について設定された表示属性を保存する（ステップS14）。すなわち、後述するように、プログラム６と、プログラム６が処理するメモリのデータあるいはレジスタの内容とを表示した場合に、メモリのデータあるいはレジスタの内容が、機械命令に設定された表示と同じ表示態様で表示されるように、前記特定された格納先であるメモリの位置あるいはレジスタの表示GUI用の表示属性として、機械命令について設定された表示属性を、記憶装置３の表示属性記憶部９に記憶する。言い換えると、ステップS14では、データについての表示属性の自動設定が行われる。ステップS14が、特定されたメモリ中の位置あるいはレジスタについて、選択された機械命令の表示属性と同じ表示属性を設定して保存する表示属性保存部を構成する。
【００４５】
すなわち、図４において説明したように、属性情報記憶部７において機械命令について設定された表示属性の情報を、表示するときのデータのための表示属性情報として、表示属性記憶部７の対応するデータの表示属性に複製し保存する。
【００４６】
その後、デバッガ５は、一時停止したために未実行であった行Ln-1の機械命令を実行し（ステップS15）、ステップS11に戻る。
【００４７】
また、ステップS12において、データ処理追跡指示情報がなければブレークポイントの設定である。その場合、ステップS12で、NOとなり、プログラムの実行を一時停止し、属性情報記憶部７及び表示属性記憶部９に保存された表示属性に従って、表示GUIとして、プログラムとデータを表示する（ステップS16）。ステップS16の処理が、データ表示部を構成する。そして、ステップS16の後は、処理は終了する。なお、ユーザからのプログラム実行の再開の指示があると、処理は、ステップS11から、停止した行以降の行の機械命令を実行する。
【００４８】
図１０は、データ表示ウインドウの一つとしてのメモリのデータを表示するメモリ表示ウインドウの例を示す図である。ユーザである開発者は、プログラム６が実行する対象となるデータとして、メモリ及びレジスタのデータを、デバッグ装置１の表示装置４に表示させることができる。
【００４９】
図１０において、メモリ表示ウインドウ４１は、表示装置４の画面１１上に表示されるウインドウである。メモリ表示ウインドウ４１は、表示されている対象あるいはアドレスを示す対象表示部５１と、その対象のデータを表示するデータ表示部５２を含む。図９では、対象表示部５１は、メモリのスタックのデータを表示することを示す「$sp」を示し、データ表示部５２は、テーブルデータ形式で、スタックの各データを表示する。
【００５０】
図１０は、図７に示した機械命令の実行に関わるデータ部分を表示する。図１０では、図７において設定された行Ln-1の実行結果データが格納されるsp8の表示部分は、図７において設定された行Ln-1と同じ表示態様、ここでは、同じ着色になる。同様に、行Lnの実行結果データが格納されるsp4の表示部分は、図７において設定された行Lnと同じ表示態様になる。
【００５１】
これは、デバッガ５が、ステップS3の表示処理において、メモリ表示ウインドウ４１を表示するときに、表示データ記憶部８から読み出したデータを、表示属性記憶部９に記憶された表示属性に基づいて表示するからである。すなわち、図１０に示すように、データ処理追跡の設定がされた機械命令と同じ表示属性が、結果データの表示のための表示属性として保存される。
【００５２】
図１１は、表示GUIの例を説明するための図である。図１１では、プログラム表示ウインドウ６１とメモリ表示ウインドウ４１とが画面１１上に表示されている。  
ユーザである開発者は、デバッグ対象のプログラム６に対して図９の処理を実行後、あるいはその処理の途中でブレークポイントにより一時停止した場合に、表示装置４の画面１１上に、デバッグ対象のプログラムを表示するプログラム表示ウインドウ６１と、データ表示ウインドウ４１を表示させることができる。
【００５３】
プログラム表示ウインドウ６１は、図７と同様の表示形式のウインドウであり、ユーザは、スクロールバー６２のスライダ６３を利用して、表示対象の任意の場所を表示させることができる。データ表示ウインドウ４１は、図１０と同様の表示形式のウインドウであり、ユーザは、スクロールバー４２のスライダ４３を利用して、表示対象の任意の場所を表示させることができる。
【００５４】
ユーザである開発者は、プログラム表示ウインドウ６１とデータ表示ウインドウ４１とを対比すると、データ処理追跡を設定した機械命令と、その機械命令の実行によってデータの格納が行われるデータが、同じ表示形態、ここでは同じ着色で表示されているため、機械命令とその実行結果のデータの対比をし易くなる。
【００５５】
さらに、途中にブレークポイントを設定することもできるため、プログラム６の実行の途中で一時停止した状態で、プログラム表示ウインドウ６１とデータ表示ウインドウ４１とを表示させることにより、プログラムの実行の途中において、機械命令とその実行結果のデータの対比をし易くなる。
【００５６】
以上のように、本実施の形態のデバッグ装置によれば、開発者は、プログラムの実行過程において任意の位置における機械命令が実行した結果データの変化を容易に認識することができる。言い換えると、ユーザである開発者は、プログラム中の任意の場所に、その場所の命令の実行結果をトレースできるようにすることができ、かつその結果データを容易に認識することができる。
【００５７】
なお、図１１では、プログラム表示ウインドウ６１とメモリ表示ウインドウ４１とが表示されているが、後述する図１３に示すようなレジスタ表示ウインドウも併せて表示するようにしてもよい。
【００５８】
さらに、プログラムの途中の任意の位置にブレークポイントの設定ができるので、実行途中におけるデータの変化も自由にかつ容易に把握することができる。言い換えると、プログラムの途中におけるデータの変化を確認したいときは、ブレークポイントを確認したい場所に設定しておけばよい。
【００５９】
なお、上述した例は、所定の属性情報を設定した命令は通常の命令であるが、設定対象は、SIMD型命令であってもよい。
【００６０】
ステップS1において設定されたデータ処理追跡対象の機械命令がSIMD型である場合、ステップS1において、設定がされたときに、機械命令の処理結果データを格納する格納先が複数あることを表示画面１１上で表示するようにしてもよい。
【００６１】
図１２は、SIMD型の機械命令に、データ処理追跡を設定したときの画面表示の例を示す図である。  
図１２に示すように、選択された行について、複数のデータ格納先があることを示す表示パターンが、お互いの表示形態を変えて表示される。  
図１２では、４つの格納データがあることを、行Ln-1の上に重ねるように、互いに色の異なる複数の、ここでは４つの、着色部２１ｃ，２１ｄ，２１ｅ，２１ｆを表示するようにして、開発者が認識できるように表示がされている。すなわち、選択されたSIMD型の機械命令が、格納するSIMDデータの数に応じて、修飾表示がされている。
【００６２】
また、上述したように、開発者は、デバッグ対象のプログラム６を実行後、あるいは一時停止した場合に、表示装置４の画面上に、デバッグ対象のプログラムを表示するプログラム表示ウインドウ６１と、データ表示ウインドウ４１を表示させると、データ表示ウインドウ４１は、図１３のように、データを表示する。
【００６３】
図１３は、SIMD型の機械命令の実行後のメモリのデータを表示するデータ表示ウインドウの例を示す図である。ここでは、データは、バイト型のSIMDデータである。図１３では、図１２の４つの格納データの色に対応する４つの着色部５３ｃ，５３ｄ，５３ｅ，５３ｆが、それぞれ対応するデータ部に、重ねて表示される。着色部２１ｃと５３ｃは、同じ色であり、着色部２１ｄと５３ｄは、同じ色であり、着色部２１ｅと５３ｅは、同じ色であり、着色部２１ｆと５３ｆは、同じ色となっている。すなわち、SIMD型の機械命令によって更新されたデータが、修飾表示されている。
【００６４】
以上のように、命令がSIMD型の場合は、SIMDデータ単位に表示属性の設定を行うようにしてもよい。よって、開発者は、４つのデータがどの行に対応するSIMDデータであるかを容易に認識することができる。
【００６５】
さらに、図１４は、SIMD型の機械命令の実行後のレジスタのデータを表示するレジスタ表示ウインドウの例を示す図である。
【００６６】
機械命令の中には、データの入れ替えなどを行って他のレジスタに書き込むような命令がある。そのような場合に、処理対象となる元データに表示属性が設定されている場合、そのような機械命令によって実行された結果データを、入れ替えられたデータであることが判るように表示すると、開発者は、正しくデータの入れ替えが行われているか等を確認することができる。
【００６７】
そこで、図１４の場合、入れ替える対象の元データがレジスタＲ８に存在し、その元データに対して入れ替え処理を行って、レジスタＲ１１にデータを書き込んだときは、元のレジスタＲ８のデータに設定されていた表示属性が、入れ替えた結果データの格納先のレジスタＲ１１のデータに、引き継がれる。
【００６８】
具体的には、図１４に示すように、レジスタＲ８の４つのデータに対して、それぞれ互いに区別できるように異なる表示形態、例えば異なる色、になるように、設定されている。レジスタＲ８のデータ「aｂ」、「ｃｄ」、「ｅｆ」及び「００」には、それぞれ異なる着色部７１ａ，７１ｂ，７１ｃ，７１ｄが、重なるように表示される。一方、入れ替えられたデータ「００」、「ｅｆ」、「ｃｄ」及び「aｂ」にも、それぞれ異なる着色部８１ａ，８１ｂ，８１ｃ，８１ｄが、重なるように表示されるが、入れ替えられたデータ自体は変わらないので、データ「ａｂ」の着色部７１ａと８１ｄは、同じ色であり、データ「ｃｄ」の着色部７１ｂと８１ｃは、同じ色であり、データ「ｅｆ」の着色部７１ｃと８１ｂは、同じ色であり、データ「００」の着色部７１ｄと８１ａは、同じ色となっている。
【００６９】
元データの表示属性は、図９のステップS14において、機械命令について設定された表示属性の代わりに、元データについて設定された表示データを、格納先のデータの表示属性として保存することにより、引き継ぐことが可能である。  
よって、開発者は、データ表示ウインドウを見ただけで、入れ替えられたデータを容易に認識することができる。
【００７０】
以上のように、SIMD型機械命令の場合、従来の結果データの変化を表示するだけでは確認できないが、上述したような方法によれば、入力データのSIMDデータ部分に対応した処理結果の確認を容易にすることができる。なお、SIMD型の機械命令であっても、図１２から図１４のように、データ毎に色を変更するのではなく、各データを、同じ色で表示するようにしてもよい。
【００７１】
以上説明したように、上述した本実施の形態のデバッグ装置によれば、プログラムの実行過程において任意の位置におけるデータの変化を認識することができる。
【００７２】
なお、上述した表示属性は、色の属性情報の例で説明したが、フォント、線の太さ、はっチング等の、他の表示属性であってもよい。例えば、命令とデータに付加する網掛けの形態を示すような属性情報であってもよい。他の表示属性と区別でき、その命令に設定された表示修飾と一致する表示修飾がされるような、表示属性であればよい。
【００７３】
また、以上説明した本実施の形態に係るデバッグ装置によれば、あるブレークポイントBP1のところで実行が停止したときに、それまでの、すなわちそのブレークポイントBP1が設定された行よりも１つ前の行までの実行によって、変化したデータの状態が表示される。
【００７４】
従って、次のブレークポイントBP2が設定されたところがあれば、前のブレークポイントBP1が設定された行以降の機械命令であって、その次のブレークポイントBP2が設定された行とよりも１つ前までの実行によって変化したデータの状態が表示される。
【００７５】
よって、開発者は、ブレークポイントの設定を行うことによって、ブレークポイントの設定された行の機械命令が実行される前の状態のデータを確認し、その後、実行を再開させることによって、最終的にデータがどのように変化したかを確認することができる。
【００７６】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。また、本実施の形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００７７】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデバッグ装置を実現することができる。  
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施の形態に係わるデバッグ装置の構成を示す構成図である。
【図２】本発明の実施の形態に係わるデバッグ装置のソフトウエア構成を示す構成図である。
【図３】本発明の実施の形態に係るデバッグ装置における処理の流れの例を示すフローチャートである。
【図４】本発明の実施の形態に係る、属性情報記憶部に記憶される機械命令とその属性情報と、表示属性記憶部に記憶されるデータとその属性情報の関係を説明するための図である。
【図５】図３のステップS1における、所定の属性設定及びブレークポイントの設定の例を説明するための画面の表示例を示す図である。
【図６】図３のステップS1における、所定の属性設定及びブレークポイントの設定の例を説明するための画面の表示例を示す図である。
【図７】図３のステップS1における、所定の属性設定及びブレークポイントの設定の例を説明するための画面の表示例を示す図である。
【図８】図３のステップS1における、所定の属性設定及びブレークポイントの設定の例を説明するための画面の表示例を示す図である。
【図９】デバッグ処理において、上述したようなデータ処理追跡の設定及びブレークポイントの設定がされたプログラムを実行したときの処理の流れの例を示すフローチャートである。
【図１０】本発明の実施の形態に係る、データ表示ウインドウの一つとしてのメモリのデータを表示するメモリ表示ウインドウの例を示す図である。
【図１１】本発明の実施の形態に係わる、表示GUIの例を説明するための図である。
【図１２】本発明の実施の形態に係わる、SIMD型の機械命令に、データ処理追跡を設定したときの画面表示の例を示す図である。
【図１３】本発明の実施の形態に係わる、SIMD型の機械命令の実行後のメモリのデータを表示するデータ表示ウインドウの例を示す図である。
【図１４】本発明の実施の形態に係わる、SIMD型の機械命令の実行後のレジスタのデータを表示するレジスタ表示ウインドウの例を示す図である。
【符号の説明】
【００７９】
１  デバッグ装置、２  装置本体、２ａ  キーボード、２ｂ  マウス、３  記憶装置、４  表示装置、５  デバッガ、６  プログラム、７  属性情報記憶部、８  表示データ記憶部、９  表示属性記憶部、１０  ＯＳ、１１  画面、３１  ポップアップメニュー画面、３２  カーソル
【図１】
2009070270.tif 000003
【図２】
2009070270.tif 000004
【図３】
2009070270.tif 000005
【図４】
2009070270.tif 000006
【図５】
2009070270.tif 000007
【図６】
2009070270.tif 000008
【図７】
2009070270.tif 000009
【図８】
2009070270.tif 000010
【図９】
2009070270.tif 000011
【図１０】
2009070270.tif 000012
【図１１】
2009070270.tif 000013
【図１２】
2009070270.tif 000014
【図１３】
2009070270.tif 000015
【図１４】
2009070270.tif 000016