説明

プログラムデバッグ装置、デバック方法、及びデバックプログラム

【課題】マクロ定義を展開して生成されるマクロ展開情報のデータサイズを縮小する。
【解決手段】マクロ展開履歴情報生成部422は、ソースプログラム7に含まれるマクロ定義を展開してマクロ展開履歴情報を生成する。マクロ数値化変換部423は、展開されたマクロ定義を字句に分割した字句情報を生成して、字句情報を当該字句情報に対応させて割り当てられた数値情報に変換したマクロ展開履歴数値化情報101と、字句情報と数値情報の対応関係を記録したマクロ数値化情報102とを生成する。マクロ展開部421は、マクロ展開履歴数値化情報101と、マクロ数値化情報102をオブジェクトファイルへ格納する。デバッガ44は、マクロ呼出し状況の表示において、マクロ展開履歴数値化情報101に記録された数値情報を、マクロ数値化情報102に基づいて変換した字句情報を用いて表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムデバッグ装置に関する。
【背景技術】
【0002】
プログラムは、開発工程においてデバッグを行われる。ソースプログラムは、マクロ定義が可能である。しかし、マクロ定義は、ソースプログラムを実行形式プログラムに変換する過程で展開されてしまう。そのため、マクロ定義の情報は、実行形式プログラムのデバッグを行うときには存在しない。マクロ定義は、プログラムの規模が大きく複雑になるにつれて、大規模化、複雑化している。プログラム開発において、デバッグによりマクロ定義の依存関係や展開状況を把握することは重要である。このような、マクロ定義を含むプログラムのデバッグに関する以下のような関連技術が開示されている。
【0003】
特許文献1は、マクロの呼び出し状況が置換された引数やコメント分と共に表示されて、デバックが可能となるプログラムを開示している。特許文献1のプログラムは、ソースファイルからオブジェクトファイルを生成するアセンブル又はコンパイルをコンピュータに実行させ、アセンブル又はコンパイルを実行するときにマクロ定義及びマクロ呼び出しができるアセンブラ又はコンパイラとなるプログラムである。このマクロ定義及びマクロ呼出しを行うときはマクロ呼出しの部分をマクロ定義の内容に従ってオブジェクトファイル内にコード展開し、マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成してオブジェクトファイル内に埋め込む手段をコンピュータに実行させる。特許文献1のプログラムによれば、アセンブル又はコンパイルの際にはマクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成してオブジェクトファイル内に埋め込み、シミュレータ又はエミュレータでは当該引数の置換された状態を表示することができ、引数の置換状況を明らかにすることができる。
【0004】
以下、図面を用いて、特許文献1のプログラムを説明する。図1は、特許文献1のプログラムの処理を示す図である。ソースプログラム11は、マクロ定義とマクロ呼出しを含んでいる。コンパイラ・アセンブラ12は、ソースプログラム11からデバック情報付きのオブジェクトファイル13を作成する。このとき、コンパイラ・アセンブラ12は、ソースプログラム11にマクロ定義及びマクロ呼出しが含まれる場合には、マクロ呼出し部分をマクロ定義の内容に従ってオブジェクトファイル13内にコード展開する。また、コンパイラ・アセンブラ12は、さらにマクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報131を生成して、オブジェクトファイル13内に格納する。リンカ14は、オブジェクトファイル13に対して結合処理を行って実行形式プログラム15を生成する。実行形式プログラム15は、マクロ展開ソースコード情報131を含んでいる。エミュレータ・シミュレータ16は、実行形式プログラム15に基づいてデバックを行う。エミュレータ・シミュレータ16は、マクロ呼出しの1行毎のステップを実行するときに、マクロ展開ソースコード情報131に基づいて、マクロ呼出し部に対応するマクロ引数置換されたマクロ定義を表示する。
【0005】
ここで、図2から図4を用いて、特許文献1による効果の説明を行う。図2は、マクロ定義及びマクロ呼出しを含むソースプログラムの一例を示す図である。図3は、従来技術による図2のソースプログラムにおけるマクロ呼出し状況を示す図である。図4は、特許文献1による図2のソースプログラムにおけるマクロ呼出し状況を示す図である。例えば、図2に示すようなマクロ定義及びマクロ呼出しを含むソースプログラムを例に考える。特許文献1以前では、エミュレータ・シミュレータ16は、マクロ呼出しにおいて、図2に示すようなソースプログラムをそのまま表示するか、あるいは、図3に示すようにマクロ定義の展開後を表示するか、のいずれかを行っていた。これに対して、特許文献1によれば、エミュレータ・シミュレータ16は、実行形式プログラム15に埋め込まれているマクロ展開ソースコード情報を用いて、例えば、図4に示すように、マクロ定義内に書かれたコメント文と共に、マクロ展開状況が分かるようにソース行を表示することができる。
【0006】
また、特許文献2は、ソースプログラム上のマクロチェックを簡易に実現するソースプログラムチェック装置を開示している。
【0007】
特許文献2のソースプログラムチェック装置は、ソースプログラムのチェックを行うチェック装置において、ソースプログラム中で記述されたマクロを対応する命令或いは命令群に展開する際に、当該展開した命令あるいは命令群に対応付けてマクロ情報を記憶する手段と、展開した後のソースプログラムの構文を解析して構文テキストを作成する手段と、作成した構文テキストについてメッセージを出力する際に当該出力するメッセージ中の該当部分に対応付けて上記マクロ情報を出力する手段とを備えることを特徴とする。
【0008】
特許文献2のソースプログラムチェック装置によれば、マクロ置換処理手段は、ソースプログラム中のマクロを対応する命令に置換する際に、マクロ名や、ファイル名や、行数等を、置換後の命令に対応付けてテーブルへ記録しておく。次に、構文テキスト作成手段は、構文テキスト作成時に、命令に対応するマクロ名、ファイル名、行数等を合わせて生成する。そして、メッセージ出力手段が、命令と対応付けてマクロ名、ファイル名、行数等を、メッセージ中に表示する。そのため、ユーザは、表示されたメッセージが、ソースプログラム中のどこにマクロに対するメッセージなのかを混乱することがない。よって、ソースプログラム上のマクロチェックを簡易に行うことが可能となり、作業効率が向上する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−146731号公報
【特許文献2】特開平11−143705号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上記の関連技術は、マクロ呼出し時において呼出し状況を表示するためのマクロ展開情報を、ソースファイルで記述されたマクロ定義のまま記憶している。そのため、マクロ呼出しの箇所毎にマクロ定義の情報を記憶することが必要となる。これでは、大規模なマクロ定義や多数のマクロ呼出しが存在するプログラムの場合、オブジェクトファイルへ膨大な情報量を格納する必要が生じ、多大なメモリ容量やディスクスペースを必要とする。また、コンパイラやアセンブラ等のマクロ展開情報を生成する装置、あるいは、エミュレータやシミュレータ等のマクロ展開情報を表示する装置において、処理待ち時間が増大してしまう。
【課題を解決するための手段】
【0011】
以下に、(発明を実施するための形態)で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、(特許請求の範囲)の記載と(発明を実施するための形態)との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、(特許請求の範囲)に記載されている発明の技術的範囲の解釈に用いてはならない。
【0012】
本発明のプログラムデバッグ装置は、マクロ定義とマクロ呼出しとを含むソースプログラム(7)からオブジェクトファイル(8)を生成するコンパイラ(42)と、オブジェクトファイル(8)から生成される実行形式プログラム(9)を用いてデバッグを実行するデバッガ(44)と、を備える。コンパイラ(42)は、ソースプログラム(7)に含まれるマクロ定義を展開した展開履歴を含むマクロ展開履歴情報(100)を生成するマクロ展開履歴情報生成部(422)と、マクロ展開履歴情報(100)に展開されたマクロ定義を字句に分割した字句情報を生成して、マクロ展開履歴情報(100)に含まれる字句情報を当該字句情報に対応させて割り当てられた数値情報に変換してマクロ展開履歴数値化情報(101)と、字句情報と数値情報の対応関係を記録したマクロ数値化情報(102)と、を生成するマクロ数値化変換部(423)とマクロ展開履歴数値化情報(101)と、マクロ数値化情報(102)をオブジェクトファイルへ格納するマクロ展開部(421)と、を具備する。デバッガ(44)は、マクロ呼出しにおけるマクロ呼出し状況の表示において、マクロ展開履歴数値化情報(101)に記録された数値情報を、マクロ数値化情報(102)に基づいて変換した字句情報を用いて表示する。
【0013】
本発明のプログラムデバッグ方法は、マクロ定義とマクロ呼出しとを含むソースプログラム(7)からオブジェクトファイル(8)を生成するコンパイラ(42)と、オブジェクトファイル(7)から生成される実行形式プログラム(9)を用いてデバッグを実行するデバッガ(44)とを備えるプログラムデバッグ装置において、コンピュータが、ソースプログラム(7)に含まれるマクロ定義を展開した展開履歴を含むマクロ展開履歴情報(100)を生成するステップ(S10)と、コンピュータが、マクロ展開履歴情報(100)に展開されたマクロ定義を字句に分割した字句情報を生成するステップ(S20)と、コンピュータが、マクロ展開履歴情報(100)に含まれる字句情報を当該字句情報に対応させて割り当てられた数値情報に変換するステップ(S60)と、コンピュータが、字句情報と数値情報の対応関係を記録したマクロ数値化情報(102)とを生成するステップ(S50)と、コンピュータが、マクロ展開履歴数値化情報(101)と、マクロ数値化情報(102)をオブジェクトファイルへ格納するステップ(S80)と、コンピュータが、マクロ呼出しにおけるマクロ呼出し状況の表示において、マクロ展開履歴数値化情報(101)に記録された数値情報を、マクロ数値化情報(102)に基づいて変換した字句情報を用いて表示するステップを備える。
【0014】
本発明のプログラムは、上述のプログラムデバッグ方法をコンピュータに実行させる。
【発明の効果】
【0015】
本発明によれば、マクロ定義を展開して生成されるマクロ展開情報のデータサイズを縮小することが可能なプログラムデバッグ装置を提供することができる。これにより、マクロ呼出し毎におけるマクロ呼出し状況の表示処理に要する処理時間を短縮することが可能となる。
【図面の簡単な説明】
【0016】
【図1】特許文献1におけるプログラムの処理を示すブロック図である。
【図2】特許文献1におけるマクロ定義及びマクロ呼出しを含むソースプログラムの一例を示す図である。
【図3】特許文献1以前の従来技術により図2のソースプログラムにおけるマクロ呼出し状況を示す図である。
【図4】特許文献1により図2のソースプログラムにおけるマクロ呼出し状況を示す図である。
【図5】本実施形態におけるプログラムデバッグ装置の構成を示す機能ブロック図である。
【図6】本実施形態におけるコンパイラ・アセンブラ42の構成を示す機能ブロック図である。
【図7】本実施形態におけるソースプログラム7の一例を示す図である。
【図8】本実施形態におけるマクロ展開履歴情報100の一例を示す図である。
【図9】本実施形態におけるマクロ数値化変換部423のマクロ数値化処理を説明する図である。
【図10】本実施形態におけるマクロ展開履歴数値化情報101とマクロ数値化情報102の一例を示す図である。
【図11】本実施形態におけるプログラムデバッグ装置の処理の流れを示す図である。
【図12】本実施形態におけるマクロ展開履歴情報生成部422の行うマクロ展開処理と、マクロ数値化変換部423の行うマクロ数値化処理の動作フローである。
【図13】本実施形態におけるマクロ呼出し箇所におけるマクロ呼出し状況を示す図である。
【図14】本実施形態におけるデバッガ・シミュレータ44が表示するマクロ情報の表示形式を示す図である。
【図15】本実施形態におけるソースプログラム7の一例を示す図である。
【図16】特許文献1による図15のソースプログラム7のマクロ呼出し状況表示を示す図である。
【図17】本実施形態における図14のソースプログラム7のマクロ呼出し状況を示す図である。
【発明を実施するための形態】
【0017】
添付図面を参照して、本発明の実施形態によるプログラムデバッグ装置を以下に説明する。
【0018】
[構成の説明]
はじめに、図5を用いて、本実施形態におけるプログラムデバッグ装置の構成を説明する。図5は、本実施形態におけるプログラムデバッグ装置の構成を示す機能ブロック図である。本実施形態のプログラムデバッグ装置は、図5に示すようなコンピュータへプログラムを導入することにより実現する。本発明のプログラムデバッグ装置は、入力装置1と、処理装置2と、出力装置3と、記憶装置4、データ入出力装置6とを備える。
【0019】
入力装置1は、プログラムデバッグ装置を使用するユーザとの入力インターフェイスである。入力装置1は、キーボードや、マウスで構成される。処理装置2は、プログラムデバッグ装置の機能実行を制御する。処理装置2は、CPU(Central Processing Unit)で構成される。出力装置3は、プログラムデバッグ装置を使用するユーザとの出力インターフェイスである。出力装置3は、LCD(Liquid Crystal Display)で構成される。記憶装置4は、プログラムデバッグ装置の機能を実現するための処理用プログラムや各種データを記憶している。記憶装置5は、RAM(Random Access Memory)や、ROM(Read Only Memory)や、HDD(Hard Disk Drive)等で構成される。データ入出力装置6は、当該コンピュータの外部とデータの入出力を行うためのインターフェイスである。データ入出力装置6は、例えば、CD(Compact Disk)ドライブや、あるいは、有線・無線による通信を行うことが可能な通信インターフェイスである。入力装置1、処理装置2、出力装置3、記憶装置4、データ入出力装置6は、それぞれ、バス7により電気的に接続されており、バス7を介してデータの入出力が可能である。プログラムデバッグ装置の各機能は、記憶装置4に記憶された処理用プログラムを、処理装置2が読込んで実行することにより実現される。
【0020】
なお、記憶装置4の記憶する処理用プログラムは、外部記憶媒体5に記憶することができる。外部記憶媒体5は、例えば、CDである。処理用プログラムは、外部記憶媒体5に記憶することで、持ち運びが可能となる。この場合、外部記憶媒体5に記憶された処理用プログラムを、図5に示すようなコンピュータへ入出力装置6を介して導入することにより、あるいは、外部記憶媒体5から処理用プログラムを起動することにより、プログラムデバッグ装置の機能を実現することができる。
【0021】
記憶装置4は、プログラムデバッグ装置を実現する処理用プログラムであるホストコンピュータ41を備える。ホストコンピュータ41は、コンパイラ・アセンブラ42と、リンカ43と、デバッガ・シミュレータ44とを備える。コンパイラ・アセンブラ42は、ソースプログラム7からオブジェクトファイル8を生成する。リンカ43は、オブジェクトファイル8の結合処理を行って実行形式プログラム9を生成する。デバッガ・シミュレータ44は、実行形式プログラム9に基づいて、デバックやシミュレーションを行う。
【0022】
図6は、本実施形態におけるコンパイラ・アセンブラ42の構成を示す機能ブロック図である。本実施形態のコンパイラ・アセンブラ42は、マクロ展開部421を備える。マクロ展開部421は、マクロ展開履歴情報生成部422と、マクロ数値化変換部423と、を備える。
【0023】
マクロ展開履歴情報生成部422は、ソースプログラム7に含まれるマクロ定義を展開する。さらにマクロ展開履歴情報生成部422は、マクロ定義が引数を含む場合には、マクロ定義を引数で置換する。マクロ展開履歴情報生成部422は、このような処理を行って、マクロ展開履歴情報100を生成する(以下、この処理をマクロ展開処理と呼ぶ。)。マクロ展開履歴情報100は、マクロ呼出しに基づいてマクロ定義を展開する展開過程を含む情報である。
【0024】
図7と図8を使用してマクロ展開履歴情報生成部422のマクロ展開処理を説明する。図7は、本実施形態におけるソースプログラム7の一例を示す図である。例えば、図7に示すようなソースプログラム7を例として説明を行う。図7のソースプログラム7は、マクロ定義とマクロ呼出しを含んでいる。マクロ展開部421のマクロ展開履歴情報生成部422は、ソースプログラム7のマクロ呼出しに基づいてマクロ定義を展開し、引数の置換を行って、マクロ展開履歴情報100を生成する。図8は、本実施形態におけるマクロ展開履歴情報100の一例を示す図である。図8のマクロ展開履歴情報100は、マクロ定義「D」を展開したものである。このように、マクロ展開履歴情報生成部422は、ソースプログラム7に対してマクロ展開処理を行って、図8に示すようなマクロ展開履歴情報100を生成する。
【0025】
マクロ数値化変換部423は、マクロ展開履歴情報生成部422の生成したマクロ展開履歴情報100を数値化して、数値化されたマクロ展開履歴情報(以下、マクロ展開履歴数値化情報101)と、マクロ数値化情報102とを生成する(以下、この処理をマクロ数値化処理と呼ぶ。)。
【0026】
図9と図10とを使用してマクロ数値化変換部423のマクロ数値化処理を説明する。図9は、本実施形態におけるマクロ数値化変換部423のマクロ数値化処理を説明する図である。例えば、図9の符号50に示すようなマクロ定義を例とする。マクロ数値化変換部423は、符号50のマクロ定義を字句に分割する。ここで、字句とは、ソースコードにおいて出現する文字列のなかで意味を持つ最小単位を示す。本実施形態においてマクロ数値化変換部423は、マクロ名以外のマクロ定義を字句に分割して字句情報を生成する。符号51は、マクロ数値化変換部423が、符号50のマクロ定義を分割した後の字句情報を示している。マクロ数値化変換部423は、字句情報を数値情報に変換する。本実施形態においてマクロ数値化変換部423は、マクロ名以外のマクロ定義の字句情報を数字情報に変換する。符号52は、マクロ数値化変換部423により数値情報に変換された字句情報51を示している。マクロ数値化変換部423は、字句情報を数値情報に変換する際に、各字句情報に数値情報を割り当てながら変換を行う。符号53は、このようにマクロ数値化変換部423が各字句情報に割り当てた数値情報の対応関係を示しており、この符号53が、マクロ数値化情報102である。
【0027】
例えば、マクロ数値化変換部423は、「第1引数」に「1」を割り当てている。そのため、符号51の字句情報「arg1」は、符号52の数値情報「1」へ変換される。また、マクロ数値化変換部423は、符号51の字句情報「+」、「100」のように、マクロ名、あるいは引数以外の字句情報の並びを結合する。つまり、字句情報「+」と、「100」とは、1つの字句情報「+100」として扱う。このようにすることで、字句情報に割り当てられる数値情報の数を削減することができる。なお、マクロ数値化変換部423は、このように字句情報を結合して処理することに限定しない。マクロ数値化変換部423は、字句情報を複数個結合して数値情報を割り当てても良いし、全く結合することなく数値情報を割り当てても良い。
【0028】
図10は、本実施形態におけるマクロ展開履歴数値化情報101とマクロ数値化情報102に一例を示す図である。マクロ数値化変換部423は、図8のマクロ展開履歴情報100において、マクロ名以外の字句を字句情報へ分割して、各字句情報へ数値情報を割り当て、字句情報を対応する数値情報に変換してマクロ展開履歴数値化情報101を生成する。図10において、マクロ数値化情報102は、前述の通り、マクロ数値化変換部423が字句情報と、字句情報に割り振った数値情報との対応関係を示している。また、マクロ展開履歴数値化情報101は、マクロ数値化情報102に示される対応関係より数値情報へ変換された図8のマクロ展開履歴情報100を示している。
【0029】
例えば、マクロ数値化変換部423は、図8のマクロ展開履歴情報100の1行目「D:arg1=arg1+100」をマクロ数値化情報102に基づいてマクロ展開履歴数値化情報101の1行目「D:1419」と変換する。ここで、「D:」マクロ名であるので変換されていない。マクロ数値化変換部423は、以下同様に、字句情報に数値情報を割り当ててマクロ数値化情報102を生成しながら、マクロ展開履歴情報100をマクロ数値化情報102へ変換する。マクロ数値化変換部423は、このようにして、マクロ展開履歴情報100からマクロ展開履歴数値化情報101と、マクロ数値化情報102とを生成する。
【0030】
(動作方法の説明)
次に、本実施形態におけるプログラムデバッグ装置の動作方法を説明する。図11は、本実施形態におけるプログラムデバッグ装置の処理の流れを示す図である。
【0031】
まず、プログラムデバッグ装置は、ソースプログラムを入力する。ソースプログラム7は、マクロ定義とマクロ呼出しとを含んでいる。コンパイラ・アセンブラ42は、ソースプログラム7を読込んで、オブジェクトファイル8を生成する。コンパイラ・アセンブラ42のマクロ展開部421の備えるマクロ展開履歴情報生成部422は、オブジェクトファイル8を生成するときに、マクロ展開処理を行う。マクロ展開履歴情報生成部422は、ソースプログラム7に含まれるマクロ定義とマクロ呼出しに基づいてマクロ展開処理を行って、マクロ展開履歴情報100を生成する。マクロ数値化変換部423は、マクロ展開履歴情報生成部422の生成したマクロ展開履歴情報100に対してマクロ数値化処理を行う。マクロ数値化変換部423は、マクロ展開履歴情報100に対してマクロ数値化処理を行ってマクロ展開履歴数値化情報101とマクロ数値化情報102とを生成する。マクロ展開部421は、このようにして生成したマクロ展開履歴数値化情報101と、マクロ数値化情報102とを、マクロ情報10としてオブジェクトファイル8へ格納する。リンカ43は、コンパイラ・アセンブラ42により生成されたオブジェクトファイル8に対して結合処理を行って、実行形式プログラム9を生成する。実行形式プログラム9は、マクロ情報10を含んでいる。デバッガ・シミュレータ44は、実行形式プログラム9を読込んで、デバッグやシミュレーションを行う。
【0032】
ここで、図12を用いて、本実施形態におけるマクロ展開履歴情報生成部422の行うマクロ展開処理と、マクロ数値化変換部423の行うマクロ数値化処理の動作を説明する。図12は、本実施形態におけるマクロ展開履歴情報生成部422の行うマクロ展開処理と、マクロ数値化変換部423の行うマクロ数値化処理の動作フローである。
【0033】
まず、マクロ展開履歴情報生成部422は、マクロ定義を展開してマクロ展開履歴情報100を生成する(ステップS10)。マクロ展開履歴情報生成部422は、ソースプログラム7に含まれるマクロ呼出しに基づいてマクロ定義を展開して、マクロ展開履歴情報100を生成する。マクロ数値化変換部423は、マクロ展開履歴情報100のマクロ定義を字句情報へ分割する(ステップS20)。マクロ数値化変換部423は、マクロ展開履歴情報100の字句情報を数値情報へ変換する(ステップS30)。このとき、マクロ数値化変換部423は、処理対象の字句情報に対する数値情報が割り当てられているかを判定する(ステップS40)。ここで、字句情報に数値情報が割り当てられているとは、処理対象の字句情報に対応する数値情報が、マクロ数値化情報102に記録されていることを意味する。処理対象の字句情報に対して数値情報が割り当てられていない場合、マクロ数値化変換部423は、処理対象の字句情報に数値情報を割り当てる(ステップS50)。マクロ数値化変換部423は、字句情報と字句情報に割り当てた数値情報とを対応させた対応情報を、マクロ数値化情報102へ記録する。マクロ数値化変換部523は、このようにして、字句情報と数値情報との対応関係を記録して、マクロ数値化情報102を生成する。一方、処理対象の字句情報に対して数値情報が割り当てられている場合、マクロ数値化変換部423は、字句情報を字句情報に割り当てられている数値情報へ変換する(ステップS60)。マクロ数値化変換部423は、処理対象の字句情報に対応する数値情報をマクロ数値化情報102から取得して、字句情報から数値情報へ変換する。マクロ数値化変換部423は、全ての字句情報を数値情報へ変換したか判定する(ステップS70)。全ての字句情報を数値情報へ変換していない場合、数値化処理を継続するために、ステップS30へ戻る。一方、全ての字句情報を数値情報へ変換した場合、マクロ展開部421は、生成されたマクロ展開履歴数値化情報101と、マクロ数値化情報102とをオブジェクトファイル8へマクロ情報10として格納する(ステップS80)。以上で、マクロ展開処理と、マクロ数値化処理とは終了となる。
【0034】
図13は、本実施形態におけるマクロ呼出し箇所におけるマクロ呼出し状況を示す図である。マクロ呼出し箇所では、図13の符号60に示すように、マクロ名とマクロ呼出しの引数とのみを表示する。一方、図14は、本実施形態におけるデバッガ・シミュレータ44が表示するマクロ情報の表示形式を示す図である。デバッガ・シミュレータ44は、図14のようにマクロ定義「D」を展開履歴付きで表示する。デバッガ・シミュレータ44は、実行形式プログラム9に含まれるマクロ情報10に基づいて、マクロ数値化情報102を用いて図10に示したマクロ展開履歴数値化情報101を、数値情報から字句情報へ変換して図14のような表示を行う。デバッガ・シミュレータ44は、数値情報を字句情報へ変換を行って表示するだけであるので、処理負荷が少ない。
【0035】
以上が、本実施形態におけるプログラムデバッグ装置の動作方法の説明である。
【0036】
ここまで、本実施形態のプログラムデバッグ装置を説明してきた。本発明のプログラムデバッグ装置は、ソースプログラム7からオブジェクトファイル8を生成するときに、ソースプログラム7に含まれるマクロ定義を展開してマクロ展開履歴数値化情報101と、マクロ数値化情報102とを生成して、オブジェクトファイル8へ格納する。そのため、マクロ展開履歴をマクロ定義の記述のまま使用する場合に比べて、オブジェクトサイズを小さくすることができる。図15は、本実施形態におけるソースプログラム7の一例を示す図である。図15のソースプログラム7は、マクロ定義とマクロ呼出しとを備えている。図16は、特許文献1による図15のソースプログラム7のマクロ呼出し状況表示を示す図である。従来技術である特許文献1によれば、マクロ呼出し箇所毎に符号61相当の情報サイズを消費していくことになる。符号61に対応する情報は、マクロ定義毎の記述をマクロ展開ソースコード情報として記憶しておく必要がある。一方、図17は、本実施形態における図15のソースプログラム7のマクロ呼出し状況を示す図である。本実施形態における、マクロ呼出し箇所毎に符号62(マクロ名と引数の並びのみ)の情報サイズで済む。また、符号62に対応する情報は、マクロ展開履歴数値化情報101と、マクロ数値化情報102とに含まれているため、これらの情報サイズのみで済む。
【0037】
以上が、本実施形態の説明であるが、本実施形態は、以下のようにも変更が可能である。まず、本実施形態において、マクロ情報10は、オブジェクトファイル8に埋め込んでいる。しかし、マクロ情報10は、記憶装置4を構成するメモリや、記憶装置4に記録されるファイル上の情報として記録されても構わない。また、本実施形態において、マクロ数値化変換部423は、マクロ展開履歴情報100のマクロ数値化処理を行いながらマクロ数値化情報102を生成している。しかし、マクロ数値化情報102に記録される情報は、予め共通に使用される字句情報と数値情報との変換情報として、記憶装置4に記録されていてもよい。この場合、マクロ数値化変換部423と、デバッガ・シミュレータ44は、当該変換情報を共通で使用してもよい。このようにすることで、マクロ数値化変換部423は、マクロ数値化処理において、マクロ数値化情報102を生成する必要が無くなる。
【0038】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0039】
1 入力装置
2 処理装置
3 出力装置
4 記憶装置
5 外部記憶媒体
6 データ入出力装置
7 ソースプログラム
8 オブジェクト
9 実行形式プログラム
10 マクロ展開情報
11 ソースプログラム
12 コンパイラ・アセンブラ
13 オブジェクトファイル
14 リンカ
15 実行形式プログラム
16 エミュレータ・シミュレータ
41 ホストコンピュータ
42 コンパイラ・アセンブラ
43 リンカ
44 デバッガ・シミュレータ
50 マクロ定義
51 字句情報
52 数値情報
53 マクロ数値化情報
60 マクロ呼出し状況
61 マクロ呼出し状況
62 マクロ呼出し状況
100 マクロ展開履歴情報
101 マクロ展開履歴数値化情報
102 マクロ数値化情報
131 マクロ展開ソースコード情報
421 マクロ展開部
422 マクロ展開履歴情報生成部
423 マクロ数値化変換部

【特許請求の範囲】
【請求項1】
マクロ定義とマクロ呼出しとを含むソースプログラムからオブジェクトファイルを生成するコンパイラと、
前記オブジェクトファイルから生成される実行形式プログラムを用いてデバッグを実行するデバッガと
を備え、
前記コンパイラは、
前記ソースプログラムに含まれる前記マクロ定義を展開した展開履歴を含むマクロ展開履歴情報を生成するマクロ展開履歴情報生成部と、
前記マクロ展開履歴情報に展開されたマクロ定義を字句に分割した字句情報を生成して、前記マクロ展開履歴情報に含まれる前記字句情報を当該字句情報に対応させて割り当てられた数値情報に変換したマクロ展開履歴数値化情報と、前記字句情報と前記数値情報の対応関係を記録したマクロ数値化情報と、を生成するマクロ数値化変換部と、
前記マクロ展開履歴数値化情報と、前記マクロ数値化情報を前記オブジェクトファイルへ格納するマクロ展開部と
を具備し、
前記デバッガは、前記マクロ呼出しにおける前記マクロ呼出し状況の表示において、前記マクロ展開履歴数値化情報に記録された前記数値情報を、前記マクロ数値化情報に基づいて変換した前記字句情報を用いて表示する
プログラムデバッグ装置。
【請求項2】
請求項1に記載のプログラムデバッグ装置であって、
前記マクロ数値化変換部は、処理を行うべき前記字句情報に前記数値情報が割り当てられているかを前記マクロ数値化情報に基づいて判定して、割り当てられていない場合、当該字句情報に対して任意の数値情報を割り当てて当該字句情報を前記任意の数値情報を用いて変換して前記マクロ展開履歴数値化情報を生成し、割り当てられている場合には、当該字句情報を当該字句情報に対応する前記数値情報へ変換して前記マクロ展開履歴数値化情報を生成すると共に、当該字句情報と前記任意の数値情報との対応関係を前記マクロ数値化情報へ記録して前記マクロ数値化情報を生成する
プログラムデバッグ装置。
【請求項3】
請求項2に記載のプログラムデバッグ装置であって、
前記マクロ数値化変換部は、前記字句情報において、前記マクロ定義に、引数以外の複数の字句が連続して含まれる場合、前記複数の字句を結合して、結合した字句に対して前記数値情報を割り当てる
プログラムデバッグ装置。
【請求項4】
請求項1に記載のプログラムデバッグ装置であって、
前記マクロ数値化情報は、予め前記字句情報と前記数値情報とを対応させて記録している
プログラムデバッグ装置。
【請求項5】
マクロ定義とマクロ呼出しとを含むソースプログラムからオブジェクトファイルを生成するコンパイラと、前記オブジェクトファイルから生成される実行形式プログラムを用いてデバッグを実行するデバッガとを備えるプログラムデバッグ装置において、
コンピュータが、前記ソースプログラムに含まれる前記マクロ定義を展開した展開履歴を含むマクロ展開履歴情報を生成するステップと、
コンピュータが、前記マクロ展開履歴情報に展開されたマクロ定義を字句に分割した字句情報を生成するステップと、
コンピュータが、前記マクロ展開履歴情報に含まれる前記字句情報を当該字句情報に対応させて割り当てられた数値情報に変換するステップと、
コンピュータが、前記字句情報と前記数値情報の対応関係を記録したマクロ数値化情報とを生成するステップと、
コンピュータが、前記マクロ展開履歴数値化情報と、前記マクロ数値化情報を前記オブジェクトファイルへ格納するステップと、
コンピュータが、前記マクロ呼出しにおける前記マクロ呼出し状況の表示において、前記マクロ展開履歴数値化情報に記録された前記数値情報を、前記マクロ数値化情報に基づいて変換した前記字句情報を用いて表示するステップ
を備えるプログラムデバッグ方法。
【請求項6】
請求項5に記載のプログラムデバッグ方法であって、前記数値情報に変換するステップは、
コンピュータが、処理を行うべき前記字句情報に前記数値情報が割り当てられているかを前記マクロ数値化情報に基づいて判定するステップと、
コンピュータが、前記判定において割り当てられていないと判定された場合、当該字句情報に対して任意の数値情報を割り当てて当該字句情報を前記任意の数値情報を用いて変換して前記マクロ展開履歴数値化情報を生成するステップと、
コンピュータが、前記判定において割り当てられている判定された場合、当該字句情報を当該字句情報に対応する前記数値情報へ変換して前記マクロ展開履歴数値化情報を生成すると共に、当該字句情報と前記任意の数値情報との対応関係を前記マクロ数値化情報へ記録して前記マクロ数値化情報を生成するステップと
を含むプログラムデバッグ方法。
【請求項7】
請求項6に記載のプログラムデバッグ方法であって、前記数値情報に変換するステップは、
コンピュータが、前記字句情報において、前記マクロ定義の引数以外の複数の字句情報が連続して含まれる場合、前記複数の字句情報を結合するステップと、
コンピュータが、前記結合された字句情報に対して前記数値情報を割り当てるステップと
を含むプログラムデバッグ方法。
【請求項8】
請求項5に記載のプログラムデバッグ方法であって、
コンピュータが、予め前記字句情報と前記数値情報とを対応させて前記マクロ数値化情報へ記録するステップを
さらに備えるプログラムデバッグ方法。
【請求項9】
請求項5から請求項8までのいずれかに記載のプログラムデバッグ方法をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2010−257032(P2010−257032A)
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願番号】特願2009−103727(P2009−103727)
【出願日】平成21年4月22日(2009.4.22)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】