(57)【要約】【課題】ポインタの参照先の記憶領域の値を更新する命令を実行することにより生じる影響をユーザに提示できる実行トレース表示装置、実行トレース表示方法及び実行トレース表示プログラムを提供する。【解決手段】実行トレース表示装置１００は、プログラムの実行段階を示す識別子と、命令と、その実行段階における記憶領域の状態とを含む実行トレースを表示する。命令が、ポインタの参照先の記憶領域の値を更新するものである場合、そのポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示する。【選択図】図１
2013254320.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示装置であって、
前記命令が、ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示する
実行トレース表示装置。
【請求項２】
前記命令が、前記ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示する
請求項１記載の実行トレース表示装置。
【請求項３】
前記実行段階において不具合が発生する場合であって、前記他のポインタの前記記憶領域が複数存在する場合、
前記識別子と同じ識別子をより多く含む、前記他のポインタの前記記憶領域の情報を、優先的に表示する
請求項１又は２記載の実行トレース表示装置。
【請求項４】
プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示装置であって、
前記命令が、ポインタの参照先の前記記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示する
実行トレース表示装置。
【請求項５】
プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示方法であって、
前記命令が、ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示する
実行トレース表示方法。
【請求項６】
前記命令が、前記ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示する
請求項５記載の実行トレース表示方法。
【請求項７】
前記実行段階において不具合が発生する場合であって、前記他のポインタの前記記憶領域が複数存在する場合、
前記識別子と同じ識別子をより多く含む、前記他のポインタの前記記憶領域の情報を、優先的に表示する
請求項５又は６記載の実行トレース表示方法。
【請求項８】
プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示方法であって、
前記命令が、ポインタの参照先の前記記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示する
実行トレース表示方法。
【請求項９】
コンピュータに、
プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示させる実行トレース表示プログラムであって、
前記命令が、ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示させる
実行トレース表示プログラム。
【請求項１０】
コンピュータに、
プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示させる実行トレース表示プログラムであって、
前記命令が、ポインタの参照先の前記記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示させる
実行トレース表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行トレース表示装置、実行トレース表示方法及び実行トレース表示プログラムに関し、例えばポインタの参照先の記憶領域の値を更新する命令を実行することにより生じる影響をユーザに提示する技術に関する。
【背景技術】
【０００２】
プログラムの実行トレースとは、特定の入力に応じてプログラムを実行した際の当該プログラムの振る舞い示す情報であり、典型的には、プログラム開始状態から実行段階を経るごとに変化していく状態（状態とは、プログラムが計算機の記憶領域に格納するデータを指す）を記録したリストである。実行トレースは、その用途に応じて、いつ、どのような状態を記録するかが異なるのが一般的である。
【０００３】
なお、一般に、実行トレースとは、プログラムを実際に計算機上で動作させた際の状態の記録に限定されず、プログラム解析などにより模擬的に動作させた際の状態の記録をも含む。以降、実行トレースという際には、計算機上での実行によるものか、又は何らかの模擬的な手段等によるものかを区別しない。
【０００４】
このような実行トレースを表示する装置は、プログラムの実行時の振る舞いを理解するため、プログラムの性能上の問題を分析するため、プログラムの不具合を解析するため、またプログラム解析により検出された不具合を理解するためなどの目的に利用される。
【０００５】
非特許文献１には、プログラムの理解を促進するための実行トレース表示装置が記載されている。
【０００６】
非特許文献２には、プログラムの不具合を解析する（デバッグ）ための実行トレース表示装置が記載されている。
【０００７】
非特許文献３には、プログラムを解析することにより、不正なメモリアクセス等の不具合を発生させるような実行トレースの存在を検出し、そのような実行トレースを表示する実行トレース表示装置が記載されている。
【０００８】
図７に、これらの実行トレース表示装置２００の構成を示す。実行トレース表示装置２００は、入力部２０１、表示データ加工部２０２、表示部２０３、出力部２０４、記憶装置２０５を備える。記憶装置２０５はソースコードと実行トレースとを格納する。実行トレースはプログラムの実行に応じた状態を時系列に記録したものであり、例えば、実行ステップ数、当該ステップに対応するソースコード中の場所、当該ステップで実行された命令を示す抽象構文木、当該ステップにおける記憶領域の状態などを含む。状態は、例えば、アドレスと当該アドレスに記録されている値のペアから構成される表として示される。
【０００９】
実行トレース表示装置２００は次のように動作する。表示データ加工部２０２は、キーボードやマウスなどの入力部２０１から特定の指示が入力されると、ソースコードおよび実行トレースを記憶装置２０５から読み込み、指示の内容に応じて、ソースコードを加工して表示部２０３に加工したソースコードを含む情報を送信する。入力部２０１からの指示の内容とは、たとえば、実行トレースの特定のステップに対応するソースコード行を表示する、実行トレースの次のステップを表示する、などである。表示データ加工部２０２によるソースコードの加工とは、たとえば、ソースコードの中から指定された実行トレースのステップに相当する行に色を付ける、ソースコードの中から指定された実行トレースのステップに相当する行が出力部２０４の中心あるいは見やすい位置に表示されるように指示を入れる、などの処理を行うことである。表示部２０３は、たとえば、ウェブブラウザ、プログラム開発環境のエディタなどであり、表示データ加工部２０２から受信した情報に従、たとえば色を付けるなどの加工がなされたソースコードをディスプレイなどの出力部２０４に表示する。なお、非特許文献１記載の実行トレース表示装置は、ソースコードではなく、実行トレースのステップに対応する抽象構文木に相当する情報を表示する。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】寺田  実，「イーティービー、ア  プログラム  トレース  プレーヤー  フォー  スツューデンツ」（ＥＴＶ：  ａ  Ｐｒｏｇｒａｍ  Ｔｒａｃｅ  Ｐｌａｙｅｒ  ｆｏｒ  Ｓｔｕｄｅｎｔｓ），アイティーアイシーエスイー０５議事録（Ｉｎ  Ｐｒｏｃ．  ｏｆ  ＩＴｉＣＳＥ'０５），２００５年
【非特許文献２】櫻井  孝平，「トレースグラス（Ｔｒａｃｅｇｌａｓｓ）：欠陥の効率よい発見手法を実現するトレースに基づくデバッガ」、情報処理学会論文誌  プログラミング３（３）  １−１７，２０１０年０６月１６日
【非特許文献３】橋本  祐介，「形式手法によるＣ言語検証ツール「バーベル（ＶＡＲＶＥＬ）」」，ＮＥＣ技報Ｖｏｌ．６０  Ｎｏ．２，２００７年４月
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、これらの実行トレース表示装置では、実行トレースの中に含まれるステップの中に、ポインタの参照先の記憶領域の値を更新する命令が含まれる際に、この命令を実行することにより発生する影響を把握できないという問題点があった。
【００１２】
その原因は、当該更新される記憶領域の情報が表示されないこと、及び当該更新される記憶領域を参照する他のポインタ型の記憶領域の情報が表示されないことにある。
【００１３】
本発明は、このような問題点を解決するためになされたものであり、ポインタの参照先の記憶領域の値を更新する命令を実行することにより生じる影響をユーザに提示できる実行トレース表示装置、実行トレース表示方法及び実行トレース表示プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る実行トレース表示装置は、プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示装置であって、前記命令が、ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示するものである。
【００１５】
本発明に係る他の実行トレース表示装置は、プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示装置であって、前記命令が、ポインタの参照先の前記記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示するものである。
【００１６】
本発明に係る実行トレース表示方法は、プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示方法であって、前記命令が、ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示するものである。
【００１７】
本発明に係る他の実行トレース表示方法は、プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示する実行トレース表示方法であって、前記命令が、ポインタの参照先の前記記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示するものである。
【００１８】
本発明に係る実行トレース表示プログラムは、コンピュータに、プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示させる実行トレース表示プログラムであって、前記命令が、ポインタの参照先の記憶領域の値を更新するものである場合、前記ポインタとエイリアス関係にある他のポインタの記憶領域の情報をさらに表示させるものである。
【００１９】
本発明に係る他の実行トレース表示プログラムは、コンピュータに、プログラムの実行段階を示す識別子と、命令と、前記実行段階における記憶領域の状態とを含む実行トレースを表示させる実行トレース表示プログラムであって、前記命令が、ポインタの参照先の前記記憶領域の値を更新するものである場合、前記ポインタが参照する前記記憶領域の情報をさらに表示させるものである。
【発明の効果】
【００２０】
本発明により、ポインタの参照先の記憶領域の値を更新する命令を実行することにより生じる影響をユーザに提示できる実行トレース表示装置、実行トレース表示方法及び実行トレース表示プログラムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態１の実行トレース表示装置１００の構成を示す図である。
【図２】本発明の実施の形態１の実行トレース表示装置１００における静的記号表の例を示す図である。
【図３】本発明の実施の形態１の実行トレース表示装置１００における動的記号表の例を示す図である。
【図４】本発明の実施の形態１の実行トレース表示装置１００における関数表の例を示す図である。
【図５】本発明の実施の形態１の実行トレース表示装置１００の動作を示す図である。
【図６】本発明の実施の形態１の実行トレース表示装置１００の動作を示す図である。
【図７】従来の実行トレース表示装置２００の構成を示す図である。
【発明を実施するための形態】
【００２２】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２３】
＜実施の形態１＞
まず、実施の形態１に係る実行トレース表示装置１００の基本構成について説明する。実行トレース表示装置１００は、入力部１０１、ポインタ情報計算部１０２、表示データ加工部１０３、記憶装置１０６を有する。
【００２４】
記憶装置１０６は、実行トレース、ソースコード、及び記号表を含む。記号表は、プログラムが利用する記憶領域のアドレスと当該アドレスに関連するソースコードに関する情報（変数名、変数の定義場所、変数の確保場所など）の組のリストを含む。実行トレースは、プログラムの実行段階を一意に識別する識別子（たとえばステップ数）と、当該実行段階で実行される命令と、当該実行段階に対応するソースコード中の場所と、当該実行段階における状態とを含む。状態とは、記憶領域のアドレスと、そのアドレスに格納された値とを対応付けた表である。ここでいうソースコードとは、当該実行トレースに対応するプログラムを構成するソースコードのほか、前記ソースコードに相当する記述（たとえばソースコードの中間表現など）であってよい。
【００２５】
表示データ加工部１０３は、入力部１０１から特定の実行段階を示す識別子を受け付けると、ポインタ情報計算部１０２に前記識別子を送信し、ポインタ情報計算部１０２から処理結果を示す情報を受信する。また、表示データ加工部１０３は、記憶装置１０６からソースコードを取得し、前記実行段階に対応するソースコードの場所を他の部分と区別できる形に加工する（たとえば色を付ける）。加えて、表示データ加工部１０３は、前記ポインタ情報計算部１０２から受信した情報が空ではない場合、加工したソースコードに加えて、受信した前記情報をも含む出力情報を生成する。
【００２６】
ポインタ情報計算部１０２は、表示データ加工部１０３から識別子を受け付けると、当該識別子に対応する実行トレースに関する情報を記憶装置１０６から読み込む。当該実行トレースに含まれる命令が、ポインタが参照する先の記憶領域の値を更新するものであった場合、ポインタ情報計算部１０２は、次の２つの処理のいずれか、あるいは両方を実行する：（１）ポインタ情報計算部１０２は、当該ポインタが参照する記憶領域に関連するソースコードに関する情報を、記憶装置１０６に含まれる前記記号表から取得する（以降、この情報を参照先情報と呼ぶ）。（２）ポインタ情報計算部１０２は、当該ポインタが参照する記憶領域と同じ記憶領域を参照する他のポインタ型の記憶領域を、記憶領域１０６に含まれる前記記号表から検索する。また、ポインタ情報計算部１０２は、このような他のポインタ型の記憶領域に関連するソースコードに関する情報を、記憶装置１０６に含まれる前記記号表から取得する（以降、この情報をエイリアス情報と呼ぶ）。これらの処理の後、ポインタ情報計算部１０２は、得られた情報、すなわち参照先情報やエイリアス情報を、表示データ加工部１０３に送信する。
【００２７】
つぎに、図１を用いて、実行トレース表示装置１００のより具体的な実装例について説明する。
【００２８】
実行トレース表示装置１００は、制御プログラムに従って動作する計算機１０７と、メモリやハードディスク等の記憶装置１０６とを備える。
【００２９】
計算機１０７は、キーボード、マウス等を有する入力部１０１と、モニタ等を有する出力部１０５とに接続される。計算機１０７は、ポインタ情報計算部１０２、表示データ加工部１０３、表示部１０４を備える。記憶装置１０６は、動的記号表、静的記号表、関数表、実行トレース、ソースコードを保持する。  図３に、動的記号表の例を示す。動的記号表は、プログラム実行中に動的に確保される記憶領域の情報を表し、アドレス、場所、ステップ数の３つの要素を含む列を含む。アドレスは、プログラムによって使用される記憶領域の位置を示す。場所は、そのアドレスがソースコード中のどの部分、すなわち場所の命令で確保されたのかを示す。ステップ数は、そのアドレスがどの実行ステップで確保されたのかを示す。本実施の形態では、場所は、ソースコードのファイル名、行数、コラム数、の３つの要素を含むものとする。動的記号表の内容は、実行ステップ毎に変化する可能性があるため、実行ステップ毎に、対応する動的記号表が存在する。このような動的記号表は次のように作成できる。実行トレースを最初から最後まで走査する。実行トレースのステップ毎に、抽象構文木を検査し、メモリ確保用の関数（ｍａｌｌｏｃなど）を呼び出している場合、当該関数で確保された記憶領域の開始アドレスと、当該ステップ数と、当該ステップに対応する場所とを、動的記号表に記録する。一方、メモリ解放用の関数（ｆｒｅｅなど）が呼び出されている場合、当該関数により解放されるアドレスを含む組を動的記号表から取り除く。このようにしてステップ毎に動的記号表を作成できる。
【００３０】
図２に、静的記号表の例を示す。静的記号表は、プログラムのソースコード中に記述されている変数の名称と、その変数の記憶領域上のアドレス、及びその変数が定義されているソースコードの場所の３つの要素を含む列を含む。静的記号表の内容は、関数呼び出し及び関数呼び出しから戻る際に変化する可能性があるため、動的記号表と同様に、ステップ毎に対応する静的記号表が与えられるものとする。静的記号表は、実行トレースを生成した他の装置などにより、あらかじめ記憶装置１０６に記録されていることが望ましい。例えば、実際のプログラム実行を監視して実行トレースを生成する場合、静的記号表は、各変数の実際のアドレスを記録することで生成できる。プログラム解析により疑似的に生成された実行トレースの場合は、当該解析装置により各変数に割り当てられた仮想的なアドレスを記録することにより静的記号表を生成できる。
【００３１】
図４に、関数表の例を示す。関数表は、場所に基づいて対応する関数の名称を導出するための表であり、たとえばプログラム作成者などにより作成され、予め記憶装置１０６に保持されているものとする。
【００３２】
実行トレース表示装置１００の各部の関係について説明する。
【００３３】
入力部１０１は、表示部１０４により出力部１０５上に表示された実行トレース閲覧用のＧＵＩ（グラフィカル・ユーザ・インタフェース）に基づいて、ユーザ（利用者）が行う入力を受け付ける。本実施の形態においては、入力部１０１は、ユーザが実行トレースの特定のステップ数を選択し、かつ、その情報を表示させる旨の指示を行ったことを検知するものとする。
【００３４】
表示データ加工部１０３は、入力部１０１によって選択された実行ステップ数を受信すると、当該実行ステップ数に対応する実行トレースの組を記憶装置１０６から読み込むとともに、当該実行ステップ数をポインタ情報計算部１０２に送信する。
【００３５】
ポインタ情報計算部１０２は、受信した実行ステップ数に対応する実行トレースの組を記憶装置１０６から読み込む。そして、当該実行ステップの抽象構文木に含まれる命令が、ポインタが参照する先への値の代入である場合に、当該ポインタが参照する先の記憶領域に関連する情報（参照先情報）と、当該ポインタと同じ値を持つ他のポインタの記憶領域に関連する情報（エイリアス情報）とを、前記実行ステップ数に対応する動的記号表と静的記号表とから検索し、検索結果を表示データ加工部１０３に返す。このとき、各場所に対応する関数の情報を、関数表を検索して追加しても良い。なお、検索の結果、関連する情報が得られなかった場合は空の情報を返す。また、命令が上記以外である場合も、空の情報を返す。
【００３６】
表示データ加工部１０３は、受信した実行ステップ数に対応するソースコード中の場所を強調表示するように加工するとともに、ポインタ情報計算部１０２から返された情報が空でない場合、次のように動作する。
【００３７】
まず、返された情報に参照先情報が含まれる場合、この代入により値が更新される記憶領域の情報として、当該参照先情報をも出力するように加工する。
【００３８】
次に、返された情報にエイリアス情報が含まれる場合、この代入により参照先の値が変わる記憶領域の情報として、当該エイリアス情報をも出力するように加工する。
【００３９】
また、前記参照先情報または前記エイリアス情報が静的記号表より検索されたものであれば、更新される変数の名称、場所、当該変数を定義する関数名を表示する情報に含めてもよい。
【００４０】
一方、前記参照先情報または前記エイリアス情報が動的記号表より検索されたものであれば、当該記憶領域を確保した場所とステップ数とを表示する情報に含めてもよい。なお、記憶領域を確保した場所だけでなく、プログラムがどのような文脈（コンテキスト）でその記憶領域を確保したのかまで表示しなければ、ユーザがトレースの意義を理解することが困難な場合がある。したがって、先の動的記号表に、文脈（コンテキスト）の情報を加えて、当該文脈も表示する情報に含めてもよい。なお、文脈とは関数呼び出しのリストであり、どのような関数呼び出しの結果、当該メモリが確保されたのかを示す。このような文脈の情報は、たとえばプログラム作成者などが予め作成することができる。
【００４１】
表示データ加工部１０３が加工したソースコード、及びこれらのポインタに関係する情報（参照先情報、エイリアス情報）は、表示データ加工部１０３から表示部１０４に送られる。表示部１０４は、たとえばウェブブラウザや、開発環境のエディタなどの情報を閲覧するためのＧＵＩであり、送られた情報を出力部１０５に出力する。
表示部１０４は、これらのポインタに関係する情報（参照先情報、エイリアス情報）を、たとえば当該実行ステップ数に対応するソースコードの部位（場所）の近くにポップアップで表示してもよいし、あるいは、ソースコードに隣接するＧＵＩ画面に表示してもよい。
【００４２】
また、ここで表示する情報には、ユーザがその情報を表示した箇所をクリックした際に、対応するソースコードの部位（場所）を参照できるように、リンクを施しておくことが好ましい。
【００４３】
なお、表示データ加工部１０３がポインタ情報計算部１０２から受信したエイリアス情報の中に複数の記憶領域の情報が含まれている場合、それらのエイリアス情報のうち価値が高いと思われるものを優先的に目立つ場所に表示する、あるいは価値が高いとおもわれるもののみを表示するよう、出力情報を加工することが好ましい。たとえば、不具合が発生することを示す実行トレースの場合、不具合が発生する実行段階の命令に含まれる識別子と同じ識別子をより多く含む、前記ポインタとエイリアス関係にある記憶領域の情報を、ユーザに対し優先的に、たとえば画面上の見やすい位置に表示するとよい。
【００４４】
なお、ソースコード中の不具合が発生する箇所は、公知のバグ発見ツールなどを用いて検出することが可能である。実行トレース表示装置１００は、このようなバグ発見ツールの一部として組み込まれる形で実現されてもよい。この場合、実行トレース表示装置１００には、バグ発見ツールにより発見された、不具合が発生する箇所に関する実行トレース（不具合が発生することを示す実行トレース）のみが入力されるよう構成してもよい。
【００４５】
つづいて、図５のフローチャートを用いて、ポインタ情報計算部１０２の動作について詳細に説明する。
【００４６】
まず、ポインタ情報計算部１０２は、表示データ加工部１０３から受信した実行ステップ数に対応する実行トレースの組を記憶装置１０６から読み込み、当該実行ステップの抽象構文木に含まれる命令が、ポインタが参照する先への値の代入である場合に、先の処理（ステップＳ１２）に進み、そうでない場合、処理を終える（ステップＳ１１）。与えられた抽象構文木がポインタが参照する先への値の代入かどうかを調べるためには、たとえば、ソースコードがＣ／Ｃ＋＋の場合、"＊"という記号が最も外側に来る式への書き込みが発生するか否かを検査すればよい。なお、"ｐ−＞ｆ"も"（＊ｐ）．ｆ"と同じ意味である。Ｊａｖａ（登録商標）の場合、フィールドへの書き込みが発生するか否かを検査すればよい。
【００４７】
次に、前記書き込みが発生するポインタ式の値を取得する（ステップＳ１２）。なお、この処理には抽象構文木の解釈が必要になり、たとえばＣのように複雑なポインタ演算が可能なプログラム言語の場合、必ずしもすべての場合において解釈が可能とは限らない。特にオフセット（構造体のフィールド、配列要素）を利用した式の場合、各型の大きさが記録されているか、あるいは、非特許文献３に記載されているようにフィールドや配列要素が登場しないプログラムに変換するなどの対応が必要になる。式に登場する変数の値は、式に登場する変数のアドレスを静的記号表から検索し、当該アドレスの値を、当該実行トレースの状態から取得することで得られる。ポインタ式の値が得られた場合は、ステップＳ１３に進む。
【００４８】
次に、先のポインタ式のエイリアス情報を計算する（ステップＳ１３）。図６を用いて、ステップＳ１３の動作について説明する。
【００４９】
まず、先のポインタ式の値と同じ値を持つアドレスを、当該実行トレースの状態から取得する。なお、そのようなアドレスは存在しないか、または複数のアドレスが得られる可能性もある。取得したアドレスはポインタ式とエイリアスの関係にある（ステップＳ２１）。
【００５０】
ここで得られたアドレスそれぞれについて、以下の処理を進める（ステップＳ２２）。
【００５１】
まず、当該アドレスに対応する変数名を静的記号表から検索する。当該アドレスと同じアドレスを持つ変数の名称と場所を取得する（ステップＳ２３）。さらに、関数表を検索して、当該場所に対応する関数名を求める。以上得られた変数の名称、場所、関数名とを、表示データ加工部１０３に送るエイリアス情報に含める。
【００５２】
もし、当該アドレスが静的記号表に存在しない場合、動的記号表を検索する（ステップＳ２４及びＳ２５）。当該アドレスと同じアドレスを持つ組があれば、その場所とステップ数とを表示データ加工部１０３に送るエイリアス情報に含める。以上がステップＳ１３の動作である。
【００５３】
つづいて、ポインタ情報計算部１０２は、前記ポインタ式が参照する先のメモリ情報を検索する（ステップＳ１４）。ステップＳ１２で取得した値が参照先アドレスを示しているので、ステップＳ１３の処理と同様に、当該アドレスを持つ変数、又は動的に確保された記憶領域を静的記号表と動的記号表とから検索し、得られた情報を表示データ加工部１０３に送る参照先情報に含める。
【００５４】
これにより、ポインタが参照する先の値が更新される場合に、当該ポインタ式が参照する先のメモリ情報と、当該ポインタ式とエイリアスの関係にある（同じ記憶領域を参照する）他の記憶領域の情報とを、ユーザに対して表示する情報に含めることができ、実行トレース中の当該ステップの動作についてユーザの理解を促進することができる。
【００５５】
すなわち、本実施の形態によれば、実行トレース表示装置１００は、ポインタの参照先が参照するメモリの情報、及びそのポインタが参照する記憶領域と同じ記憶領域を参照する別の記憶領域の情報を表示する。そのため、ユーザは、実行トレースにポインタの参照先の記憶領域の値を更新する命令が含まれる場合、その更新により発生する影響を容易に把握することができる。
【００５６】
＜その他の実施の形態＞
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【００５７】
例えば、上述の実施の形態では、本発明を主にハードウェアにより構成されるものとして説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００５８】
１００  実行トレース表示装置
１０１  入力部
１０２  ポインタ情報計算部
１０３  表示データ加工部
１０４  表示部
１０５  出力部
１０６  記憶装置
２００  従来の実行トレース表示装置
２０１  入力部
２０２  表示データ加工部
２０３  表示部
２０４  出力部
２０５  記憶装置
【図１】
2013254320.tif 000003
【図２】
2013254320.tif 000004
【図３】
2013254320.tif 000005
【図４】
2013254320.tif 000006
【図５】
2013254320.tif 000007
【図６】
2013254320.tif 000008
【図７】
2013254320.tif 000009