(57)【要約】【課題】コンパイラシステムの出力結果ファイルにおけるデバッグ情報内の重複した情報を統合することにより、出力結果ファイルのファイルサイズを削減する。【解決手段】デバッグ情報統合装置１は、デバッグ情報１１５内の重複した情報を解析し、最初に検出された重複した情報の位置情報と、それ以降に検出された重複した情報の重複位置情報とを抽出する重複解析部１１と、重複位置情報に存在する重複した情報を、最初に検出された重複した情報の位置情報を参照するように所定の参照コードに置換し、置換することにより生じた空白領域の量を算出する重複置換部１２とを有する。更に、デバッグ情報統合装置１は、置換することにより生じた空白領域を削除し、重複置換部１２が算出した空白領域の量に応じて所定の参照コードの参照先アドレスを変更するギャップ削除部１３とを有する。【選択図】図４
2010020552.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ情報内の重複した情報を統合するデバッグ情報統合装置であって、
前記デバッグ情報内の重複した情報を解析し、前記デバッグ情報内で重複した情報のいずれか１つの位置を示す位置情報と、前記重複した情報のいずれか１つ以外の重複した情報の位置を示す１以上の重複位置情報とを抽出する重複解析部と、
前記重複解析部が抽出した前記１以上の重複位置情報に存在する前記重複した情報を前記いずれか１つの位置を示す位置情報を参照するように所定の参照コードに置換し、前記置換により生じた空白領域の量を算出する重複置換部と、
前記置換により生じた前記空白領域を削除し、前記重複置換部が算出した前記空白領域の量に応じて前記所定の参照コードの参照先アドレスを変更する空白領域削除部と、
を有することを特徴とするデバッグ情報統合装置。
【請求項２】
前記重複解析部は、前記デバッグ情報内で最初に検出された前記重複した情報の位置を前記位置情報として抽出し、前記最初に検出された前記重複した情報以降に検出された前記重複した情報の位置を前記１以上の重複位置情報として抽出し、
前記重複置換部は、前記いずれか１つ以外の重複した情報のそれぞれについて、前記置換により生じた前記空白領域のサイズを前記デバッグ情報内の先頭から累計することにより前記空白領域の累計量を算出し、
前記空白領域削除部は、前記いずれか１つ以外の重複した情報のそれぞれについて、前記空白領域の累計量に応じて前記所定の参照コードの参照先アドレスを変更することを特徴とする請求項１に記載のデバッグ情報統合装置。
【請求項３】
前記重複置換部は、前記重複した情報のサイズから前記所定の参照コードのサイズを減算することにより前記空白領域のサイズを算出することを特徴とする請求項２に記載のデバッグ情報統合装置。
【請求項４】
前記重複した情報は、同一のシンボル又は同一の型であることを特徴とする請求項１から請求項３の何れか１項に記載のデバッグ情報統合装置。
【請求項５】
デバッグ情報内の重複した情報を統合するデバッグ情報統合方法であって、
前記デバッグ情報内の重複した情報を解析し、前記デバッグ情報内で重複した情報のいずれか１つの位置を示す位置情報と、前記重複した情報のいずれか１つ以外の重複した情報の位置を示す１以上の重複位置情報とを抽出し、
抽出した前記１以上の重複位置情報に存在する前記重複した情報を前記いずれか１つの位置を示す位置情報を参照するように所定の参照コードに置換し、前記置換により生じた空白領域の量を算出し、
前記置換により生じた前記空白領域を削除し、算出した前記空白領域の量に応じて前記所定の参照コードの参照先アドレスを変更することを特徴とするデバッグ情報統合方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ情報統合装置及びデバッグ情報統合方法に関し、特に、デバッグ情報内の重複した情報を統合するデバッグ情報統合装置及びデバッグ情報統合方法に関する。
【背景技術】
【０００２】
従来より、コンパイラシステムは、コンパイラ、アセンブラ、リンカというツールから構成されている。コンパイラは、ユーザの記述したＣ言語などの記述された入力ファイルを１つずつ受け取り、入力ファイルに対応したアセンブラファイルを出力する（以下、コンパイルという）。アセンブラは、アセンブラファイルを１つずつ受け取り、入力ファイルに対応したリロケータブルオブジェクトファイルを出力する（以下、アセンブルという）。リンカは、すべてのリロケータブルオブジェクトファイルを受け取り、デバッグまたはＣＰＵ上で実行可能なアブソリュートオブジェクトファイルを１つ出力する（以下、リンクという）。
【０００３】
Ｃ言語などの入力ファイルを作成するユーザは、ファイルの内容を理解しやすくするために、特定の値などを保持するために、メモリ上の領域に対して擬似的に名前を付け、この名前を使用して値の書き換えを行う。これをシンボルという。また、シンボルには、その値の大きさを表すための情報が付加されており、これを型という。
【０００４】
ユーザが作成したプログラムをアブソリュートオブジェクトファイルに変換し、ＣＰＵ上で実行するだけであれば、Ｃ言語などの入力ファイルに存在するユーザが記述したシンボルの名前などは不要である。なぜならば、シンボルはユーザが管理しやすくするために、メモリ上の領域に擬似的に名前を付けたものであり、実際はメモリ上の位置情報、例えば、アドレスなどとして扱われるからである。しかし、アブソリュートオブジェクトファイルを、デバッガなどによるデバッグ目的で使用する場合、シンボルの名前がどのような文字列で、その型がどうなっているかなどの情報が、デバッガのために必要となる。コンパイラシステムは、これらの情報をデバッグ情報として、アセンブラファイル、リロケータブルオブジェクトファイル及びアブソリュートオブジェクトファイルに出力している。
【０００５】
複数の入力ファイルをコンパイル及びアセンブルする場合には、１ファイルずつ処理を行うため、それぞれのファイルに重複する情報が埋め込まれる。そして、リンクを実行すると、すべての情報がファイル単位で結合されるため、重複した情報がアブソリュートオブジェクトファイルに存在することになる。しかし、デバッグ情報の規格では入力ファイルに跨るシンボル情報及び型情報を統合するようになっていない。
【０００６】
このように、デバッグ情報の収集量が多くなるため、例えば、同一内容のデバッグ情報の収集を回避してデバッグ情報の収集量の最適化を図るデバッグ情報の収集量最適化方式が提案されている（例えば、特許文献１参照）。
【０００７】
近年、ソフトウエア開発規模の増大に伴い、コンパイラシステムが処理したアブソリュートオブジェクトファイルのサイズが増大している。そのため、アブソリュートオブジェクトファイルを読み込むツール、例えば、デバッガのローディング時間が増大するという問題がある。また、アブソリュートオブジェクトファイルを保存する記憶領域が圧迫されるという問題もある。
【特許文献１】特開平３−１２９５３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、コンパイラシステムの出力結果ファイルにおけるデバッグ情報内の重複した情報を統合することにより、出力結果ファイルのファイルサイズを削減することができるデバッグ情報統合装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、デバッグ情報内の重複した情報を統合するデバッグ情報統合装置であって、前記デバッグ情報内の重複した情報を解析し、前記デバッグ情報内で重複した情報のいずれか１つの位置を示す位置情報と、前記重複した情報のいずれか１つ以外の重複した情報の位置を示す１以上の重複位置情報とを抽出する重複解析部と、前記重複解析部が抽出した前記１以上の重複位置情報に存在する前記重複した情報を前記いずれか１つの位置を示す位置情報を参照するように所定の参照コードに置換し、前記置換により生じた空白領域の量を算出する重複置換部と、前記置換により生じた前記空白領域を削除し、前記重複置換部が算出した前記空白領域の量に応じて前記所定の参照コードの参照先アドレスを変更する空白領域削除部と、を有することを特徴とするデバッグ情報統合装置を提供することができる。
【発明の効果】
【００１０】
本発明のデバッグ情報統合装置によれば、コンパイラシステムの出力結果ファイルにおけるデバッグ情報内の重複した情報を統合することにより、出力結果ファイルのファイルサイズを削減することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
まず、図１に基づき、本実施の形態に係る情報処理システムの構成を説明する。図１は、本発明の一実施の形態に係る情報処理システムの構成を示すブロック部である。
【００１２】
図１に示すように、情報処理システム１００は、本体装置１０１と、各種データを記憶する記憶装置１０２と、各種データを表示する表示装置１０３とを有して構成されている。本体装置１０１は、パーソナルコンピュータ等のコンピュータ装置本体であり、ＣＰＵ１０１ａ、図示しない主メモリなどを搭載している。また、本体装置１０１は、入力装置として、キーボード１０４及びマウス１０５が接続されている。本体装置１０１は、これらの入力装置からの指示に基づいて、各種プログラムを実行する。
【００１３】
記憶装置１０２には、コンパイル、アセンブル及びリンク機能のプログラムを有するコンパイラシステム１０６と、デバッグ情報内の重複した情報を統合する機能のプログラムを有するデバッグ情報統合処理プログラム１０７とが記憶されている。
【００１４】
ユーザは、プログラミング言語により記述された１以上の入力ファイルを入力とし、コンパイラシステム１０６を本体装置１０１上において実行することにより、アブソリュートオブジェクトファイルを得ることができる。
【００１５】
また、ユーザは、そのアブソリュートオブジェクトファイルを入力とし、デバッグ情報統合処理プログラム１０７を本体装置１０１上において実行することにより、後述するデバッグ情報内の重複した情報を統合する処理を行い、所定の出力ファイルを得ることができる。このように、デバッグ情報統合処理プログラム１０７を実行可能な本体装置１０１が、本実施の形態のデバッグ情報統合装置を構成する。なお、入力ファイル、アブソリュートオブジェクトファイル及び出力ファイルのそれぞれは、記憶装置１０２に記憶されるが、他の記憶媒体に記憶されてもよい。
【００１６】
ここで、コンパイラシステム１０６の構成について説明する。図２は、コンパイラシステムの構成を示すブロック図である。図２に示すように、コンパイラシステム１０６は、コンパイラ１０８と、アセンブラ１０９と、リンカ１１０とを有して構成されている。
【００１７】
コンパイラ１０８は、ユーザがＣ言語などの高級言語により作成した原始プログラムである複数の、ここでは３つの入力ファイル１１１ａ、１１１ｂ、１１１ｃをそれぞれ受け取り、コンパイルを実行することにより、対応したアセンブラファイル１１２ａ、１１２ｂ、１１２ｃを出力する。アセンブラファイル１１２ａには、入力ファイル１１１ａのデバッグ情報１１５ａが含まれ、アセンブラファイル１１２ｂには、入力ファイル１１１ｂのデバッグ情報１１５ｂが含まれ、アセンブラファイル１１２ｃには、入力ファイル１１１ｃのデバッグ情報１１５ｃが含まれる。
【００１８】
アセンブラ１０９は、アセンブラファイル１１２ａ、１１２ｂ、１１２ｃをそれぞれ受け取り、アセンブルを実行することにより、対応したリロケータブルオブジェクトファイル１１３ａ、１１３ｂ、１１３ｃを出力する。リロケータブルオブジェクトファイル１１３ａ、１１３ｂ及び１１３ｃのそれぞれには、デバッグ情報１１５ａ、１１５ｂ及び１１５ｃが含まれる。
【００１９】
リンカ１１０は、リロケータブルオブジェクトファイル１１３ａ、１１３ｂ、１１３ｃを受け取り、リンクを実行することにより、目的プログラムであるアブソリュートオブジェクトファイル１１４を１つ出力する。
【００２０】
入力ファイル１１１ａ、１１１ｂ、１１１ｃをコンパイル、アセンブルする場合には、１ファイルずつ処理を行うため、シンボル情報及び型情報などのデバッグ情報は、複数のファイルに重複する情報が埋め込まれる場合がある。アブソリュートオブジェクトファイル１１４は、すべての情報がファイル単位で結合されているため、重複した情報がファイルに存在している。アブソリュートオブジェクトファイル１１４には、コンパイル、アセンブル、リンクの過程においてシンボル情報及び型情報がそれぞれ生成されて結合されている。即ち、複数のデバッグ情報１１５ａ、１１５ｂ及び１１５ｃが結合され、結合されたデバッグ情報１１５が、アブソリュートオブジェクトファイル１１４の所定の領域に格納される。
【００２１】
次に、アブソリュートオブジェクトファイル１１４に格納されているデバッグ情報１１５について説明する。図３は、デバッグ情報の例を説明するための説明図である。このデバッグ情報フォーマットは、ＤＷＡＲＦ（Debug With Arbitrary Record Format）形式であるが、他の形式のデバッグ情報フォーマット、例えば、ＥＬＦ（Executable and Linkable Format）形式、ＣＯＦＦ（Common Object File Format）形式であってもよい。
【００２２】
図３は、アブソリュートオブジェクトファイル１１４内のデバッグ情報１１５の一例を示している。図３に示すように、デバッグ情報１１５には、入力ファイル１１１ａのデバッグ情報１１５ａ、入力ファイル１１１ｂのデバッグ情報１１５ｂ、入力ファイル１１１ｃのデバッグ情報１１５ｃが格納されている。
【００２３】
デバッグ情報１１５ａは、シンボルに対応するデバッグ情報と型に対応するデバッグ情報を含んでいる。以下、シンボルに対応するデバッグ情報をシンボル情報１１６ａといい、型に対応するデバッグ情報を型情報１１７ａという。シンボル情報１１６ａは、シンボル名及びその型への参照の情報を含んでいる。また、型情報１１７ａは、型の名前、型のサイズ及び型の符号の情報を含んでいる。同様に、デバッグ情報１１５ｂは、シンボル情報１１６ｂ及び型情報１１７ｂを含んでおり、デバッグ情報１１５ｃは、シンボル情報１１６ｃ及び型情報１１７ｃを含んでいる。
【００２４】
ここで、シンボル情報１１６ａ、１１６ｂ及び１１６ｃは、同一のシンボル、ここではシンボル名がsample_dataであり、シンボル情報が重複している。また、型情報１１７ａ、１１７ｂ及び１１７ｃは、同一の型、ここでは型の名前がintであり、型情報が重複している。本実施の形態のデバッグ情報統合装置は、複数のデバッグ情報に跨っている重複部分の統合、特に、重複した同一のシンボル情報の統合及び重複した同一の型情報の統合を実行し、ファイルサイズを削減することを特徴としている。
【００２５】
図４は、本実施の形態に係るデバッグ情報統合装置の構成を示すブロック図である。図４に示すように、デバッグ情報統合装置１は、重複解析部１１と、重複置換部１２と、ギャップ削除部１３とを有して構成されている。
【００２６】
デバッグ情報統合装置１の重複解析部１１には、リンカ１１０により得られたアブソリュートオブジェクトファイル１１４（以下、単にファイル１１４という）が供給される。
【００２７】
重複解析部１１は、ファイル１１４のデバッグ情報の重複、特に、同一のシンボル情報及び同一の型情報の重複を解析する。重複解析部１１は、解析して得られた重複チェック情報１４とファイル１１４とを重複置換部１２に出力する。
【００２８】
重複置換部１２は、入力された重複チェック情報１４に基づいて、ファイル１１４中の重複した情報を、最初に検出された重複した情報を参照するように所定の参照コードに置換し、重複した情報が所定の参照コードに置換されたファイル１１４をギャップ削除部１３に出力する。また、重複置換部１２は、重複した情報を参照コードに置換することにより生じた不要な空白領域のサイズ、即ち、空白領域の量をギャップ情報１５としてギャップ削除部１３に出力する。以下、重複した情報を参照コードに置換することにより生じた不要な空白領域をギャップという。
【００２９】
ギャップ削除部１３は、ファイル１１４内のギャップを削除して、ファイルサイズを削減する。また、ギャップ削除部１３は、ギャップ情報１５に基づいて、参照コードの参照先アドレス、即ち、参照コードが指し示す位置情報の整合を取り、出力ファイル１１８を得る。このように、ギャップ削除部１３は、ファイル１１４内のギャップ、即ち、不要な空白領域を削除する空白領域削除部を構成する。
【００３０】
ここで、重複解析部１１により得られる重複チェック情報１４について説明する。図５は、重複チェック情報の例を説明するための説明図である。
【００３１】
重複チェック情報１４には、あるシンボルに対応するシンボル情報と、そのシンボル情報に対応するシンボル情報の位置情報と、同一のシンボル情報の重複位置情報とが格納される。また、重複チェック情報１４には、ある型に対応する型情報と、その型情報に対応する型情報の位置情報と、同一の型情報の重複位置情報とが格納される。
【００３２】
具体的には、最初に検出されたシンボル情報、例えば、図３のシンボル情報１１６ａがシンボル情報Ａとして記録され、シンボル情報１１６ａのデバッグ情報内での位置がシンボル情報Ａの位置情報として記録される。次に、シンボル情報１１６ａと重複するシンボル情報１１６ｂが検出されると、シンボル情報１１６ｂのデバッグ情報内での位置が重複位置情報Ａ１として記録される。同様に、シンボル情報１１６ｃのデバッグ情報内での位置が重複位置情報Ａ２として記録される。さらに重複するシンボル情報が検出された分だけ重複位置情報として関連付けられる。また、新たにシンボル情報が検出された場合、シンボル情報Ｂに記録され、同様の処理が行われる。
【００３３】
次に、最初に検出された型情報１１７ａが型情報Ｐとして記録され、型情報１１７ａのデバッグ情報内での位置が型情報Ｐの位置情報として記録される。次に、型情報１１７ｂのデバッグ情報内での位置が重複位置情報Ｐ１として記録され、型情報１１７ｃのデバッグ情報内での位置が重複位置情報Ｐ２として記録される。また、新たに型情報が検出された場合、型情報Ｑとして記録され、同様の処理が行われる。このようにして重複解析部１１により得られた重複チェック情報１４は、重複置換部１２に出力される。
【００３４】
重複解析部１１は、上述した処理により得られた重複チェック情報１４をテーブルあるいはリスト情報として保持する機能を有する。なお、重複解析部１１は、重複チェック情報１４を記憶装置１０２に記憶してもよい。
【００３５】
次に、重複置換部１２により得られるギャップ情報１５について説明する。図６は、ギャップ情報の例を説明するための説明図である。
【００３６】
ギャップ情報１５には、重複位置情報と、重複した情報を参照コードに置換することにより生じる空白領域の量であるギャップサイズとが対応付けられ格納される。例えば、重複チェック情報１４に基づいて、まず、シンボル情報Ａの重複位置情報Ａ１とギャップサイズＡとが対応付けられ、重複位置情報Ａ２とギャップサイズＡとが対応付けられる。次に、シンボル情報Ｂの重複位置情報Ｂ１とギャップサイズＢとが対応付けられ、重複位置情報Ｂ２とギャップサイズＢとが対応付けられる。重複チェック情報１４内のすべての重複位置情報について、同様の処理が繰り返される。
【００３７】
次に、重複位置情報とギャップサイズとの組が、重複位置を基準にして昇順に並べ替えられる。例えば、デバッグ情報１１５の最初の重複位置情報Ｂ１であり、次の重複位置情報Ａ１の場合、デバッグ情報１１５の先頭の重複位置情報Ｂ１とそのギャップサイズＢが対応付けられ、次の重複位置情報Ａ１とそのギャップサイズＡが対応付けられる。
【００３８】
次に、ギャップ情報１５では、ギャップサイズの更新が行われる。このギャップサイズの更新は、ギャップサイズをデバッグ情報１１５の先頭からの累計値に計算しなおすことにより、空白領域の累計量である累計ギャップ量が求められる。具体的には、累計ギャップ量２０には、ギャップサイズＢが格納され、累計ギャップ量２１には、累計ギャップ量２０にギャップサイズＡが加算された累計ギャップ量が格納され、累計ギャップ量２２には、累計ギャップ量２１にギャップサイズＢが加算された累計ギャップ量が格納される。同様に、累計ギャップ量２５には、累計ギャップ量２４にギャップサイズＡが加算された累計ギャップ量が格納される。
【００３９】
このようにして、ギャップ情報１５には、重複位置情報と、その重複位置までにどれだけのギャップが発生したかを示す累計ギャップ量が記録されることになる。
【００４０】
重複置換部１２は、上述した処理により得られたギャップ情報１５をテーブルあるいはリスト情報として保持する機能を有する。なお、重複置換部１２は、ギャップ情報１５を記憶装置１０２に記憶してもよい。
【００４１】
図７は、重複した情報を参照コードに置換する例を説明するための説明図である。  
図７に示すように、ファイル１１４には、シンボルＡ情報１２０と、シンボルＡの型情報である型情報Ａ１２１と、シンボルＡ情報１２２と、シンボルＡの型情報である型情報Ａ１２３と、シンボルＢ情報１２４と、シンボルＢの型情報である型情報Ａ１２５とが含まれている。ここでは、シンボルＡ情報１２０及びシンボルＡ情報１２２が重複し、型情報Ａ１２１、型情報Ａ１２３及び型情報Ａ１２５が重複している。これらの重複した情報は、重複解析部１１によって解析され、重複チェック情報１４に格納される。重複置換部１２は、この重複チェック情報１４に基づいて、重複位置情報にあたる情報を、すべて参照コードに置換する。同時に、重複したシンボル情報あるいは型情報のサイズから参照コードのサイズを減算することにより、算出されるギャップサイズを重複位置情報と共にギャップ情報１５に登録する。
【００４２】
具体的には、シンボルＡ情報１２２が参照コード１２６に置換され、型情報Ａ１２５が参照コード１２８に置換される。参照コード１２６は、シンボルＡ情報１２０を参照し、参照コード１２８は、型情報Ａ１２１を参照する。ここで、型情報Ａ１２３は、参照コードに置換されてない。これは、シンボルＡ情報１２０に型情報Ａ１２１への参照が含まれているため、参照コード１２６がシンボルＡ情報１２０を参照すると、型情報Ａ１２１を参照するためである。また、シンボルＡ情報１２２と型情報Ａ１２３とのサイズから参照コード１２６のサイズを減算することにより、ギャップ１２７のサイズであるギャップサイズが算出され、型情報Ａ１２５のサイズから参照コード１２８のサイズを減算することにより、ギャップ１２９のギャップサイズが算出される。これらのギャップ１２７及びギャップ１２９のギャップサイズは、重複位置情報と共にギャップ情報１５に登録される。
【００４３】
図８は、ギャップの削除の例を説明するための説明図である。  
図８に示すように、ギャップ削除部１３は、重複置換部１２が重複した情報を参照コードに置換することより生じたギャップ１２７及びギャップ１２９を削除する。この場合、ギャップサイズをデバッグ情報１１５の先頭から累計値に計算しなおし、更新したギャップサイズに基づいて、ファイル１１４のファイルサイズが縮小され、結果として出力ファイル１１８のファイルサイズが縮小される。ギャップ１２７のギャップサイズとギャップ１２９のギャップサイズが加算されたサイズ分だけ、ファイル１１４のファイルサイズが縮小される。ここで、ギャップを削除することにより、参照コードが指し示す位置情報と食い違いが発生する場合がある。そのため、参照コードが指し示す位置情報と、実際のシンボル情報又は型情報が格納されている位置情報の整合を取るため、オフセット再計算が行われる。
【００４４】
図９は、オフセット再計算の例を説明するための説明図である。  
図９に示すように、ファイル１１４には、ギャップ１３０と、シンボルＡ情報１３１と、参照コード１３２と、ギャップ１３３とが含まれている。シンボルＡ情報１３１のファイル１１４内の位置は、0x8000である。参照コード１３２は、このシンボルＡ情報１３１を参照している。即ち、参照コード１３２には、シンボルＡ情報１３１の位置である0x8000指し示すコードが含まれる。ギャップ１３０及びギャップ１３３が削除され、ファイル１１４のサイズが小さくなるが、ギャップ１３０のギャップサイズに基づいて、シンボルＡ情報の位置が0x8000から0x5000に変更される。
【００４５】
そのため、参照コード１３２が指し示す位置情報0x8000との食い違いが発生し、シンボルＡ情報１３１を参照できなくなる。これは、参照コード１３２に限らず、デバッグ情報１１５内に元々存在しているすべての参照コードの位置が変更されていることを表している。デバッグ情報１１５内に存在するすべての参照コードに対して、参照コードが指し示す位置情報と、実際のシンボル情報が格納されている位置情報の整合を取る。即ち、図９の例では、参照コード１３２が指し示す位置情報0x8000を0x5000に変更するオフセット再計算の処理が行われる。このように、ギャップ情報の累計ギャップ量に基づいて、ファイル１１４内での位置がどれだけ変化したかというオフセットが計算され、参照コードの参照先の位置の整合が取られる。
【００４６】
図１０、図１１及び図１２は、デバッグ情報統合装置の処理の流れの例を示すフローチャートである。図１０の処理は、重複解析部１１により行われ、図１１の処理は、重複置換部１２により行われ、図１２の処理は、ギャップ削除部１３により行われる。
【００４７】
まず、重複解析部１１は、ファイル１１４のデバッグ情報１１５を読み込み（ステップＳ１）、読み込んだデバッグ情報１１５の末尾か否かを判定する（ステップＳ２）。デバッグ情報の末尾でない場合、ＮＯとなり、重複解析部１１は、読み込んだデバッグ情報１１５のシンボル情報又は型情報を１つ取得する（ステップＳ３）。重複解析部１１は、その取得したシンボル情報又は型情報が重複チェック情報１４に登録されているか否かを判定する（ステップＳ４）。重複チェック情報１４に登録されていない場合、ＮＯとなり、重複解析部１１は、新規にシンボル情報又は型情報を重複チェック情報１４に登録し（ステップＳ５）、ステップＳ１に戻る。ステップＳ５では、シンボル情報とそのシンボル情報の位置、あるいは、型情報とその型情報の位置が重複チェック情報１４に登録される。一方、重複チェック情報１４に登録されている場合、ＹＥＳとなり、重複解析部１１は、重複チェック情報１４に重複位置情報を追加し（ステップＳ６）、ステップＳ１に戻る。
【００４８】
これらの処理をデバッグ情報１１５の末尾まで繰り返し実行する。デバッグ情報１１５の末尾まで繰り返し実行されると、ステップＳ２において、ＹＥＳとなり、図１１に進む。ステップＳ１からステップＳ６の処理により、デバッグ情報１１５に存在するシンボル情報の重複及び型情報の重複がすべて解析され、解析された結果が重複チェック情報１４に保存される。
【００４９】
次に、図１１に移り、重複置換部１２は、重複チェック情報１４に基づいて、登録された順にシンボル情報又は型情報を１つ選択する（ステップＳ７）。重複置換部１２は、選択されたシンボル情報又は型情報の重複位置情報があるか否かを判定する（ステップＳ８）。重複位置情報がない場合、ＮＯとなり、ステップＳ７に戻る。一方、重複位置情報がある場合、ＹＥＳとなり、重複位置情報ある情報、即ち、重複しているシンボル情報又は型情報をすべて参照コードに置換する（ステップＳ９）。重複置換部１２は、重複位置情報と、置換して得られたギャップサイズとをすべてギャップ情報１５に登録する（ステップＳ１０）。
【００５０】
重複置換部１２は、重複チェック情報１４内のすべてのシンボル情報及び型情報の処理を実行したか否かを判定する（ステップＳ１１）。すべてのシンボル情報及び型情報の処理を実行していない場合、ＮＯとなり、ステップＳ７に戻り、次のシンボル情報又は型情報を１つ選択し、同様の処理を繰り返す。すべてのシンボル情報及び型情報の処理を実行している場合、ＹＥＳとなり、重複置換部１２は、ギャップ情報１５の重複位置情報とギャップサイズの組を、重複位置を基準にして昇順に並び替える（ステップＳ１２）。重複置換部１２は、ギャップサイズをデバッグ情報１１５の先頭から累計値に計算しなおし、累計ギャップ量を求める（ステップＳ１３）。
【００５１】
ステップＳ７からステップＳ１３の処理により、ギャップ情報１５の中に、参照コードに置換された位置と、その位置までに発生したギャップサイズの累計が登録される。
【００５２】
次に、図１２に移り、ギャップ削除部１３は、ギャップ情報１５の先頭から重複位置情報を１つ選択し（ステップＳ１４）、選択した重複位置情報に存在するギャップを削除する（ステップＳ１５）。ギャップ削除部１３は、ギャップ情報１５内のすべての重複位置情報を処理したか否かを判定する（ステップＳ１６）。すべての重複位置情報を処理いていない場合、ＮＯとなり、ステップＳ１４に戻り、次の重複位置情報を１つ選択し、同様の処理を繰り返す。これらの処理により、デバッグ情報１１５内のギャップが削除され、デバッグ情報１１５を含むファイル１１４のファイルサイズが小さくなる。
【００５３】
一方、すべての重複位置情報を処理している場合、ＹＥＳとなり、参照コードを表す情報を１つ取得する（ステップＳ１７)。ギャップ削除部１３は、ギャップ情報１５の累計ギャップ量を使用して位置情報、即ち、参照コードが指し示す位置情報を更新する（ステップＳ１８）。ギャップ削除部１３は、デバッグ情報１１５の末尾まで処理したか否かを判定する（ステップＳ１９）。デバッグ情報１１５の末尾まで処理していない場合、ＮＯとなり、ステップＳ１７に戻り、次の参照コードを表す情報を１つ取得する。デバッグ情報１１５の末尾まで処理している場合、ＹＥＳとなり、処理を終了する。ステップＳ１４からステップＳ１９の処理により、すべてのギャップが削除され、デバッグ情報１１５内の位置情報、即ち、参照コードが指し示す位置情報の整合が取られる。
【００５４】
なお、最初に検出された重複した情報をそれ以降に検出された重複した情報が参照するようにしているが、これに限定されなくてもよい。即ち、重複した情報の内、例えば、２番目に検出された重複した情報を他の重複した情報が参照するようにしてもよい。
【００５５】
図１３は、デバッグ情報内の重複した情報が削減されたファイルの例を説明するための説明図である。
【００５６】
デバッグ情報統合装置１は、ファイル１１４を受け取り、重複した情報の統合を行うことにより、出力ファイル１１８を得る。図１３では、ファイル１１４及び出力ファイル１１８内のデバッグ情報１１５のみを示している。上述した処理により、シンボル情報１１６ｂが参照コード１１９ａに置換され、シンボル情報１１６ｃが参照コード１１９ｂに置換される。参照コード１１９ａ及び１１９ｂのそれぞれには、シンボル情報１１６ａを参照するため、シンボル情報１１６ａの位置である“７ｃ”を参照するコードが含まれる。
【００５７】
削減可能なサイズは、シンボル情報の長さ、特に、シンボルにつけられた名前の長さなどによって増減する。例えば、シンボル情報１１６ｂ及び１１６ｃのサイズがそれぞれ２０ｂｙｔｅ、参照コード１１９ａ及び１１９ｂのサイズがそれぞれ４ｂｙｔｅの場合、１つのシンボル情報で１６ｂｙｔｅのサイズが削減される。即ち、２つのシンボル情報を上述した処理により最適化すると３２ｂｙｔｅのサイズが削減されることになる。デバッグ情報１１５の場合、重複している３箇所のシンボル情報のうち２箇所を最適化することにより、シンボル情報の１つを２０ｂｙｔｅ、参照コード１１９ａ及び１１９ｂのそれぞれを４ｂｙｔｅとすると、１６ｂｙｔｅに最適シンボル数２を掛けて、３２ｂｙｔｅの削減となる。
【００５８】
よって、本実施の形態のデバッグ情報統合装置によれば、コンパイラシステムの出力結果ファイルにおけるデバッグ情報内の重複した情報を統合することにより、出力結果ファイルのファイルサイズを削減することができる。
【００５９】
このように、出力ファイル１１８のファイルサイズを削減することにより、出力ファイル１１８を読み込むツール、例えば、デバッガのローディング時間を減少することができる。即ち、シンボル名の解析及び型情報の解析などのシンボル情報を解析する処理が減少するため、デバッガの処理速度を向上されることができ、ユーザの待ち時間を減少させることができる。また、出力ファイル１１８のファイルサイズを削減することにより、記憶装置１０２に占める出力ファイル１１８の領域を削減することができるという効果を得ることができる。
【００６０】
なお、本実施の形態において、デバッグ情報統合装置１は、リンカ１１０の出力したファイル１１４を受け取るとして説明したが、リンカ１１０自体にデバッグ情報統合装置１が組み込まれていてもよい。
【００６１】
また、本実施の形態において、デバッグ情報統合装置１は、ソフトウエアプログラムとして説明してが、上述した処理を実行するハードウエアにより構成してもよい。
【００６２】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、以下、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。
【００６３】
また、本明細書における各フローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００６４】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデバッグ情報統合装置を実現することができる。
【００６５】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００６６】
【図１】本実施の形態に係る情報処理システムの構成を示すブロック部である。
【図２】コンパイラシステムの構成を示すブロック図である。
【図３】デバッグ情報の例を説明するための説明図である。
【図４】本実施の形態に係るデバッグ情報統合装置の構成を示すブロック図である。
【図５】重複チェック情報の例を説明するための説明図である。
【図６】ギャップ情報の例を説明するための説明図である。
【図７】重複した情報を参照コードに置換する例を説明するための説明図である。
【図８】ギャップの削除の例を説明するための説明図である。
【図９】オフセット再計算の例を説明するための説明図である。
【図１０】デバッグ情報統合装置の処理の流れの例を示すフローチャートである。
【図１１】デバッグ情報統合装置の処理の流れの例を示すフローチャートである。
【図１２】デバッグ情報統合装置の処理の流れの例を示すフローチャートである。
【図１３】デバッグ情報内の重複した情報が削減されたファイルの例を説明するための説明図である。
【符号の説明】
【００６７】
１…デバッグ情報統合装置、１１…重複解析部、１２…重複置換部、１３…ギャップ削除部、１４…重複チェック情報、１５…ギャップ情報
【図１】
2010020552.tif 000003
【図２】
2010020552.tif 000004
【図３】
2010020552.tif 000005
【図４】
2010020552.tif 000006
【図５】
2010020552.tif 000007
【図６】
2010020552.tif 000008
【図７】
2010020552.tif 000009
【図８】
2010020552.tif 000010
【図９】
2010020552.tif 000011
【図１０】
2010020552.tif 000012
【図１１】
2010020552.tif 000013
【図１２】
2010020552.tif 000014
【図１３】
2010020552.tif 000015