(57)【要約】【課題】本発明は、コンパイラにより、ソースプログラムの中間コードが最適化された場合であっても、ソースプログラムの変数情報を正しく表示するデバッグ方法及びデバッグシステムを提供するものである。【解決手段】本発明によれば、最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムのデバッグ方法であって、外部から入力されたソースプログラムの変数表示要求を取得し、前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得し、前記実行トレース情報から前記変数を検索し、前記検索した結果を表示することを特徴とするデバッグ方法が提供される。【選択図】図８
2008052447.tif 000002
【特許請求の範囲】
【請求項１】
最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムのデバッグ方法であって、
外部から入力されたソースプログラムの変数表示要求を取得し、
前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得し、
前記実行トレース情報から前記変数を検索し、
前記検索した結果を表示することを特徴とするデバッグ方法。
【請求項２】
請求項１に記載のデバッグ方法において、
前記実行トレース情報から前記変数が検索できなかった場合に最適化項目を変更して中間コードを最適化し、
前記ソースプログラム及び前記最適化された中間コードに基づいてデバッグ情報を生成し、
前記デバッグ情報から前記変数を検索することを特徴とするデバッグ方法。
【請求項３】
請求項２に記載のデバッグ方法において、
前記デバッグ情報から前記変数が検索できなかった場合に前記最適化項目を変更して実行トレース情報を生成し、
前記実行トレース情報から前記変数を検索することを特徴とするデバッグ方法。
【請求項４】
最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムをデバッグするデバッグシステムであって、
外部から入力された変数表示要求を取得する変数表示要求取得手段と、
前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得する実行トレース情報取得手段と、
前記実行トレース情報から前記変数を検索する検索手段と、
前記検索した結果を表示する表示手段を備えたことを特徴とするデバッグシステム。
【請求項５】
最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムをデバッグするためのデバッグプログラムであって、
外部から入力されたソースプログラムの変数表示要求を取得するモジュールと、
前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得するモジュールと、
前記実行トレース情報から前記変数を検索するモジュールと、
前記検索した結果を表示するモジュールを含むことを特徴とするデバッグプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ方法及びデバッグシステムに関し、特に、コンパイラにおいて最適化された場合であっても、変数情報を正しく表示するデバッグ方法及びデバッグシステムに関する。
【背景技術】
【０００２】
プログラム開発を行う場合、完成したプログラムのバグを検出するためにデバッグを行う必要がある。プログラムが複雑になればなるほど、デバッグの効率化がより重要となる。
【０００３】
図１は、Ｃ言語で記述されたソースプログラムの表示が要求された場合に表示されるデバッガソースウインドウを示す概略図である。図２は、変数表示が要求された場合に表示されるデバッガウォッチウインドウを示す概略図である。
【０００４】
図１は、ブレイクポイントが８行目（図１の下線部）に指定された場合のデバッガソースウインドウを示す。デバッガは、操作者からの変数表示要求に応じてブレイクポイントの変数ｆ１及びｆ２を表示する。デバッガは、ｆ１及びｆ２の値を検索できた場合は、図２（ａ）に示されたようにｆ１及びｆ２の値を表示する。しかし、最適化された場合は、デバッガがｆ１，ｆ２の値を検索できない可能性がある。その場合は、デバッガは、図２（ｂ）に示されたようにエラー（例えば、「ｖａｒｉａｂｌｅ  ｏｕｔ  ｏｆ  ｒａｎｇｅ」というメッセージ）を表示する。
【０００５】
これに対し、特許文献１には、デバッグ情報４０４ａが最適化の影響を受けないようにするために、変数や配列に関する情報をコンパイラの最適化部に依存しないパラメタリストとして格納し、参照する技術が開示されている（特許文献１の図１及び段落参照００２２〜００２７参照）。しかし、特許文献１に開示された技術では、変数、配列以外の情報については最適化の影響を避けることはできない。また、変数、配列について、パラメタリストを参照しても表示できない場合については考慮していない。
【特許文献１】特開２００４−２２７１０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、ソースプログラムの中間コードが最適化された場合であっても、ソースプログラムの変数情報を正しく表示するデバッグ方法及びデバッグシステムを提供するものである。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムのデバッグ方法であって、外部から入力されたソースプログラムの変数表示要求を取得し、前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得し、前記実行トレース情報から前記変数を検索し、前記検索した結果を表示することを特徴とするデバッグ方法が提供される。
【０００８】
本発明の第２の態様によれば、最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムをデバッグするデバッグシステムであって、外部から入力された変数表示要求を取得する変数表示要求取得手段と、前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得する実行トレース情報取得手段と、前記実行トレース情報から前記変数を検索する検索手段と、前記検索した結果を表示する表示手段を備えたことを特徴とするデバッグシステムが提供される。
【０００９】
本発明の第３の態様によれば、最適化された中間コードに基づいてアセンブラソース生成されたソースプログラムをデバッグするためのデバッグプログラムであって、外部から入力されたソースプログラムの変数表示要求を取得するモジュールと、前記ソースプログラム及び前記最適化された中間コードに基づいて生成されたデバッグ情報から前記要求の対象となる変数を検索できなかった場合に実行トレース情報を取得するモジュールと、前記実行トレース情報から前記変数を検索するモジュールと、前記検索した結果を表示するモジュールを含むことを特徴とするデバッグプログラムが提供される。
【発明の効果】
【００１０】
本発明によれば、ソースプログラムの中間コードが最適化された場合であっても、ソースプログラムの変数を正しく表示できるので、従来に比べて、デバッグ作業効率を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下に、図面を参照して本発明を実施するための最良の形態について説明する。なお、以下の内容は本発明の一実施例であって、本発明は、以下の内容に限定されるものではない。
【実施例１】
【００１２】
図３は、本発明に係るデバッグシステム３００の構成を示すブロック図である。
【００１３】
デバッグシステム３００は、制御手段３０１、入力手段３０２、表示手段３０３、記憶手段３０４及びホスト装置３１０を含む。また、デバッグシステム３００は、ネットワーク３２０と接続される。
【００１４】
制御手段３０１は、デバッグシステム３００の各手段３０２〜３０４の制御及び記憶手段３０４に記憶されたプログラムの実行を行う。入力手段３０２は、ユーザによって入力された情報を受け付ける。表示手段３０３は、所定の情報を表示する。記憶手段３０４は、ソースプログラム３０４ａ、コンパイルプログラム３０４ｂ、デバッグプログラム３０４ｃ、シミュレーションプログラム３０４ｄ、エミュレーションプログラム３０４ｅを含む様々な種類のデータを記憶する。ホスト装置３１０は、エミュレーションプログラム３０４ｅが実行された場合のエミュレータによるエミュレーションの対象となるハードウェアである。
【００１５】
制御手段３０１は、例えばＣＰＵである。入力手段３０２は、例えばキーボードである。表示手段３０３は、例えば液晶ディスプレイである。記憶手段３０４は、例えばハードディスク又はＣＤ−ＲＯＭ等の着脱可能な記憶媒体である。また、ホスト装置３１０自身も図示しない制御手段（例えば、ＣＰＵ）を有する。
【００１６】
次に、記憶手段３０４に記憶されたプログラムについて説明する。ソースプログラム３０４ａは、ユーザによって作成されたプログラムであって、例えば、図１１に示されたＣ言語で記述されたプログラムである。コンパイルプログラム３０４ｂは、後述のコンパイラ４００（図４参照）を起動するためのプログラムである。デバッグプログラム３０４ｃは、後述のデバッガ６００（図６参照）を起動するためのプログラムである。シミュレーションプログラム３０４ｄは、後述のシミュレータ５００（図５参照）を起動するためのプログラムである。エミュレーションプログラム３０４ｅは、エミュレータを起動するためのプログラムである。
【００１７】
ネットワーク３２０は、デバッグシステム３２０と外部システムの間に接続されるＬＡＮ等の通信手段である。
【００１８】
図４は、本発明に係るコンパイラ４００の構成及びコンパイル処理を示すブロック図である。コンパイラ４００は、制御手段３０１によってコンパイルプログラム３０４ａが実行された場合に起動するソフトウェアである。なお、コンパイラ４００に含まれる各モジュールは、コンパイル処理のためのソフトウェアモジュールである。
【００１９】
コンパイラ４００は、解析モジュール４０１、中間コード生成モジュール４０２、最適化・資源割付モジュール４０３、デバッグ情報生成モジュール４０４、アセンブラソース生成モジュール４０５、リロケータブルオブジェクト生成モジュール４０６及びアブソリュートオブジェクト生成モジュール４０７を含む。
【００２０】
解析モジュール４０１は、例えば、ソースプログラム３０４ａを記憶手段３０４から読み込み、解析し、解析ファイル４０１ａを生成する。解析モジュール４０１は、所定のアルゴリズムに基づく字句解析、構文解析、意味解析等によってソースプログラム３０４ａを解析する。
【００２１】
中間コード生成モジュール４０２は、解析ファイル４０１ａに基づいて中間コード４０２ａを生成する。中間コード４０２ａは、例えば、図１２に示された所定のフォーマットに基づくテキストデータである。
【００２２】
最適化・資源割付モジュール４０３は、入力手段３０２から入力された最適化項目に基づいて中間コード４０２ａを最適化して中間コード４０３ａを生成すると共に、ターゲットＣＰＵ（記憶手段３０４の内部で仮想的に構築されるＣＰＵ又は外部装置３１０が有するＣＰＵ）に割り付けられる資源を決定する。中間コード４０３ａは、最適化・資源割付モジュール４０３によって最適化された中間コードである。ここで、資源とは、例えば、ターゲットＣＰＵのレジスタやメモリである。最適化項目は、コードサイズの削減及び実行速度向上のためにユーザによって入力された項目であって、例えば、不要コード削除、定数の畳み込み、誘導変数最適化である。
【００２３】
デバッグ情報生成モジュール４０４は、ソースプログラム３０４ａ及び中間コード４０３ａに基づいてデバッグ情報４０４ａ（図１３参照）を生成する。デバッグ情報４０４ａには、例えば、配置情報、ソースプログラムに含まれる関数名や関数型に関する情報、変数の割付対象であるターゲットＣＰＵの資源やプログラムにおいて変数が有効となる区間を示す生存情報が含まれる。
【００２４】
アセンブラソース生成モジュール４０５は、中間コード４０３ａ及びデバッグ情報４０４ａに基づいてデバッグ情報４０４ａとアセンブラソースコードを合成し、アセンブラソースファイル４０５ａを生成する。なお、アセンブラソース生成モジュール４０５は、アセンブラソースファイル４０５ａに対する最適化を行うことができる。この場合、アセンブラソースファイル４０５ａにはデバッグ情報４０４ａが含まれているので、デバッグ情報４０４ａも修正される。
【００２５】
リロケータブルオブジェクト生成モジュール４０６は、アセンブラソースファイル４０５ａに基づいて複数のリロケータブルオブジェクトファイル４０６ａを生成する。
【００２６】
アブソリュートオブジェクト生成モジュール４０７は、複数のリロケータブルオブジェクトファイル４０６ａ同士をリンクし、シンボル及び変数の配置アドレスの最終決定を行ってアブソリュートオブジェクトファイル４０７ａを生成して記憶手段３０４に記憶する。前述のとおり、アセンブラソースファイル４０５ａにはデバッグ情報４０４ａが含まれるので、アブソリュートオブジェクトファイル４０７ａにもデバッグ情報４０４ａが含まれる。
【００２７】
図５は、本発明に係るシミュレータ５００の構成及びシミュレーション処理を示すブロック図である。
【００２８】
シミュレータ５００は、ファイル読込モジュール５０１、解析モジュール５０２及び実行トレース情報生成モジュール５０３を含む。なお、シミュレータ５００に含まれる各モジュールは、シミュレーション処理のためのソフトウェアモジュールである。
【００２９】
ファイル読込モジュール５０１は、記憶手段３０４からアブソリュートオブジェクトファイル４０７ａを読み込む。解析モジュール５０２は、入力手段３０２から入力されたユーザコマンド（実行トレース情報を生成する旨の命令）を解析する。実行トレース情報生成モジュール５０３は、解析モジュール５０２による解析結果に基づいて、実行トレース情報５０３ａ（図１４参照）を生成して記憶手段３０４に記憶する。実行トレース情報５０３ａには、ブレイクポイントが指定されたアドレス、並びにターゲットＣＰＵのレジスタへの代入を示すアセンブリコード及び実行アドレスを特定するためのトレース情報が含まれる。
【００３０】
なお、エミュレーションプログラム３０４ｅが実行された場合に起動するエミュレータも、ホスト装置３１０上で起動することを除いてシミュレータ５００と同様である。
【００３１】
図６は、本発明に係るデバッガ６００の構成及びデバッグ処理を示すブロック図である。デバッガ６００は、制御手段３０１によってデバッグプログラム３０４ｃが実行された場合に起動するソフトウェアである。なお、デバッガ６００に含まれる各モジュールは、デバッグ処理のためのソフトウェアモジュールである。
【００３２】
デバッガ６００は、ファイル読込モジュール６０１、デバッグ情報管理モジュール６０２、検索モジュール６０３及び変数表示モジュール６０４を含む。
【００３３】
ファイル読込モジュール６０１は、記憶手段３０４に記憶されたアブソリュートオブジェクトファイル４０７ａを読み込む。このアブソリュートオブジェクトファイル４０７ａには、前述のとおり、デバッグ情報４０４ａが含まれる。
【００３４】
デバッグ情報管理モジュール６０２は、記憶手段３０４から実行トレース情報５０３ａを取得する機能、入力手段３０２から変数表示要求を取得する機能、後述する検索モジュール６０３に検索を依頼する機能及び後述する変数表示モジュール６０４に検索結果を送信する機能を持つ。
【００３５】
検索モジュール６０３は、デバッグ情報管理モジュール６０２の依頼（取得された変数表示要求の内容）に応じてデバッグ情報４０４ａ又は実行トレース情報５０３ａから変数を検索し、デバッグ情報管理モジュール６０２に検索結果を返す。検索モジュール６０３は、変数表示要求の中で指定された変数が存在する場合は当該変数の値を検索結果とし、存在しない場合は検索できなかった旨を検索結果とする。返された検索結果は、変数表示モジュール６０４に送信される。
【００３６】
変数表示モジュール６０４は、デバッグ情報管理モジュール６０２から検索結果を受け取り、表示手段３０３に送信する。
【００３７】
図７は、図６に示されたデバッグ情報管理モジュール６０２の構成を示すブロック図である。なお、デバッグ情報管理モジュール７０２に含まれる各モジュールは、デバッグ情報管理処理のためのソフトウェアモジュールである。
【００３８】
デバッグ情報管理モジュール６０２は、ファイル受取モジュール７０１、デバッグ情報取得モジュール７０２、実行トレース情報取得モジュール７０３、変数表示要求取得モジュール７０４、検索依頼モジュール７０５、検索結果受取モジュール７０６及び検索結果送信モジュール７０７を含む。
【００３９】
ファイル受取モジュール７０１は、ファイル読込モジュール６０１からアブソリュートオブジェクトファイル４０７ａを受け取る。デバッグ情報取得モジュール７０２は、ファイル読込モジュール７０１によって受け取られたアブソリュートオブジェクトファイル４０７ａからデバッグ情報４０４ａを取得する。実行トレース情報取得モジュール７０３は、検索モジュール６０３において検索が失敗した場合に記憶手段３０４から実行トレース情報５０３ａを取得する。変数表示要求取得モジュール７０４は、入力手段３０２から入力された表示項目（例えば、ブレイクポイント、関数名、関数値）を含む変数表示要求を取得する。検索依頼モジュール７０５は、デバッグ情報取得モジュール７０２からデバッグ情報４０４ａを、実行トレース情報取得モジュール７０３から実行トレース情報５０３ａを、そして変数表示要求取得モジュール７０４から変数表示要求を取得するとともに、検索モジュール６０３に検索を依頼する。検索結果受取モジュール７０６は、検索モジュール６０３から検索結果を受け取る。検索結果送信モジュール７０７は、変数表示モジュール６０４に検索結果を送信する。
【００４０】
図８は、入力手段３０２から変数表示要求を取得した場合のデバッグ情報管理モジュール６０２の処理の流れを示すフローチャートである。なお、以下に示す各ステップは、図７に示されたデバッグ情報管理モジュール６０２に含まれる各モジュール７０１〜７０７によって行われる。
【００４１】
はじめに、取得された変数表示要求を解析し、ユーザが要求した表示項目を抽出する（Ｓ８０１）。次に、記憶手段３０４からアブソリュートオブジェクトファイル４０７ａを読み込む（Ｓ８０２）。次に、Ｓ８０２で読み込まれたアブソリュートオブジェクトファイル４０７ａからデバッグ情報４０４ａを取得する（Ｓ８０３）。次に、Ｓ８０１で抽出された表示項目に基づいて、デバッグ情報４０４ａからの検索を検索モジュール６０３に依頼する（Ｓ８０４）。
【００４２】
検索に成功した場合は（Ｓ８０５−Ｙｅｓ）、検索モジュール６０３から検索結果を受け取り、変数表示モジュール６０４に検索結果を送信する（Ｓ８０６）。
【００４３】
一方、検索に失敗した場合は（Ｓ８０５−Ｎｏ）、記憶手段３０４から実行トレース情報５０３ａを取得する（Ｓ８０７）。次に、取得された実行トレース情報５０３ａからの検索を検索モジュール６０３に依頼する（Ｓ８０８）。次に、検索モジュール６０３から検索結果を受け取り、変数表示モジュール６０４に送信する（Ｓ８０６）。
【００４４】
図８について、図１３及び図１４を参照して具体的に説明する。Ｓ８０１において、「ブレイクポイントが００８９０１７６番地に指定され、ソースプログラム３０４ａのｆｕｎｃ６における変数ｆ２の値を表示する」という項目が抽出されたとする。Ｓ８０２は、前述のとおりである。
【００４５】
次に、Ｓ８０３において、アブソリュートオブジェクトファイル４０７ａから図１３に示されたデバッグ情報４０４ａを取得する。
【００４６】
次に、Ｓ８０４において、図１３に示されたデバッグ情報４０４ａからの検索を検索モジュール６０３に依頼する。検索モジュール６０３は、図１３に示されたデバッグ情報４０４ａから変数ｆ２の値の検索を試行する。しかし、ブレイクポイント（００８９０１７６番地）においてｆ２の生存情報が欠落しているので検索することはできない（Ｓ８０５−Ｎｏ）。従って、Ｓ８０７において、記憶手段３０４から図１４に示された実行トレース情報５０３ａを取得する。
【００４７】
次に、Ｓ８０８において、図１４に示された実行トレース情報５０３ａからの検索を検索モジュール６０３に依頼する。ここで、検索モジュール６０３は、図１４に示された実行トレース情報５０３ａを、ブレイクポイント（００８９０１７６番地）から時系列に遡って（００８９０１４４番地方向に）検索する。図１３では、００８９０１５８番地にｆ２の生存情報（＄７）が存在しているので、検索モジュール６０３は、実行トレース情報５０３ａの０８９０１５８番地を参照することによってｆ２の検索に成功する。００８９０１５８番地のトレース情報には「レジスタ７に変数値２が与えられている」ことが示されているので（＄７＝０ｘ０００００００２）、変数表示モジュール６０４に検索結果として「ｆ２＝０ｘ０００００００２」が送信される（Ｓ８０６）。以上の処理が行われた結果、表示手段３０３は、図２（ａ）に示された画面を表示する。
【００４８】
実施例１によれば、シミュレータ５００によって作成された実行トレース情報５０３ａから変数を検索するので、コンパイラ４００において最適化が行われたことが原因でデバッグ情報４０４ａからの変数の検索に失敗した場合であっても、変数を正しく表示できる。
【実施例２】
【００４９】
次に、実施例２について説明する。実施例１では、デバッグ情報４０４ａからの変数の検索に失敗した場合に実行トレース情報５０３ａから変数を検索する実施例を示したが、実施例２では、実行トレース情報５０３ａからの変数の検索に失敗した場合の実施例を示す。なお、実施例２は、検索モジュール６０３の構成及び検索処理が実施例１と異なる。その他は、実施例１と同様であるので説明を省略する。
【００５０】
図９は、実施例２に係る検索モジュール６０３の構成を示すブロック図である。なお、検索モジュール６０３に含まれる各モジュールは、検索処理のためのソフトウェアモジュールである。
【００５１】
検索モジュール６０３は、検索モジュール９０１、エラー送信モジュール９０２及び最適化項目修正依頼モジュール９０３を含む。
【００５２】
検索モジュール９０１は、デバッグ情報管理モジュール６０２からの依頼に応じてデバッグ情報４０４ａ又は実行トレース情報５０３ａから変数を検索する。エラー送信モジュール９０２は、デバッグ情報管理モジュール６０２に実行トレース情報５０３ａからの検索に失敗したこと（検索結果＝エラー）を送信する。最適化項目修正依頼モジュール９０２は、最適化項目の修正を制御手段３０１に依頼する。制御手段３０１は、最適化項目の修正をコンパイラ４００又はシミュレータ５００に指示する。この指示に基づいて、コンパイラ４００は、アブソリュートオブジェクトファイル４０７ａを再生成し、シミュレータ５００は、実行トレース情報５０３ａを再生成する。
【００５３】
図１０は、実施例２に係るＳ８０８が実行された後の検索モジュール６０３の処理の流れを示すフローチャートである。なお、以下に示す各ステップは、図９に示された検索モジュール６０３の各モジュール９０１〜９０３によって行われる。
【００５４】
はじめに、検索依頼に応じて実行トレース情報５０３ａから変数を検索する（Ｓ１００１）。実行トレース情報５０３ａからの検索に成功した場合は、Ｓ８０６へ移行する（Ｓ１００２−Ｙｅｓ）。この場合は、実施例１と同様である。
【００５５】
実行トレース情報５０３ａからの検索に失敗した場合（Ｓ１００２−Ｎｏ）であって、全ての最適化項目について試行した場合は（Ｓ１００３−Ｙｅｓ）、「検索結果＝エラー」として処理し（Ｓ１００４）、Ｓ８０６へ移行する。すなわち、この場合は、表示手段３０３は、図２（ｂ）に示された画面を表示する。
【００５６】
一方、実行トレース情報５０３ａからの検索に失敗した場合（Ｓ１００２−Ｎｏ）であって、全ての最適化項目について試行していない場合は（Ｓ１００３−Ｎｏ）、最適化項目の修正を制御手段３０１に依頼する（Ｓ１００５）。例えば、先に失敗した実行トレース情報５０３ａが不要コード削除という最適化項目でコンパイルされたものであった場合は、定数の畳み込み又は誘導変数最適化という最適化項目でコンパイルされたアブソリュートオブジェクトファイル又は実行トレース情報が再生成される。なお、アブソリュートオブジェクトファイルが再生成される場合は、デバッグ情報も再生成される。
【００５７】
次に、Ｓ８０２に戻り、再生成されたデバッグ情報からの変数の検索を検索モジュール６０３に依頼する（Ｓ８０４）。この検索に成功した場合は（Ｓ８０５−Ｙｅｓ）、検索結果を変数表示モジュール６０４に送信し（Ｓ８０６）、失敗した場合は（Ｓ８０５−Ｎｏ）、再生成された実行トレース情報を取得する（Ｓ８０７）。次に、この実行トレース情報からの変数の検索を検索モジュール６０３に依頼する（Ｓ８０８）。その後、再生成された実行トレース情報からの検索に成功するか（Ｓ１００２−Ｙｅｓ）又は全ての最適化項目について試行するまで（Ｓ１００３−Ｙｅｓ）、同様の処理が繰り返される。
【００５８】
実施例２では、コンパイラ４００及びシミュレータ５００が最適化項目を修正し、デバッガ６００が再生成された情報からの変数の検索を試行するので、ユーザの手作業による設定変更を促す必要が無い。従って、実施例1に比べて、よりデバッグ効率を向上させることができる。
【実施例３】
【００５９】
実施例１及び２におけるソフトウェア及びモジュールはプログラムによって実現される。また、このプログラムは、ハードディスク等のコンピュータ読取可能な記憶媒体に格納される。さらに、このプログラムは、ネットワーク３２０を介して送受信される。
【図面の簡単な説明】
【００６０】
【図１】Ｃ言語で記述されたソースプログラムを表示処理した場合に表示手段３０３が表示するデバッガソースウインドウを示す概略図である。
【図２】変数表示要求が行われた場合に表示手段３０３が表示するデバッガウォッチウインドウを示す概略図である。
【図３】本発明に係るデバッグシステム３００の構成を示すブロック図である。
【図４】本発明に係るコンパイラ４００の構成及びコンパイル処理を示すブロック図である。
【図５】本発明に係るシミュレータ５００の構成及びシミュレーション処理を示すブロック図である。
【図６】本発明に係るデバッガ６００の構成及びデバッグ処理を示すブロック図である。
【図７】図６に示されたデバッグ情報管理モジュール６０２の構成を示すブロック図である。
【図８】本発明に係るデバッグ情報管理モジュール６０２の処理の流れを示すフローチャートである。
【図９】実施例２に係る検索モジュール６０３の構成を示すブロック図である。
【図１０】実施例２に係るＳ８０８が実行された後の検索モジュール６０３の処理の流れを示すフローチャートである。
【図１１】本発明に係るソースプログラム３０４ａの一例である。
【図１２】図１１に示されたソースプログラム３０４ａにおける関数ｆｕｎｃ６の中間コード４０２ａの一例である。
【図１３】図４に示されたデバッグ情報４０４ａのうち、特に、生存情報をソースプログラムと対応付けて図示した例である。
【図１４】図５に示されたシミュレータ５００によって生成された実行トレース情報５０４ａの一例である。
【符号の説明】
【００６１】
３００  デバッグシステム
３０１  制御手段
３０２  入力手段
３０３  表示手段
３０４  記憶手段
３１０  ホスト装置
３２０  ネットワーク
４００  コンパイラ
４０１  解析モジュール
４０２  中間コード生成モジュール
４０３  最適化・資源割付モジュール
４０４  デバッグ情報生成モジュール
４０５  アセンブラソース生成モジュール
４０６  リロケータブルオブジェクト生成モジュール
４０７  アブソリュートオブジェクト生成モジュール
５００  シミュレータ
５０１  ファイル読込モジュール
５０２  解析モジュール
５０３  実行トレース情報生成モジュール
６００  デバッガ
６０１  ファイル読込モジュール
６０２  デバッグ情報管理モジュール
６０３  検索モジュール
６０４  変数表示モジュール
７０１  ファイル受取モジュール
７０２  デバッグ情報取得モジュール
７０３  実行トレース情報取得モジュール
７０４  変数表示要求取得モジュール
７０５  検索依頼モジュール
７０６  検索結果受取モジュール
７０７  検索結果送信モジュール
９０１  エラー送信モジュール
９０２  最適化項目修正依頼モジュール
【図１】
2008052447.tif 000003
【図２】
2008052447.tif 000004
【図３】
2008052447.tif 000005
【図４】
2008052447.tif 000006
【図５】
2008052447.tif 000007
【図６】
2008052447.tif 000008
【図７】
2008052447.tif 000009
【図８】
2008052447.tif 000010
【図９】
2008052447.tif 000011
【図１０】
2008052447.tif 000012
【図１１】
2008052447.tif 000013
【図１２】
2008052447.tif 000014
【図１３】
2008052447.tif 000015
【図１４】
2008052447.tif 000016