(57)【要約】【課題】  デバッガを使用することなく且つデバッグ時にプログラムを作り直すことなくデバッグ情報を得る。【解決手段】  ソースプログラム変換部１２は、ソースプログラム１１を第２プログラム言語に変換して中間データ１７を生成し、中間データ１７から処理プログラムを順次読み出し、対話的デバッグルーチン呼出命令を追加して変換後ソースプログラム１３を生成する。さらに、変換後ソースプログラム１３に対話的デバッグルーチンを追加する。こうして得られた変換後ソースプログラム１３をコンパイラ１４で実行形式ファイルに変換し、計算機で実行することによってデバッグ処理を行う。したがって、計算機によって、１つの処理プログラムが実行される毎に、対話的デバッグルーチンが作業者と対話的に実行されて、作業者から入力されたコマンドの解析・実行処理が行われる。こうして、デバッグ作業の効率が向上される。【選択図】図１
2005174045.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ対象のソースプログラムに、デバッグ処理を行うためのデバッグルーチンを追加するソースプログラム変換装置において、
第１プログラム言語で記述された第１ソースプログラムを第２プログラム言語による記述に変換し、中間データとして出力するプログラム言語変換手段と、
上記中間データから上記第１ソースプログラム内の１つのステートメントに相当する処理プログラムを処理順序に従って読み出し、この読み出した各処理プログラムに対話的デバッグルーチン呼出命令を追加して、第２プログラム言語の文法に従って第２ソースプログラムとして出力する対話的デバッグルーチン呼出命令追加手段と、
上記対話的デバッグルーチン呼出命令によって起動されると共に、上記第２プログラム言語で記述されて、デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定することが可能な対話的デバッグルーチンを、上記第２ソースプログラムに追加する対話的デバッグルーチン追加手段
を備えたことを特徴とするソースプログラム変換装置。
【請求項２】
請求項１に記載のソースプログラム変換装置において、
上記対話的デバッグルーチンには、当該対話的デバッグルーチンに停止条件が設定されているか否かを判定し、設定されている場合には上記第２ソースプログラムの実行を停止する停止条件判定処理部が設けられていることを特徴とするソースプログラム変換装置。
【請求項３】
請求項２に記載のソースプログラム変換装置において、
上記対話的デバッグルーチンには、デバッグ作業者によって上記停止条件を設定するコマンドが入力された際に、当該対話的デバッグルーチンに停止条件を設定する停止条件設定処理部が設けられていることを特徴とするソースプログラム変換装置。
【請求項４】
請求項３に記載のソースプログラム変換装置において、
上記対話的デバッグルーチンには、デバッグ作業者によって上記停止条件を変更するコマンドが入力された際に、既に当該対話的デバッグルーチンに設定されている停止条件を変更する停止条件変更処理部が設けられていることを特徴とするソースプログラム変換装置。
【請求項５】
デバッグ対象のソースプログラムに、デバッグ処理を行うためのデバッグルーチンを追加するソースプログラム変換方法において、
第１プログラム言語で記述された第１ソースプログラムを第２プログラム言語による記述に変換して中間データとして出力し、
上記中間データから上記第１ソースプログラム内の１つのステートメントに相当する処理プログラムを処理順序に従って読み出し、この読み出した各処理プログラムに対話的デバッグルーチン呼出命令を追加して、第２プログラム言語の文法に従って第２ソースプログラムとして出力し、
上記対話的デバッグルーチン呼出命令によって起動されると共に、上記第２プログラム言語で記述されて、デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定することが可能な対話的デバッグルーチンを、上記第２ソースプログラムに追加する
ことを特徴とするソースプログラム変換方法。
【請求項６】
コンピュータを、
請求項１におけるプログラム言語変換手段,対話的デバッグルーチン呼出命令追加手段および対話的デバッグルーチン追加手段
として機能させることを特徴とするソースプログラム変換プログラム。
【請求項７】
請求項６に記載のソースプログラム変換プログラムが記録されたことを特徴とするコンピュータ読出し可能なプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、デバッグ対象のソースプログラムを変換するソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体に関する。
【背景技術】
【０００２】
一般に、計算機で実行されるプログラムの開発は次のような流れで行われている。すなわち、先ず、計算機に実行させようとする処理がプログラム言語を用いて記述されたソースプログラムを作成する。通常、上記プログラム言語で記述されたソースプログラムは計算機で直接実行できないため、そのソースプログラムをコンパイラと呼ばれるソフトウエアによって、計算機で直接実行できる実行形式ファイルと呼ばれるものに変換する。そして、上記ソースプログラムの動作確認を、計算機上で上記実行形式ファイルを動作させることによって行う。
【０００３】
こうして動作確認が行われた結果、上記ソースプログラムの動作がその作成者の意図したものと異なる場合には、上記ソースプログラムにバグ(不具合)があるとして、デバッグ(ソースプログラムのどの部分が不具合を発生させたかを調べて修正する作業)を行う。
【０００４】
上記デバッグを行う場合には、デバッガと呼ばれるソフトウエア上で、不具合のある実行形式ファイルを動作させることによって行う。上記デバッガは、実行形式ファイルの任意の処理でその動作を停止させることができ、実行中の実行形式ファイルに相当するソースプログラム内の変数の値を表示することや、停止位置から１ステップずつ実行形式ファイルを動作させることなどができる。こうすることによって、上記ソースプログラム内の不具合の原因を特定することができるのである。
【０００５】
ところが、上記プログラム言語のなかには、その言語用のコンパイラは開発済みであっても、上記デバッガの開発が困難であるためにデバッガが未開発であり、デバッガを使用できない場合がある。このような場合には、当該プログラム言語で記述されたソースプログラムに関して、不具合の原因を特定するのが困難であるという問題がある。
【０００６】
そのために、上記デバッガを使用せずにデバッグを行うことができるプログラム生産システムが提案されている(例えば、特許文献１(特開平５‐２２４９０８号公報)参照)。このプログラム生産システムにおいては、図７に示すように、ソースプログラムを実行形式ファイル(オブジェクトファイル)に変換するコンパイラ２に、ソースプログラム１へのデバッグルーチンの追加の要否を判定するデバッグルーチン追加判定手段７と、追加すべきと判定されたソースプログラムに最も適したデバッグルーチンを生成するデバッグルーチン生成手段８と、生成されたデバッグルーチンのプログラムへの埋め込みを行うデバッグルーチン埋め込み手段１０とを有するデバッグルーチン付加手段４を設けている。
【０００７】
上記構成を有するプログラム生産システムは、以下のように動作する。すなわち、コンパイラ２は、文法解析手段５と翻訳手段６を用いて、読み込んだソースプログラム１の文法解析およびコードの変換処理を行う。その際に、翻訳手段６内でデバッグルーチンの追加が認められた場合には、デバッグルーチン追加判定手段７が起動される。そして、デバッグルーチン追加判定手段７によって、どのようなデバッグルーチンが最も相応しいかが判断されてデバッグルーチン生成手段８が起動される。
【０００８】
そうすると、上記デバッグルーチン生成手段８は、上記デバッグルーチン追加判定手段７によって判断されたデバッグルーチンの種類(例えば、関数に関するものやディスク等の資源に対するアクセスに関するもの等)およびデバッグルーチンデータベース９に基づいて、当該ソースプログラム１に最も適しているデバッグルーチンを生成する。そして、デバッグルーチン埋め込み手段１０によって、翻訳手段６が現在生成中のオブジェクトモジュール３に、このデバッグルーチン生成手段８によって生成されたデバッグルーチンが埋め込まれる。こうして生成されたオブジェクトモジュール３は、リンカによってリンクされてロードモジュール(目的プログラム)が生成される。
【０００９】
こうして生成されたロードモジュールは、上記ソースプログラム１をコンパイルして得られてリンクされたプログラム本体と、各プログラム本体間に挿入されたデバッグルーチンと、から構成されている。そして、このロードモジュールをデバッグする際には、計算機によって、ロードモジュールの先頭からプログラム本体とデバッグルーチンとが交互に順次実行される。そして、各デバッグルーチンを実行した際に得られたデバッグ情報は、ファイルあるいはメモリ領域のデバッグ情報格納領域に蓄えられてユーザに提供される。こうして、上記デバッガを使用することなく、デバッグ情報が得られるのである。
【００１０】
このように、上記特許文献１に開示されたプログラム生産システムにおいては、デバッグ時に上記デバッグ情報を生成してデバッグ情報格納領域に格納するようなデバッグルーチンを、プログラム生産システムの動作時に静的(出来上がったロードモジュールの実行時に変化しない状態)にロードモジュールへ埋め込むようにしている。そのために、予め不具合の原因が推測できる場合にはそれに見合ったデバッグ情報が得られるデバッグルーチンを埋め込むことができ、短時間で不具合の原因を特定することができるのである。
【００１１】
しかしながら、上記特許文献１に開示されたプログラム生産システムには、以下のような問題がある。すなわち、このプログラム生産システムを利用して、上記デバッグルーチンが埋め込まれたロードモジュールのデバッグを計算機上で実行した結果、得られたデバッグ情報では不具合が特定できなかった場合には、再度本プログラム生産システムを利用して、さらに詳しく不具合の原因を調べるためのデバッグルーチンが埋め込まれたロードモジュールを作成する必要がある。
【００１２】
したがって、不具合の原因が特定できない場合には、上記ロードモジュール(オブジェクトモジュール３)にデバッグルーチンを埋め込む処理を試行錯誤しながら変更して、何度も上記ロードモジュールを作り直す必要があり、デバッグ作業の効率が悪くなると言う問題がある。
【特許文献１】特開平５‐２２４９０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
そこで、この発明の課題は、デバッガを使用することなく且つデバッグの際にプログラムを作り直すことなくデバッグ情報を得ることを可能にするソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体を提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するため、この発明のソースプログラム変換装置は、デバッグ対象のソースプログラムにデバッグ処理を行うためのデバッグルーチンを追加するソースプログラム変換装置において、第１プログラム言語で記述された第１ソースプログラムを第２プログラム言語による記述に変換し,中間データとして出力するプログラム言語変換手段と、上記中間データから上記第１ソースプログラム内の１つのステートメントに相当する処理プログラムを処理順序に従って読み出し,この読み出した各処理プログラムに対話的デバッグルーチン呼出命令を追加して,第２プログラム言語の文法に従って第２ソースプログラムとして出力する対話的デバッグルーチン呼出命令追加手段と、上記対話的デバッグルーチン呼出命令によって起動されると共に,上記第２プログラム言語で記述されて,デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定することが可能な対話的デバッグルーチンを,上記第２ソースプログラムに追加する対話的デバッグルーチン追加手段を備えたことを特徴としている。
【００１５】
上記構成によれば、最終的に得られる第２ソースプログラムには、上記第１ソースプログラムの各ステートメントに相当する各処理プログラムと夫々の処理プログラムに追加された対話的デバッグルーチン呼出命令とが交互に配置されると共に、上記夫々の対話的デバッグルーチン呼出命令によって起動される一つの対話的デバッグルーチンが設けられている。そして、上記対話的デバッグルーチンは、デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定することが可能になっている。
【００１６】
したがって、上記対話的デバッグルーチン呼出命令および対話的デバッグルーチンが追加された第２ソースプログラムを実行形式ファイルに変換して、計算機によって実行することによって、上記第２ソースプログラム中の各対話的デバッグルーチン呼出命令が実行される毎に、同一の対話的デバッグルーチンが起動されることになる。そして、対話的デバッグルーチンが実行されるに際して、デバッグ作業者によってコマンドが入力された場合には、この入力コマンドに応じて次に行うべき処理が決定される。
【００１７】
したがって、デバッグ作業者は、計算機によって現在実行中の処理プログラムに応じてソースプログラムの不具合の原因を特定できるようなコマンドを入力するだけで、的確なデバッグ情報を得ることができるのである。その結果、不具合の原因を特定できるまで試行錯誤的に追加するデバッグルーチンを変更する必要が無く、デバッグ作業の効率を飛躍的に向上できるである。
【００１８】
さらに、上記プログラム言語変換手段によって、上記第１プログラム言語で記述された第１ソースプログラムを第２プログラム言語に変換して、中間データを生成するようにしている。したがって、上記第１プログラム言語で記述された第１ソースプログラムをそのまま実行形式ファイルに変換するコンパイラを必要とはしない。そのために、上記第１プログラム言語用のデバッガのみならず第１プログラム言語用のコンパイラも未開発である場合には、既にコンパイラが開発されているプログラム言語を上記第２プログラム言語として選択することによって、的確にデバッグ処理を行うことができるのである。
【００１９】
また、１実施例のソースプログラム変換装置では、上記対話的デバッグルーチンには、当該対話的デバッグルーチンに停止条件が設定されているか否かを判定し、設定されている場合には上記第２ソースプログラムの実行を停止する停止条件判定処理部が設けられている。
【００２０】
この実施例によれば、上記対話的デバッグルーチン呼出命令および対話的デバッグルーチンが追加された第２ソースプログラムを実行形式ファイルに変換して計算機によって実行する際に、上記第２ソースプログラム中の対話的デバッグルーチン呼出命令によって上記対話的デバッグルーチンが起動されて実行されると、当該対話的デバッグルーチンに停止条件が設定されているか否かが判定され、設定されていると判定された場合には当該第２ソースプログラムの実行が停止される。
【００２１】
また、１実施例のソースプログラム変換装置では、上記対話的デバッグルーチンには、デバッグ作業者によって上記停止条件を設定するコマンドが入力された際に、当該対話的デバッグルーチンに停止条件を設定する停止条件設定処理部が設けられている。
【００２２】
この実施例によれば、上記対話的デバッグルーチン呼出命令および対話的デバッグルーチンが追加された第２ソースプログラムを実行形式ファイルに変換して計算機によって実行する際に、上記第２ソースプログラム中の対話的デバッグルーチン呼出命令によって上記対話的デバッグルーチンが起動される。そして、デバッグ作業者によって上記停止条件を設定するコマンドが入力されると、上記停止条件設定処理部によって当該対話的デバッグルーチンに停止条件が設定される。その結果、次回以降の対話的デバッグルーチンの実行時であって、上記停止条件判定処理部によって停止条件が設定されていると判定され、且つ、その停止条件が当該第２ソースプログラムにおける現在の行での停止である場合には、当該第２ソースプログラムの実行が停止される。
【００２３】
また、１実施例のソースプログラム変換装置では、上記対話的デバッグルーチンには、デバッグ作業者によって上記停止条件を変更するコマンドが入力された際に、既に当該対話的デバッグルーチンに設定されている停止条件を変更する停止条件変更処理部が設けられている。
【００２４】
この実施例によれば、上記対話的デバッグルーチン呼出命令および対話的デバッグルーチンが追加された第２ソースプログラムを実行形式ファイルに変換して計算機によって実行する際に、上記第２ソースプログラム中の対話的デバッグルーチン呼出命令によって上記対話的デバッグルーチンが起動される。そして、デバッグ作業者によって上記停止条件を変更するコマンドが入力されると、上記停止条件変更処理部によって、既に当該対話的デバッグルーチンに設定されている停止条件が変更される。その結果、上記変更前の停止条件によって指定されていた当該第２ソースプログラムの行において上記対話的デバッグルーチンが実行された際には、上記停止条件判定処理部によって停止条件が設定されていないと判定されて当該第２ソースプログラムの実行が続行される。
【００２５】
また、この発明のソースプログラム変換方法は、デバッグの対象のソースプログラムにデバッグ処理を行うためのデバッグルーチンを追加するソースプログラム変換方法において、第１プログラム言語で記述された第１ソースプログラムを第２プログラム言語による記述に変換して中間データとして出力し、上記中間データから上記第１ソースプログラム内の１つのステートメントに相当する処理プログラムを処理順序に従って読み出し,この読み出した各処理プログラムに対話的デバッグルーチン呼出命令を追加して,第２プログラム言語の文法に従って第２ソースプログラムとして出力し、上記対話的デバッグルーチン呼出命令によって起動されると共に,上記第２プログラム言語で記述されて,デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定することが可能な対話的デバッグルーチンを,上記第２ソースプログラムに追加することを特徴としている。
【００２６】
上記構成によれば、第２ソースプログラムに追加された対話的デバッグルーチンが計算機によって実行されるに際して、デバッグ作業者は、現在実行中の処理プログラムに応じてソースプログラムの不具合の原因を特定できるようなコマンドを入力するだけで、的確なデバッグ情報を得ることができる。したがって、不具合の原因を特定できるまで試行錯誤的に追加するデバッグルーチンを変更する必要が無く、デバッグ作業の効率を飛躍的に向上できる。
【００２７】
さらに、上記第１プログラム言語で記述された第１ソースプログラムをそのまま実行形式ファイルに変換するコンパイラを必要とはしない。そのために、上記第１プログラム言語用のコンパイラが未開発である場合には、既にコンパイラが開発されているプログラム言語を上記第２プログラム言語として選択することによって、的確にデバッグ処理を行うことができる。
【００２８】
また、この発明のソースプログラム変換プログラムは、コンピュータを、この発明のソースプログラム変換装置におけるプログラム言語変換手段,対話的デバッグルーチン呼出命令追加手段および対話的デバッグルーチン追加手段として機能させる。
【００２９】
上記構成によれば、第１プログラム言語で記述された第１ソースプログラムを、実行形式ファイルに変換して、計算機によって実行することによって、デバッガを使用することなく且つデバッグの際にプログラムを作り直すことなくデバッグ情報を得ることができるのでデバッグ作業の効率を飛躍的に向上でき、上記第１プログラム言語用のコンパイラが未開発の場合でも的確にデバッグ処理を行うことができる、第２ソースプログラムに変換することができる。
【００３０】
また、この発明のプログラム記録媒体は、この発明のソースプログラム変換プログラムが記録されている。
【００３１】
上記構成によれば、コンピュータによって読み出して実行することによって、第１プログラム言語で記述された第１ソースプログラムを、実行形式ファイルに変換して計算機上で実行することによって、デバッガを使用することなく且つデバッグの際にプログラムを作り直すことなくデバッグ情報を得ることができるのでデバッグ作業の効率を飛躍的に向上でき、上記第１プログラム言語用のコンパイラが未開発の場合でも的確にデバッグ処理を行うことができる、第２ソースプログラムに変換することができる。
【発明の効果】
【００３２】
以上より明らかなように、この発明によれば、第１プログラム言語で記述された第１ソースプログラムに基づいて、第１ソースプログラムの各ステートメントに相当する各処理プログラムと夫々の処理プログラムに追加された対話的デバッグルーチン呼出命令とが交互に配置されると共に、上記夫々の対話的デバッグルーチン呼出命令によって呼び出されて起動される一つの対話的デバッグルーチンが設けられており、上記対話的デバッグルーチンは、デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定することが可能になっている、第２ソースプログラムを得ることができる。
【００３３】
したがって、得られた上記第２ソースプログラムを実行形式ファイルに変換して計算機によって実行することによって、デバッガを使用することなく且つデバッグの際にプログラムを作り直すことなくデバッグ情報を得ることができ、デバッグ作業の効率を飛躍的に向上でき、上記第１プログラム言語用のコンパイラが未開発の場合でも的確にデバッグ処理を行うことができる。
【発明を実施するための最良の形態】
【００３４】
以下、この発明を図示の実施の形態により詳細に説明する。図１は、本実施の形態のソースプログラム変換装置における機能的構成を示すブロック図である。図１において、ソースプログラム格納部１１には、第１プログラム言語で記述されたソースプログラムが格納されている。尚、以下においては、説明の便宜上、ソースプログラム格納部１１に格納された各ソースプログラムに対しても、ソースプログラム格納部１１と同じ符号「１１」を付加することにする。また、変換後ソースプログラム格納部１３には、ソースプログラム変換部１２によって変換されると共に、第２プログラム言語で記述された変換後ソースプログラムが格納される。尚、以下においては、変換後ソースプログラム格納部１３に格納された各変換後ソースプログラムに対しても、変換後ソースプログラム格納部１３と同じ符号「１３」を付加することにする。また、コンパイラ１４は、変換後ソースプログラム１３を実行形式ファイルに変換して実行形式ファイル格納部１５に格納する。こうして得られた実行形式ファイルは、図示しない計算機上で実行される。
【００３５】
上記ソースプログラム変換部１２は、プログラム言語変換手段１６,中間データ格納部１７,対話的デバッグルーチン呼出命令追加手段１８および対話的デバッグルーチン追加手段１９から構成される。
【００３６】
上記プログラム言語変換手段１６は、上記ソースプログラム格納部１１から読み出されたソースプログラム１１を、既知の方法によって第２プログラム言語の処理プログラムに変換し、中間データとして中間データ格納部１７に格納する。尚、以下においては、中間データ格納部１７に格納された中間データに対しても、中間データ格納部１７と同じ符号「１７」を付加することにする。対話的デバッグルーチン呼出命令追加手段１８は、中間データ格納部１７から、ソースプログラム１１内の１つのステートメントに対応する処理プログラムを処理順序に従って読み出し、この読み出された処理プログラムに対話的デバッグルーチンを呼び出す命令(第２プログラム言語で記述された対話的デバッグルーチン呼出命令)を追加して、第２プログラム言語の文法に従って変換後ソースプログラム格納部１３に格納する。対話的デバッグルーチン追加手段１９は、第２プログラム言語で記述された対話的デバッグルーチンを、変換後ソースプログラム１３に追加する。
【００３７】
ここで、上記機能的構成を有するソースプログラム変換装置の具体的ハードウェア構成は、後述する各種の処理を実行するプログラムを含む各種プログラムを記憶するプログラムメモリ、各種情報を記憶するデータメモリ、インターネット等の通信ネットワークと接続する通信Ｉ/Ｆ、入力装置、出力装置、表示装置、外部記録媒体がセットされてこの外部記録媒体をアクセスする外部補助記憶装置、上記プログラムメモリ,データメモリ,通信Ｉ/Ｆ,入力装置,出力装置,表示装置および外部補助記憶装置等を制御して、プログラム言語の変換や対話的デバッグルーチン呼出命令追加や対話的デバッグルーチン追加等を実行するＣＰＵ(中央演算処理装置)等で成る。
【００３８】
すなわち、上記プログラム言語変換手段１６,対話的デバッグルーチン呼出命令追加手段１８,対話的デバッグルーチン追加手段１９およびコンパイラ１４は上記ＣＰＵで構成され、ソースプログラム格納部１１,中間データ格納部１７,変換後ソースプログラム格納部１３および実行形式ファイル格納部１５は上記データメモリや外部補助記憶装置で構成されるのである。また、上記ＣＰＵは、上述した各部１６,１８,１９,１４による本実施の形態に係る処理動作の他に、演算・判断処理,計時処理および入出力処理等の各種の処理動作をも行うようになっている。
【００３９】
図２は、上記ソースプログラム変換部１２によって実行されるソースプログラム変換処理動作のフローチャートである。以下、図２に従って、ソースプログラム変換処理動作について詳細に説明する。
【００４０】
ステップＳ1で、上記プログラム言語変換手段１６によって、ソースプログラム格納部１１から上記第１プログラム言語で記述されたソースプログラム１１が読み出される。そして、上記第２プログラム言語の処理プログラムに変換され、中間データ１７として中間データ格納部１７に格納される。
【００４１】
ステップＳ2で、上記対話的デバッグルーチン呼出命令追加手段１８によって、中間データ格納部１７からソースプログラム１１における１つのステートメントに対応する処理プログラムが読み出される。さらに、ステップＳ3で、上記読み出された処理プログラムに対話的デバッグルーチン呼出命令が追加される。さらに、ステップＳ4で、上記呼出命令が追加された処理プログラムが、第２プログラム言語の文法に従って、変換後ソースプログラム格納部１３に格納される。さらに、ステップＳ5で、中間データ格納部１７に格納されている中間データ１７中の総ての処理プログラムに対する処理が終了したか否かが判別される。その結果、中間データ格納部１７に未処理の処理プログラムが残っている場合は、上記ステップＳ2に戻って、次の処理プログラムに対する処理に移行する。一方、中間データ格納部１７に未処理の処理プログラムが残っていない場合は、ステップＳ6に進む。
【００４２】
ここで、上記プログラム言語変換手段１６によるソースプログラム１１の中間データ１７への変換と、対話的デバッグルーチン呼出命令追加手段１８による対話的デバッグルーチン呼出命令の追加とについて、具体例を上げて説明する。図３は、ソースプログラム１１,中間データ１７および対話的デバッグルーチン呼出命令が追加された変換後ソースプログラム１３の具体例を示す。図３において、ソースプログラム１１内のステートメント２１,２２が、プログラム言語変換手段１６によって、第２プログラム言語の処理プログラム２３,２４に変換されて中間データ１７が生成される。そして、対話的デバッグルーチン呼出命令追加手段１８によって、中間データ１７における処理プログラム２３,２４が１つずつ読み出され、第２プログラム言語で記述された対話的デバッグルーチン呼出命令２５,２６が追加されて、変換後ソースプログラム１３として出力されるのである。
【００４３】
ステップＳ6で、上記対話的デバッグルーチン追加手段１９によって、上記対話的デバッグルーチン呼出命令追加手段１８からの対話的デバッグルーチン呼出命令の追加処理が終了した旨の情報を受けて、上記変換後ソースプログラム格納部１３に格納された変換後ソースプログラム１３に対して第２プログラム言語で記述された対話的デバッグルーチンが追加される。そうした後、ソースプログラム変換処理動作を終了する。
【００４４】
図４は、上記対話的デバッグルーチンの具体例を示す。対話的デバッグルーチンは上述したように第２プログラム言語で記述されており、その処理としては、停止条件判定処理部３１,コマンド受付処理部３２およびコマンド解析・実行処理部３３がある。尚、３４〜３７は上記コマンドの解析結果に応じた実行を行う各処理部である。
【００４５】
上述のようなソースプログラム変換処理動作によって生成された変換後ソースプログラム１３の構造は、図５に示すようになる。図５において、４１a〜４１eは、プログラム言語変換手段１６によって変換されたソースプログラム１１の変換結果であり、一つ一つはソースプログラム１１内の各ステートメントに対応した処理プログラムである。また、４２a〜４２dは、対話的デバッグルーチン呼出命令追加手段１８によって追加された対話的デバッグルーチン呼出命令である。そして、４３は、対話的デバッグルーチン追加手段１９によって追加された対話的デバッグルーチンである。
【００４６】
上記構成を有する変換後ソースプログラム１３は、コンパイラ１４によって上記実行形式ファイルに変換され、計算機上において実行されることによってデバッグ処理が行われる。その場合における実行形式ファイルに変換された変換後ソースプログラム(以下、説明の都合上、実行形式ファイルに変換後の変換後ソースプログラムにも変換前の変換後ソースプログラム１３と同じ符号「１３」を付加することにする)に対する実行は、変換後ソースプログラム１３における各ステートメントに対応した処理プログラム４１a〜４１eのうち１つのステートメントに対応する処理プログラム４１が実行される毎に、実行された処理プログラム４１に追加されている対話的デバッグルーチン呼出命令４２が実行されて、同一の対話的デバッグルーチン４３が呼び出される(つまり、起動される)のである。
【００４７】
次に、上記呼び出された対話的デバッグルーチン４３による対話的デバッグ処理動作について説明する。図６は、上記対話的デバッグ処理動作のフローチャートである。以下、図４に示す対話的デバッグルーチンの具体例と図６に示すフローチャートとに従って、対話的デバッグ処理動作について具体的に説明する。ここで、「対話的に」とは、「デバッグ作業者によって入力されるコマンドを受けて次に行うべき処理を決定する」ことを意味する。変換後ソースプログラム１３における処理プログラム４１の実行中において、対話的デバッグルーチンが呼び出されると、上記対話的デバッグ処理動作がスタートする。
【００４８】
ステップＳ11で、上記停止条件判定処理部３１によって、ブレーク条件が判定される。つまり、対話的デバッグルーチン４３に停止条件が設定されているか否かが判定される。さらに、ステップＳ12で、ブレーク条件の判定結果に従って、変換後ソースプログラム１３に対する実行を現在の行で停止するか否かが判別される。その結果、現在の行で停止しない場合には、対話的デバッグ処理動作を終了して、次の処理プログラム４１の実行にリターンする。一方、現在の行で停止する場合にはステップＳ13に進む。
【００４９】
尚、上記対話的デバッグルーチン４３が呼び出される毎に変換後ソースプログラム１３に対する実行を停止させる場合には、対話的デバッグルーチン４３中に停止条件判定処理部３１を設けなくても良い。その場合には、図６に示すフローチャートにおける上記ステップＳ11およびステップＳ12が無くなるため、対話的デバッグルーチン４３に停止条件が設定されているか否かが関わらず、ステップＳ13に進むことになる。
【００５０】
ステップＳ13で、上記コマンド受付処理部３２によって、作業者からの入力コマンドが受け付けられる。ステップＳ14で、コマンド解析・実行処理部３３によって、上記受け付けられたコマンドが解析・実行される。その場合、例えば、現在実行中の処理プログラム４１(つまり、ソースプログラム１１の現在のステートメント)中の変数の値を参照するコマンドが入力された場合には、コマンド解析・実行処理部３３における「変数の表示」処理部３４によって、現在実行中の処理プログラム４１中の対応する変数の値が表示された後、ステップＳ15に進む。また、変換後ソースプログラム１３の停止条件を設定するコマンドまたは停止条件を変更するコマンドが入力された場合には、コマンド解析・実行処理部３３における「停止条件の設定」処理部３５または「停止条件の変更」処理部３６によって、対話的デバッグルーチン４３に対して停止条件の設定または変更が行われた後、ステップＳ15に進む。また、変換後ソースプログラム１３の実行を続行するコマンドが入力された場合には、コマンド解析・実行処理部３３における「プログラム続行」処理部３７によってそのままステップＳ15に進む。
【００５１】
ステップＳ15で、上記コマンド解析・実行処理部３３によって、上記ステップＳ14において実行された処理は「プログラム続行」であるか否かが判別される。その結果、プログラム続行である場合には、対話的デバッグ処理動作が終了されて、次の処理プログラム４１の実行にリターンする。一方、プログラム続行でない場合には、上記ステップＳ13に戻って作業者からの次の入力コマンドが受け付けられる。こうして、作業者から上記変換後ソースプログラム１３の実行を続行するコマンドが入力されるまでは、上記ステップＳ13およびステップＳ14が繰り返されるのである。
【００５２】
尚、上記変換後ソースプログラム１３の実行を続行するコマンドが入力されて変換後ソースプログラム１３の実行が再開されると、次に対話的デバッグルーチン呼出命令が実行されるまで変換後ソースプログラム１３の実行が継続される。そして、上記対話的デバッグルーチン呼出命令により対話的デバッグルーチンが呼び出されて実行された場合に、当該対話的デバッグルーチンに上記停止条件が設定されていれば、変換後ソースプログラム１３の実行が停止される。一方、上記停止条件が設定されていなければ、変換後ソースプログラム１３は、次に停止条件が設定された対話的デバッグルーチンが呼び出されて実行されるまで、停止することなく実行されるのである。
【００５３】
以上のごとく、本実施の形態においては、上記ソースプログラム変換部１２によって、ソースプログラム１１を第２プログラム言語に変換して中間データ１７を生成する。そして、ソースプログラム１１内の各ステートメントに対応する処理プログラムを中間データ１７から順次読み出し、対話的デバッグルーチン呼出命令を追加することによって、変換後ソースプログラム１３を生成する。さらに、変換後ソースプログラム１３に、上記第２プログラム言語で記述されると共に、停止条件判定処理部３１,コマンド受付処理部３２および各種入力コマンドの解析・実行処理を行うコマンド解析・実行処理部３３が設けられた対話的デバッグルーチンを追加する。そして、対話的デバッグルーチン呼出命令および対話的デバッグルーチンが付加された変換後ソースプログラム１３を実行形式ファイルに変換して計算機によって実行することによって、デバッグ処理を行うようにしている。
【００５４】
そして、計算機上で変換後ソースプログラム１３を実行することによって、ソースプログラム１１内の１つのステートメントに対応する処理プログラムが実行される毎に、対話的デバッグルーチンが作業者と対話的に実行されて、作業者によって入力されたコマンドの解析・実行処理が１つの対話的デバッグルーチンによって行われる。
【００５５】
したがって、特定の実行処理用のデバッグルーチンを埋め込む特許文献１の場合のように、不具合の原因が特定できるまで変換後ソースプログラム１３に試行錯誤的にデバッグルーチンを埋め込む処理を行う必要が無く、デバッグ作業の効率を向上できる。さらに、上記対話的デバッグルーチンは、作業者によって入力された種々のコマンドを解析して実行するので、デバッグ対象のソースプログラムにおける各ステートメントに応じたデバッグ情報を的確に得ることができるのである。
【００５６】
また、上記プログラム言語変換手段１６によって、計算機に実行させる処理を記述するための上記第１プログラム言語を上記第２プログラム言語に変換するようにしている。そして、コンパイラ１４によって、第２プログラム言語で記述されたソースプログラムを実行形式ファイルに変換するようにしている。したがって、本実施の形態においては、上記第１プログラム言語で記述されたソースプログラムを実行形式ファイルに変換するコンパイラを必要とはしないのである。すなわち、本実施の形態によれば、上記第２プログラム言語として、既にコンパイラが開発されているプログラム言語を選択することによって、例え、上記第１プログラム言語用のデバッガのみならず第１プログラム言語用のコンパイラも未開発の場合であっても、的確にデバッグ処理を行うことができるのである。
【００５７】
尚、上記実施の形態における上記第１プログラム言語と第２プログラム言語とは、例えばＣ言語等の同じプログラム言語であっても構わない。
【００５８】
また、上記実施の形態においては、上記対話的デバッグルーチン呼出命令追加手段１８は、中間データ１７から読み出したソースプログラム１１における１つのステートメントに対応する処理プログラムの後に対話的デバッグルーチン呼出命令を付加するようにしている。しかしながら、当該処理プログラムの前に対話的デバッグルーチン呼出命令を付加して、変換後ソースプログラム１３に出力するようにしても構わない。
【００５９】
また、上記実施の形態においては、上記対話的デバッグルーチンでは、変数の値を参照するコマンドと変換後ソースプログラム１３の停止条件を設定・変更するコマンドとを実行するようにしているが、上記以外のコマンドを実行可能にしてもよい。
【００６０】
ところで、上記実施の形態における上記プログラム言語変換手段１６,対話的デバッグルーチン呼出命令追加手段１８,対話的デバッグルーチン追加手段１９およびコンパイラ１４としての機能は、プログラム記録媒体に記録されたソースプログラム変換プログラムによって実現される。上記実施の形態における上記プログラム記録媒体は、ＲＯＭ(リード・オンリ・メモリ)でなるプログラムメディアである。あるいは、上記外部補助記憶装置に装着されて読み出されるプログラムメディアであってもよい。尚、何れの場合においても、プログラムメディアからソースプログラム変換プログラムを読み出すプログラム読み出し手段は、上記プログラムメディアに直接アクセスして読み出す構成を有していてもよいし、ＲＡＭ(ランダム・アクセス・メモリ)に設けられたプログラム記憶エリア(図示せず)にダウンロードし、上記プログラム記憶エリアにアクセスして読み出す構成を有していてもよい。尚、上記プログラムメディアから上記ＲＡＭのプログラム記憶エリアにダウンロードするためのダウンロードプログラムは、予め本体装置に格納されているものとする。
【００６１】
ここで、上記プログラムメディアとは、本体側と分離可能に構成され、磁気テープやカセットテープ等のテープ系、フロッピーディスク,ハードディスク等の磁気ディスクやＣＤ(コンパクトディスク)‐ＲＯＭ,ＭＯ(光磁気)ディスク,ＭＤ(ミニディスク),ＤＶＤ(ディジタル多用途ディスク)等の光ディスクのディスク系、ＩＣ(集積回路)カードや光カード等のカード系、マスクＲＯＭ,ＥＰＲＯＭ（紫外線消去型ＲＯＭ),ＥＥＰＲＯＭ(電気的消去型ＲＯＭ),フラッシュＲＯＭ等の半導体メモリ系を含めた、固定的にプログラムを坦持する媒体である。
【００６２】
また、上記実施の形態におけるソースプログラム変換装置は、インターネット等の通信ネットワークと通信Ｉ/Ｆを介して接続可能な構成を有している場合には、上記プログラムメディアは、通信ネットワークからのダウンロード等によって流動的にプログラムを坦持する媒体であっても差し支えない。尚、その場合における上記通信ネットワークからダウンロードするためのダウンロードプログラムは、予め本体装置に格納されているものとする。あるいは、別の記録媒体からインストールされるものとする。
【００６３】
尚、上記記録媒体に記録されるものはプログラムのみに限定されるものではなく、データも記録することが可能である。
【産業上の利用可能性】
【００６４】
本発明のソースプログラム変換装置は、第１プログラム言語で記述されたソースプログラムから入力コマンドに応じた処理を実行できる１つのデバッグルーチンが付加されると共に第２プログラム言語で記述された変換後ソースプログラムを生成するものであり、デバッガを使用せずにソースプログラムのデバッグを行う際に用いることができる。
【図面の簡単な説明】
【００６５】
【図１】この発明のソースプログラム変換装置における概略構成を示すブロック図である。
【図２】図１におけるソースプログラム変換部によって実行されるソースプログラム変換処理動作のフローチャートである。
【図３】ソースプログラム,中間データおよび対話的デバッグルーチン呼出命令が追加された変換後ソースプログラムの具体例を示す図である。
【図４】対話的デバッグルーチンの具体例を示す図である。
【図５】変換後ソースプログラムの構造を示す図である。
【図６】対話的デバッグ処理動作のフローチャートである。
【図７】従来のプログラム生産システムにおけるブロック図である。
【符号の説明】
【００６６】
１１…ソースプログラム格納部,ソースプログラム、
１２…ソースプログラム変換部、
１３…変換後ソースプログラム格納部,変換後ソースプログラム、
１４…コンパイラ、
１５…実行形式ファイル格納部、
１６…プログラム言語変換手段、
１７…中間データ格納部,中間データ、
１８…対話的デバッグルーチン呼出命令追加手段、
１９…対話的デバッグルーチン追加手段、
２１,２２…ステートメント、
２３,２４,４１a〜４１e…処理プログラム、
２５,２６,４２a〜４２d…対話的デバッグルーチン呼出命令、
３１…停止条件判定処理部、
３２…コマンド受付処理部、
３３…コマンド解析・実行処理部、
３４…変数の表示処理部、
３５…停止条件の設定処理部、
３６…停止条件の変更処理部、
３７…プログラム続行処理部、
４３…対話的デバッグルーチン。
【図１】
2005174045.tif 000003
【図２】
2005174045.tif 000004
【図３】
2005174045.tif 000005
【図４】
2005174045.tif 000006
【図５】
2005174045.tif 000007
【図６】
2005174045.tif 000008
【図７】
2005174045.tif 000009