(57)【要約】      （修正有）【課題】マクロ定義を展開して生成されるマクロ展開情報のデータサイズを縮小する。【解決手段】マクロ展開履歴情報生成部４２２は、ソースプログラム７に含まれるマクロ定義を展開してマクロ展開履歴情報を生成する。マクロ数値化変換部４２３は、展開されたマクロ定義を字句に分割した字句情報を生成して、字句情報を当該字句情報に対応させて割り当てられた数値情報に変換したマクロ展開履歴数値化情報１０１と、字句情報と数値情報の対応関係を記録したマクロ数値化情報１０２とを生成する。マクロ展開部４２１は、マクロ展開履歴数値化情報１０１と、マクロ数値化情報１０２をオブジェクトファイルへ格納する。デバッガ４４は、マクロ呼出し状況の表示において、マクロ展開履歴数値化情報１０１に記録された数値情報を、マクロ数値化情報１０２に基づいて変換した字句情報を用いて表示する。【選択図】図１１
2010257032.tif 000002
【特許請求の範囲】
【請求項１】
マクロ定義とマクロ呼出しとを含むソースプログラムからオブジェクトファイルを生成するコンパイラと、
前記オブジェクトファイルから生成される実行形式プログラムを用いてデバッグを実行するデバッガと
を備え、
前記コンパイラは、
前記ソースプログラムに含まれる前記マクロ定義を展開した展開履歴を含むマクロ展開履歴情報を生成するマクロ展開履歴情報生成部と、
前記マクロ展開履歴情報に展開されたマクロ定義を字句に分割した字句情報を生成して、前記マクロ展開履歴情報に含まれる前記字句情報を当該字句情報に対応させて割り当てられた数値情報に変換したマクロ展開履歴数値化情報と、前記字句情報と前記数値情報の対応関係を記録したマクロ数値化情報と、を生成するマクロ数値化変換部と、
前記マクロ展開履歴数値化情報と、前記マクロ数値化情報を前記オブジェクトファイルへ格納するマクロ展開部と
を具備し、
前記デバッガは、前記マクロ呼出しにおける前記マクロ呼出し状況の表示において、前記マクロ展開履歴数値化情報に記録された前記数値情報を、前記マクロ数値化情報に基づいて変換した前記字句情報を用いて表示する
プログラムデバッグ装置。
【請求項２】
請求項１に記載のプログラムデバッグ装置であって、
前記マクロ数値化変換部は、処理を行うべき前記字句情報に前記数値情報が割り当てられているかを前記マクロ数値化情報に基づいて判定して、割り当てられていない場合、当該字句情報に対して任意の数値情報を割り当てて当該字句情報を前記任意の数値情報を用いて変換して前記マクロ展開履歴数値化情報を生成し、割り当てられている場合には、当該字句情報を当該字句情報に対応する前記数値情報へ変換して前記マクロ展開履歴数値化情報を生成すると共に、当該字句情報と前記任意の数値情報との対応関係を前記マクロ数値化情報へ記録して前記マクロ数値化情報を生成する
プログラムデバッグ装置。
【請求項３】
請求項２に記載のプログラムデバッグ装置であって、
前記マクロ数値化変換部は、前記字句情報において、前記マクロ定義に、引数以外の複数の字句が連続して含まれる場合、前記複数の字句を結合して、結合した字句に対して前記数値情報を割り当てる
プログラムデバッグ装置。
【請求項４】
請求項１に記載のプログラムデバッグ装置であって、
前記マクロ数値化情報は、予め前記字句情報と前記数値情報とを対応させて記録している
プログラムデバッグ装置。
【請求項５】
マクロ定義とマクロ呼出しとを含むソースプログラムからオブジェクトファイルを生成するコンパイラと、前記オブジェクトファイルから生成される実行形式プログラムを用いてデバッグを実行するデバッガとを備えるプログラムデバッグ装置において、
コンピュータが、前記ソースプログラムに含まれる前記マクロ定義を展開した展開履歴を含むマクロ展開履歴情報を生成するステップと、
コンピュータが、前記マクロ展開履歴情報に展開されたマクロ定義を字句に分割した字句情報を生成するステップと、
コンピュータが、前記マクロ展開履歴情報に含まれる前記字句情報を当該字句情報に対応させて割り当てられた数値情報に変換するステップと、
コンピュータが、前記字句情報と前記数値情報の対応関係を記録したマクロ数値化情報とを生成するステップと、
コンピュータが、前記マクロ展開履歴数値化情報と、前記マクロ数値化情報を前記オブジェクトファイルへ格納するステップと、
コンピュータが、前記マクロ呼出しにおける前記マクロ呼出し状況の表示において、前記マクロ展開履歴数値化情報に記録された前記数値情報を、前記マクロ数値化情報に基づいて変換した前記字句情報を用いて表示するステップ
を備えるプログラムデバッグ方法。
【請求項６】
請求項５に記載のプログラムデバッグ方法であって、前記数値情報に変換するステップは、
コンピュータが、処理を行うべき前記字句情報に前記数値情報が割り当てられているかを前記マクロ数値化情報に基づいて判定するステップと、
コンピュータが、前記判定において割り当てられていないと判定された場合、当該字句情報に対して任意の数値情報を割り当てて当該字句情報を前記任意の数値情報を用いて変換して前記マクロ展開履歴数値化情報を生成するステップと、
コンピュータが、前記判定において割り当てられている判定された場合、当該字句情報を当該字句情報に対応する前記数値情報へ変換して前記マクロ展開履歴数値化情報を生成すると共に、当該字句情報と前記任意の数値情報との対応関係を前記マクロ数値化情報へ記録して前記マクロ数値化情報を生成するステップと
を含むプログラムデバッグ方法。
【請求項７】
請求項６に記載のプログラムデバッグ方法であって、前記数値情報に変換するステップは、
コンピュータが、前記字句情報において、前記マクロ定義の引数以外の複数の字句情報が連続して含まれる場合、前記複数の字句情報を結合するステップと、
コンピュータが、前記結合された字句情報に対して前記数値情報を割り当てるステップと
を含むプログラムデバッグ方法。
【請求項８】
請求項５に記載のプログラムデバッグ方法であって、
コンピュータが、予め前記字句情報と前記数値情報とを対応させて前記マクロ数値化情報へ記録するステップを
さらに備えるプログラムデバッグ方法。
【請求項９】
請求項５から請求項８までのいずれかに記載のプログラムデバッグ方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムデバッグ装置に関する。
【背景技術】
【０００２】
プログラムは、開発工程においてデバッグを行われる。ソースプログラムは、マクロ定義が可能である。しかし、マクロ定義は、ソースプログラムを実行形式プログラムに変換する過程で展開されてしまう。そのため、マクロ定義の情報は、実行形式プログラムのデバッグを行うときには存在しない。マクロ定義は、プログラムの規模が大きく複雑になるにつれて、大規模化、複雑化している。プログラム開発において、デバッグによりマクロ定義の依存関係や展開状況を把握することは重要である。このような、マクロ定義を含むプログラムのデバッグに関する以下のような関連技術が開示されている。
【０００３】
特許文献１は、マクロの呼び出し状況が置換された引数やコメント分と共に表示されて、デバックが可能となるプログラムを開示している。特許文献１のプログラムは、ソースファイルからオブジェクトファイルを生成するアセンブル又はコンパイルをコンピュータに実行させ、アセンブル又はコンパイルを実行するときにマクロ定義及びマクロ呼び出しができるアセンブラ又はコンパイラとなるプログラムである。このマクロ定義及びマクロ呼出しを行うときはマクロ呼出しの部分をマクロ定義の内容に従ってオブジェクトファイル内にコード展開し、マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成してオブジェクトファイル内に埋め込む手段をコンピュータに実行させる。特許文献１のプログラムによれば、アセンブル又はコンパイルの際にはマクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成してオブジェクトファイル内に埋め込み、シミュレータ又はエミュレータでは当該引数の置換された状態を表示することができ、引数の置換状況を明らかにすることができる。
【０００４】
以下、図面を用いて、特許文献１のプログラムを説明する。図１は、特許文献１のプログラムの処理を示す図である。ソースプログラム１１は、マクロ定義とマクロ呼出しを含んでいる。コンパイラ・アセンブラ１２は、ソースプログラム１１からデバック情報付きのオブジェクトファイル１３を作成する。このとき、コンパイラ・アセンブラ１２は、ソースプログラム１１にマクロ定義及びマクロ呼出しが含まれる場合には、マクロ呼出し部分をマクロ定義の内容に従ってオブジェクトファイル１３内にコード展開する。また、コンパイラ・アセンブラ１２は、さらにマクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報１３１を生成して、オブジェクトファイル１３内に格納する。リンカ１４は、オブジェクトファイル１３に対して結合処理を行って実行形式プログラム１５を生成する。実行形式プログラム１５は、マクロ展開ソースコード情報１３１を含んでいる。エミュレータ・シミュレータ１６は、実行形式プログラム１５に基づいてデバックを行う。エミュレータ・シミュレータ１６は、マクロ呼出しの１行毎のステップを実行するときに、マクロ展開ソースコード情報１３１に基づいて、マクロ呼出し部に対応するマクロ引数置換されたマクロ定義を表示する。
【０００５】
ここで、図２から図４を用いて、特許文献１による効果の説明を行う。図２は、マクロ定義及びマクロ呼出しを含むソースプログラムの一例を示す図である。図３は、従来技術による図２のソースプログラムにおけるマクロ呼出し状況を示す図である。図４は、特許文献１による図２のソースプログラムにおけるマクロ呼出し状況を示す図である。例えば、図２に示すようなマクロ定義及びマクロ呼出しを含むソースプログラムを例に考える。特許文献１以前では、エミュレータ・シミュレータ１６は、マクロ呼出しにおいて、図２に示すようなソースプログラムをそのまま表示するか、あるいは、図３に示すようにマクロ定義の展開後を表示するか、のいずれかを行っていた。これに対して、特許文献１によれば、エミュレータ・シミュレータ１６は、実行形式プログラム１５に埋め込まれているマクロ展開ソースコード情報を用いて、例えば、図４に示すように、マクロ定義内に書かれたコメント文と共に、マクロ展開状況が分かるようにソース行を表示することができる。
【０００６】
また、特許文献２は、ソースプログラム上のマクロチェックを簡易に実現するソースプログラムチェック装置を開示している。
【０００７】
特許文献２のソースプログラムチェック装置は、ソースプログラムのチェックを行うチェック装置において、ソースプログラム中で記述されたマクロを対応する命令或いは命令群に展開する際に、当該展開した命令あるいは命令群に対応付けてマクロ情報を記憶する手段と、展開した後のソースプログラムの構文を解析して構文テキストを作成する手段と、作成した構文テキストについてメッセージを出力する際に当該出力するメッセージ中の該当部分に対応付けて上記マクロ情報を出力する手段とを備えることを特徴とする。
【０００８】
特許文献２のソースプログラムチェック装置によれば、マクロ置換処理手段は、ソースプログラム中のマクロを対応する命令に置換する際に、マクロ名や、ファイル名や、行数等を、置換後の命令に対応付けてテーブルへ記録しておく。次に、構文テキスト作成手段は、構文テキスト作成時に、命令に対応するマクロ名、ファイル名、行数等を合わせて生成する。そして、メッセージ出力手段が、命令と対応付けてマクロ名、ファイル名、行数等を、メッセージ中に表示する。そのため、ユーザは、表示されたメッセージが、ソースプログラム中のどこにマクロに対するメッセージなのかを混乱することがない。よって、ソースプログラム上のマクロチェックを簡易に行うことが可能となり、作業効率が向上する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−１４６７３１号公報
【特許文献２】特開平１１−１４３７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記の関連技術は、マクロ呼出し時において呼出し状況を表示するためのマクロ展開情報を、ソースファイルで記述されたマクロ定義のまま記憶している。そのため、マクロ呼出しの箇所毎にマクロ定義の情報を記憶することが必要となる。これでは、大規模なマクロ定義や多数のマクロ呼出しが存在するプログラムの場合、オブジェクトファイルへ膨大な情報量を格納する必要が生じ、多大なメモリ容量やディスクスペースを必要とする。また、コンパイラやアセンブラ等のマクロ展開情報を生成する装置、あるいは、エミュレータやシミュレータ等のマクロ展開情報を表示する装置において、処理待ち時間が増大してしまう。
【課題を解決するための手段】
【００１１】
以下に、（発明を実施するための形態）で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、（特許請求の範囲）の記載と（発明を実施するための形態）との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、（特許請求の範囲）に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明のプログラムデバッグ装置は、マクロ定義とマクロ呼出しとを含むソースプログラム（７）からオブジェクトファイル（８）を生成するコンパイラ（４２）と、オブジェクトファイル（８）から生成される実行形式プログラム（９）を用いてデバッグを実行するデバッガ（４４）と、を備える。コンパイラ（４２）は、ソースプログラム（７）に含まれるマクロ定義を展開した展開履歴を含むマクロ展開履歴情報（１００）を生成するマクロ展開履歴情報生成部（４２２）と、マクロ展開履歴情報（１００）に展開されたマクロ定義を字句に分割した字句情報を生成して、マクロ展開履歴情報（１００）に含まれる字句情報を当該字句情報に対応させて割り当てられた数値情報に変換してマクロ展開履歴数値化情報（１０１）と、字句情報と数値情報の対応関係を記録したマクロ数値化情報（１０２）と、を生成するマクロ数値化変換部（４２３）とマクロ展開履歴数値化情報（１０１）と、マクロ数値化情報（１０２）をオブジェクトファイルへ格納するマクロ展開部（４２１）と、を具備する。デバッガ（４４）は、マクロ呼出しにおけるマクロ呼出し状況の表示において、マクロ展開履歴数値化情報（１０１）に記録された数値情報を、マクロ数値化情報（１０２）に基づいて変換した字句情報を用いて表示する。
【００１３】
本発明のプログラムデバッグ方法は、マクロ定義とマクロ呼出しとを含むソースプログラム（７）からオブジェクトファイル（８）を生成するコンパイラ（４２）と、オブジェクトファイル（７）から生成される実行形式プログラム（９）を用いてデバッグを実行するデバッガ（４４）とを備えるプログラムデバッグ装置において、コンピュータが、ソースプログラム（７）に含まれるマクロ定義を展開した展開履歴を含むマクロ展開履歴情報（１００）を生成するステップ（Ｓ１０）と、コンピュータが、マクロ展開履歴情報（１００）に展開されたマクロ定義を字句に分割した字句情報を生成するステップ（Ｓ２０）と、コンピュータが、マクロ展開履歴情報（１００）に含まれる字句情報を当該字句情報に対応させて割り当てられた数値情報に変換するステップ（Ｓ６０）と、コンピュータが、字句情報と数値情報の対応関係を記録したマクロ数値化情報（１０２）とを生成するステップ（Ｓ５０）と、コンピュータが、マクロ展開履歴数値化情報（１０１）と、マクロ数値化情報（１０２）をオブジェクトファイルへ格納するステップ（Ｓ８０）と、コンピュータが、マクロ呼出しにおけるマクロ呼出し状況の表示において、マクロ展開履歴数値化情報（１０１）に記録された数値情報を、マクロ数値化情報（１０２）に基づいて変換した字句情報を用いて表示するステップを備える。
【００１４】
本発明のプログラムは、上述のプログラムデバッグ方法をコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、マクロ定義を展開して生成されるマクロ展開情報のデータサイズを縮小することが可能なプログラムデバッグ装置を提供することができる。これにより、マクロ呼出し毎におけるマクロ呼出し状況の表示処理に要する処理時間を短縮することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】特許文献１におけるプログラムの処理を示すブロック図である。
【図２】特許文献１におけるマクロ定義及びマクロ呼出しを含むソースプログラムの一例を示す図である。
【図３】特許文献１以前の従来技術により図２のソースプログラムにおけるマクロ呼出し状況を示す図である。
【図４】特許文献１により図２のソースプログラムにおけるマクロ呼出し状況を示す図である。
【図５】本実施形態におけるプログラムデバッグ装置の構成を示す機能ブロック図である。
【図６】本実施形態におけるコンパイラ・アセンブラ４２の構成を示す機能ブロック図である。
【図７】本実施形態におけるソースプログラム７の一例を示す図である。
【図８】本実施形態におけるマクロ展開履歴情報１００の一例を示す図である。
【図９】本実施形態におけるマクロ数値化変換部４２３のマクロ数値化処理を説明する図である。
【図１０】本実施形態におけるマクロ展開履歴数値化情報１０１とマクロ数値化情報１０２の一例を示す図である。
【図１１】本実施形態におけるプログラムデバッグ装置の処理の流れを示す図である。
【図１２】本実施形態におけるマクロ展開履歴情報生成部４２２の行うマクロ展開処理と、マクロ数値化変換部４２３の行うマクロ数値化処理の動作フローである。
【図１３】本実施形態におけるマクロ呼出し箇所におけるマクロ呼出し状況を示す図である。
【図１４】本実施形態におけるデバッガ・シミュレータ４４が表示するマクロ情報の表示形式を示す図である。
【図１５】本実施形態におけるソースプログラム７の一例を示す図である。
【図１６】特許文献１による図１５のソースプログラム７のマクロ呼出し状況表示を示す図である。
【図１７】本実施形態における図１４のソースプログラム７のマクロ呼出し状況を示す図である。
【発明を実施するための形態】
【００１７】
添付図面を参照して、本発明の実施形態によるプログラムデバッグ装置を以下に説明する。
【００１８】
［構成の説明］
はじめに、図５を用いて、本実施形態におけるプログラムデバッグ装置の構成を説明する。図５は、本実施形態におけるプログラムデバッグ装置の構成を示す機能ブロック図である。本実施形態のプログラムデバッグ装置は、図５に示すようなコンピュータへプログラムを導入することにより実現する。本発明のプログラムデバッグ装置は、入力装置１と、処理装置２と、出力装置３と、記憶装置４、データ入出力装置６とを備える。
【００１９】
入力装置１は、プログラムデバッグ装置を使用するユーザとの入力インターフェイスである。入力装置１は、キーボードや、マウスで構成される。処理装置２は、プログラムデバッグ装置の機能実行を制御する。処理装置２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で構成される。出力装置３は、プログラムデバッグ装置を使用するユーザとの出力インターフェイスである。出力装置３は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）で構成される。記憶装置４は、プログラムデバッグ装置の機能を実現するための処理用プログラムや各種データを記憶している。記憶装置５は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等で構成される。データ入出力装置６は、当該コンピュータの外部とデータの入出力を行うためのインターフェイスである。データ入出力装置６は、例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）ドライブや、あるいは、有線・無線による通信を行うことが可能な通信インターフェイスである。入力装置１、処理装置２、出力装置３、記憶装置４、データ入出力装置６は、それぞれ、バス７により電気的に接続されており、バス７を介してデータの入出力が可能である。プログラムデバッグ装置の各機能は、記憶装置４に記憶された処理用プログラムを、処理装置２が読込んで実行することにより実現される。
【００２０】
なお、記憶装置４の記憶する処理用プログラムは、外部記憶媒体５に記憶することができる。外部記憶媒体５は、例えば、ＣＤである。処理用プログラムは、外部記憶媒体５に記憶することで、持ち運びが可能となる。この場合、外部記憶媒体５に記憶された処理用プログラムを、図５に示すようなコンピュータへ入出力装置６を介して導入することにより、あるいは、外部記憶媒体５から処理用プログラムを起動することにより、プログラムデバッグ装置の機能を実現することができる。
【００２１】
記憶装置４は、プログラムデバッグ装置を実現する処理用プログラムであるホストコンピュータ４１を備える。ホストコンピュータ４１は、コンパイラ・アセンブラ４２と、リンカ４３と、デバッガ・シミュレータ４４とを備える。コンパイラ・アセンブラ４２は、ソースプログラム７からオブジェクトファイル８を生成する。リンカ４３は、オブジェクトファイル８の結合処理を行って実行形式プログラム９を生成する。デバッガ・シミュレータ４４は、実行形式プログラム９に基づいて、デバックやシミュレーションを行う。
【００２２】
図６は、本実施形態におけるコンパイラ・アセンブラ４２の構成を示す機能ブロック図である。本実施形態のコンパイラ・アセンブラ４２は、マクロ展開部４２１を備える。マクロ展開部４２１は、マクロ展開履歴情報生成部４２２と、マクロ数値化変換部４２３と、を備える。
【００２３】
マクロ展開履歴情報生成部４２２は、ソースプログラム７に含まれるマクロ定義を展開する。さらにマクロ展開履歴情報生成部４２２は、マクロ定義が引数を含む場合には、マクロ定義を引数で置換する。マクロ展開履歴情報生成部４２２は、このような処理を行って、マクロ展開履歴情報１００を生成する（以下、この処理をマクロ展開処理と呼ぶ。）。マクロ展開履歴情報１００は、マクロ呼出しに基づいてマクロ定義を展開する展開過程を含む情報である。
【００２４】
図７と図８を使用してマクロ展開履歴情報生成部４２２のマクロ展開処理を説明する。図７は、本実施形態におけるソースプログラム７の一例を示す図である。例えば、図７に示すようなソースプログラム７を例として説明を行う。図７のソースプログラム７は、マクロ定義とマクロ呼出しを含んでいる。マクロ展開部４２１のマクロ展開履歴情報生成部４２２は、ソースプログラム７のマクロ呼出しに基づいてマクロ定義を展開し、引数の置換を行って、マクロ展開履歴情報１００を生成する。図８は、本実施形態におけるマクロ展開履歴情報１００の一例を示す図である。図８のマクロ展開履歴情報１００は、マクロ定義「Ｄ」を展開したものである。このように、マクロ展開履歴情報生成部４２２は、ソースプログラム７に対してマクロ展開処理を行って、図８に示すようなマクロ展開履歴情報１００を生成する。
【００２５】
マクロ数値化変換部４２３は、マクロ展開履歴情報生成部４２２の生成したマクロ展開履歴情報１００を数値化して、数値化されたマクロ展開履歴情報（以下、マクロ展開履歴数値化情報１０１）と、マクロ数値化情報１０２とを生成する（以下、この処理をマクロ数値化処理と呼ぶ。）。
【００２６】
図９と図１０とを使用してマクロ数値化変換部４２３のマクロ数値化処理を説明する。図９は、本実施形態におけるマクロ数値化変換部４２３のマクロ数値化処理を説明する図である。例えば、図９の符号５０に示すようなマクロ定義を例とする。マクロ数値化変換部４２３は、符号５０のマクロ定義を字句に分割する。ここで、字句とは、ソースコードにおいて出現する文字列のなかで意味を持つ最小単位を示す。本実施形態においてマクロ数値化変換部４２３は、マクロ名以外のマクロ定義を字句に分割して字句情報を生成する。符号５１は、マクロ数値化変換部４２３が、符号５０のマクロ定義を分割した後の字句情報を示している。マクロ数値化変換部４２３は、字句情報を数値情報に変換する。本実施形態においてマクロ数値化変換部４２３は、マクロ名以外のマクロ定義の字句情報を数字情報に変換する。符号５２は、マクロ数値化変換部４２３により数値情報に変換された字句情報５１を示している。マクロ数値化変換部４２３は、字句情報を数値情報に変換する際に、各字句情報に数値情報を割り当てながら変換を行う。符号５３は、このようにマクロ数値化変換部４２３が各字句情報に割り当てた数値情報の対応関係を示しており、この符号５３が、マクロ数値化情報１０２である。
【００２７】
例えば、マクロ数値化変換部４２３は、「第１引数」に「１」を割り当てている。そのため、符号５１の字句情報「ａｒｇ１」は、符号５２の数値情報「１」へ変換される。また、マクロ数値化変換部４２３は、符号５１の字句情報「＋」、「１００」のように、マクロ名、あるいは引数以外の字句情報の並びを結合する。つまり、字句情報「＋」と、「１００」とは、１つの字句情報「＋１００」として扱う。このようにすることで、字句情報に割り当てられる数値情報の数を削減することができる。なお、マクロ数値化変換部４２３は、このように字句情報を結合して処理することに限定しない。マクロ数値化変換部４２３は、字句情報を複数個結合して数値情報を割り当てても良いし、全く結合することなく数値情報を割り当てても良い。
【００２８】
図１０は、本実施形態におけるマクロ展開履歴数値化情報１０１とマクロ数値化情報１０２に一例を示す図である。マクロ数値化変換部４２３は、図８のマクロ展開履歴情報１００において、マクロ名以外の字句を字句情報へ分割して、各字句情報へ数値情報を割り当て、字句情報を対応する数値情報に変換してマクロ展開履歴数値化情報１０１を生成する。図１０において、マクロ数値化情報１０２は、前述の通り、マクロ数値化変換部４２３が字句情報と、字句情報に割り振った数値情報との対応関係を示している。また、マクロ展開履歴数値化情報１０１は、マクロ数値化情報１０２に示される対応関係より数値情報へ変換された図８のマクロ展開履歴情報１００を示している。
【００２９】
例えば、マクロ数値化変換部４２３は、図８のマクロ展開履歴情報１００の１行目「Ｄ：ａｒｇ１＝ａｒｇ１＋１００」をマクロ数値化情報１０２に基づいてマクロ展開履歴数値化情報１０１の１行目「Ｄ：１４１９」と変換する。ここで、「Ｄ：」マクロ名であるので変換されていない。マクロ数値化変換部４２３は、以下同様に、字句情報に数値情報を割り当ててマクロ数値化情報１０２を生成しながら、マクロ展開履歴情報１００をマクロ数値化情報１０２へ変換する。マクロ数値化変換部４２３は、このようにして、マクロ展開履歴情報１００からマクロ展開履歴数値化情報１０１と、マクロ数値化情報１０２とを生成する。
【００３０】
（動作方法の説明）
次に、本実施形態におけるプログラムデバッグ装置の動作方法を説明する。図１１は、本実施形態におけるプログラムデバッグ装置の処理の流れを示す図である。
【００３１】
まず、プログラムデバッグ装置は、ソースプログラムを入力する。ソースプログラム７は、マクロ定義とマクロ呼出しとを含んでいる。コンパイラ・アセンブラ４２は、ソースプログラム７を読込んで、オブジェクトファイル８を生成する。コンパイラ・アセンブラ４２のマクロ展開部４２１の備えるマクロ展開履歴情報生成部４２２は、オブジェクトファイル８を生成するときに、マクロ展開処理を行う。マクロ展開履歴情報生成部４２２は、ソースプログラム７に含まれるマクロ定義とマクロ呼出しに基づいてマクロ展開処理を行って、マクロ展開履歴情報１００を生成する。マクロ数値化変換部４２３は、マクロ展開履歴情報生成部４２２の生成したマクロ展開履歴情報１００に対してマクロ数値化処理を行う。マクロ数値化変換部４２３は、マクロ展開履歴情報１００に対してマクロ数値化処理を行ってマクロ展開履歴数値化情報１０１とマクロ数値化情報１０２とを生成する。マクロ展開部４２１は、このようにして生成したマクロ展開履歴数値化情報１０１と、マクロ数値化情報１０２とを、マクロ情報１０としてオブジェクトファイル８へ格納する。リンカ４３は、コンパイラ・アセンブラ４２により生成されたオブジェクトファイル８に対して結合処理を行って、実行形式プログラム９を生成する。実行形式プログラム９は、マクロ情報１０を含んでいる。デバッガ・シミュレータ４４は、実行形式プログラム９を読込んで、デバッグやシミュレーションを行う。
【００３２】
ここで、図１２を用いて、本実施形態におけるマクロ展開履歴情報生成部４２２の行うマクロ展開処理と、マクロ数値化変換部４２３の行うマクロ数値化処理の動作を説明する。図１２は、本実施形態におけるマクロ展開履歴情報生成部４２２の行うマクロ展開処理と、マクロ数値化変換部４２３の行うマクロ数値化処理の動作フローである。
【００３３】
まず、マクロ展開履歴情報生成部４２２は、マクロ定義を展開してマクロ展開履歴情報１００を生成する（ステップＳ１０）。マクロ展開履歴情報生成部４２２は、ソースプログラム７に含まれるマクロ呼出しに基づいてマクロ定義を展開して、マクロ展開履歴情報１００を生成する。マクロ数値化変換部４２３は、マクロ展開履歴情報１００のマクロ定義を字句情報へ分割する（ステップＳ２０）。マクロ数値化変換部４２３は、マクロ展開履歴情報１００の字句情報を数値情報へ変換する（ステップＳ３０）。このとき、マクロ数値化変換部４２３は、処理対象の字句情報に対する数値情報が割り当てられているかを判定する（ステップＳ４０）。ここで、字句情報に数値情報が割り当てられているとは、処理対象の字句情報に対応する数値情報が、マクロ数値化情報１０２に記録されていることを意味する。処理対象の字句情報に対して数値情報が割り当てられていない場合、マクロ数値化変換部４２３は、処理対象の字句情報に数値情報を割り当てる（ステップＳ５０）。マクロ数値化変換部４２３は、字句情報と字句情報に割り当てた数値情報とを対応させた対応情報を、マクロ数値化情報１０２へ記録する。マクロ数値化変換部５２３は、このようにして、字句情報と数値情報との対応関係を記録して、マクロ数値化情報１０２を生成する。一方、処理対象の字句情報に対して数値情報が割り当てられている場合、マクロ数値化変換部４２３は、字句情報を字句情報に割り当てられている数値情報へ変換する（ステップＳ６０）。マクロ数値化変換部４２３は、処理対象の字句情報に対応する数値情報をマクロ数値化情報１０２から取得して、字句情報から数値情報へ変換する。マクロ数値化変換部４２３は、全ての字句情報を数値情報へ変換したか判定する（ステップＳ７０）。全ての字句情報を数値情報へ変換していない場合、数値化処理を継続するために、ステップＳ３０へ戻る。一方、全ての字句情報を数値情報へ変換した場合、マクロ展開部４２１は、生成されたマクロ展開履歴数値化情報１０１と、マクロ数値化情報１０２とをオブジェクトファイル８へマクロ情報１０として格納する（ステップＳ８０）。以上で、マクロ展開処理と、マクロ数値化処理とは終了となる。
【００３４】
図１３は、本実施形態におけるマクロ呼出し箇所におけるマクロ呼出し状況を示す図である。マクロ呼出し箇所では、図１３の符号６０に示すように、マクロ名とマクロ呼出しの引数とのみを表示する。一方、図１４は、本実施形態におけるデバッガ・シミュレータ４４が表示するマクロ情報の表示形式を示す図である。デバッガ・シミュレータ４４は、図１４のようにマクロ定義「Ｄ」を展開履歴付きで表示する。デバッガ・シミュレータ４４は、実行形式プログラム９に含まれるマクロ情報１０に基づいて、マクロ数値化情報１０２を用いて図１０に示したマクロ展開履歴数値化情報１０１を、数値情報から字句情報へ変換して図１４のような表示を行う。デバッガ・シミュレータ４４は、数値情報を字句情報へ変換を行って表示するだけであるので、処理負荷が少ない。
【００３５】
以上が、本実施形態におけるプログラムデバッグ装置の動作方法の説明である。
【００３６】
ここまで、本実施形態のプログラムデバッグ装置を説明してきた。本発明のプログラムデバッグ装置は、ソースプログラム７からオブジェクトファイル８を生成するときに、ソースプログラム７に含まれるマクロ定義を展開してマクロ展開履歴数値化情報１０１と、マクロ数値化情報１０２とを生成して、オブジェクトファイル８へ格納する。そのため、マクロ展開履歴をマクロ定義の記述のまま使用する場合に比べて、オブジェクトサイズを小さくすることができる。図１５は、本実施形態におけるソースプログラム７の一例を示す図である。図１５のソースプログラム７は、マクロ定義とマクロ呼出しとを備えている。図１６は、特許文献１による図１５のソースプログラム７のマクロ呼出し状況表示を示す図である。従来技術である特許文献１によれば、マクロ呼出し箇所毎に符号６１相当の情報サイズを消費していくことになる。符号６１に対応する情報は、マクロ定義毎の記述をマクロ展開ソースコード情報として記憶しておく必要がある。一方、図１７は、本実施形態における図１５のソースプログラム７のマクロ呼出し状況を示す図である。本実施形態における、マクロ呼出し箇所毎に符号６２（マクロ名と引数の並びのみ）の情報サイズで済む。また、符号６２に対応する情報は、マクロ展開履歴数値化情報１０１と、マクロ数値化情報１０２とに含まれているため、これらの情報サイズのみで済む。
【００３７】
以上が、本実施形態の説明であるが、本実施形態は、以下のようにも変更が可能である。まず、本実施形態において、マクロ情報１０は、オブジェクトファイル８に埋め込んでいる。しかし、マクロ情報１０は、記憶装置４を構成するメモリや、記憶装置４に記録されるファイル上の情報として記録されても構わない。また、本実施形態において、マクロ数値化変換部４２３は、マクロ展開履歴情報１００のマクロ数値化処理を行いながらマクロ数値化情報１０２を生成している。しかし、マクロ数値化情報１０２に記録される情報は、予め共通に使用される字句情報と数値情報との変換情報として、記憶装置４に記録されていてもよい。この場合、マクロ数値化変換部４２３と、デバッガ・シミュレータ４４は、当該変換情報を共通で使用してもよい。このようにすることで、マクロ数値化変換部４２３は、マクロ数値化処理において、マクロ数値化情報１０２を生成する必要が無くなる。
【００３８】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００３９】
１  入力装置
２  処理装置
３  出力装置
４  記憶装置
５  外部記憶媒体
６  データ入出力装置
７  ソースプログラム
８  オブジェクト
９  実行形式プログラム
１０  マクロ展開情報
１１  ソースプログラム
１２  コンパイラ・アセンブラ
１３  オブジェクトファイル
１４  リンカ
１５  実行形式プログラム
１６  エミュレータ・シミュレータ
４１  ホストコンピュータ
４２  コンパイラ・アセンブラ
４３  リンカ
４４  デバッガ・シミュレータ
５０  マクロ定義
５１  字句情報
５２  数値情報
５３  マクロ数値化情報
６０  マクロ呼出し状況
６１  マクロ呼出し状況
６２  マクロ呼出し状況
１００  マクロ展開履歴情報
１０１  マクロ展開履歴数値化情報
１０２  マクロ数値化情報
１３１  マクロ展開ソースコード情報
４２１  マクロ展開部
４２２  マクロ展開履歴情報生成部
４２３  マクロ数値化変換部
【図１】
2010257032.tif 000003
【図２】
2010257032.tif 000004
【図３】
2010257032.tif 000005
【図４】
2010257032.tif 000006
【図５】
2010257032.tif 000007
【図６】
2010257032.tif 000008
【図７】
2010257032.tif 000009
【図８】
2010257032.tif 000010
【図９】
2010257032.tif 000011
【図１０】
2010257032.tif 000012
【図１１】
2010257032.tif 000013
【図１２】
2010257032.tif 000014
【図１３】
2010257032.tif 000015
【図１４】
2010257032.tif 000016
【図１５】
2010257032.tif 000017
【図１６】
2010257032.tif 000018
【図１７】
2010257032.tif 000019