JPH06314221A - コンパイル方式 - Google Patents

コンパイル方式

Info

Publication number
JPH06314221A
JPH06314221A JP5105213A JP10521393A JPH06314221A JP H06314221 A JPH06314221 A JP H06314221A JP 5105213 A JP5105213 A JP 5105213A JP 10521393 A JP10521393 A JP 10521393A JP H06314221 A JPH06314221 A JP H06314221A
Authority
JP
Japan
Prior art keywords
execution log
execution
control information
option
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5105213A
Other languages
English (en)
Inventor
Yushi Fukuchi
雄史 福地
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP5105213A priority Critical patent/JPH06314221A/ja
Publication of JPH06314221A publication Critical patent/JPH06314221A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 ソースプログラムを修正することなく、ソー
スプログラム中の任意の箇所に指定実行ログ採取関数を
呼び出すコードを自動的に挿入した目的コードファイル
を生成するコンパイル方式を提供する。 【構成】 本発明におけるコンパイル方式を使用したコ
ンパイラ52は、オプションに実行ログ採取オプション
が指定されているかどうかを判定するオプション判定部
52と、実行ログ採取オプションに指定された実行ログ
制御情報ファイル4から実行ログ制御情報を読み込み解
析する実行ログ制御ファイル解析部56と、実行ログ制
御情報に基づき、ソースプログラムの実行ログ採取関数
を挿入する箇所を判定する実行ログ採取関数呼び出し判
定部58と、実行ログ採取関数を呼び出すコードを生成
する実行ログ採取関数呼び出し命令生成部59と、から
成り、目的コードファイル30を生成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンパイル方式、特
に、ソースプログラムを変更することなく実行ログ採取
関数をプログラム内部の任意の位置に自動的に組み込み
実行ログ情報を得るコンパイル方式に関する。
【0002】
【従来の技術】図3は、特開平4−287134号公報
に記載されている従来のコンパイル方式による実行ログ
採取方法のコンパイラのブロック図であり、同時に処
理、データの流れも示した図である。図3において、1
はコンパイルされるべきソースプログラムが格納されて
いるプログラムソースファイル、2はコンパイラ、3は
コンパイラ2によるコンパイルの結果得られる目的コー
ドファイルである。5はオプションが指定されているか
どうかを判定するオプション判定部、7はプログラムソ
ースファイル1をコード化するコード生成部、8はコー
ド生成部7により生成されたコードが関数呼び出しのコ
ードかどうかを判定する実行ログ採取関数呼び出し判定
部、9は実行ログ採取関数呼び出し命令を生成する実行
ログ採取関数呼び出し命令生成部である。
【0003】次に図3を用いて従来のコンパイラ2の内
部処理の手順を説明する。
【0004】ユーザは、作成したソースプログラムの実
行状況を調べるためにそのプログラムの実行状況をログ
情報として採取して調査する手法をとる場合、実行ログ
情報採取対象となる作成したプログラムソースファイル
1に実行ログ採取オプションをオプションとして指定し
てコンパイルする。コンパイラ2は、オプション判定部
5において、まず実行ログ採取オプションが指定されて
いるかを判定する。その後、コード生成部7において、
通常の構文解析処理を行い、最後にコード生成処理を行
う。ここで、実行ログ採取オプションが指定されていれ
ば、実行ログ採取関数呼び出し判定部8において、生成
されたコードが実行ログ採取関数呼び出しのコードかど
うかを判定する。実行ログ採取関数呼び出しのコードで
あれば、実行ログ採取関数呼び出し命令生成部9におい
て、実行ログ採取関数呼び出し命令を生成して、目的コ
ードファイル3を生成する。
【0005】
【発明が解決しようとする課題】従来の実行ログ情報採
取機能を有するコンパイル方式は、実行ログ情報を得る
ためには、予めソースプログラムの中に実行ログ採取関
数を呼び出すように指定する必要があるので、ソースプ
ログラムの中の実行ログ採取の対象となる位置及びその
位置で呼び出される実行ログ採取関数が限定されてしま
うという問題があった。
【0006】また、ソースプログラムの中に実行ログ採
取関数を指定する際、ユーザ自身によって必要な位置に
必要な実行ログ採取関数の呼び出し文をソースプログラ
ム中に追加あるいは変更を行わなくてはならず、その時
間及び手間がかかるという問題があった。
【0007】更に、実行ログ情報採取終了後には再度ソ
ースプログラムを修正してこの挿入された実行ログ採取
関数を削除する作業が必要となり、この作業により新た
なコーディングミスが発生してしまうなどの問題があっ
た。
【0008】この発明は上記のような課題を解消するた
めになされたもので、ソースプログラムを修正すること
なく、ソースプログラム中の任意の箇所に指定実行ログ
採取関数を呼び出すコードを自動的に挿入した目的コー
ドファイルを生成するコンパイル方式を提供することを
目的とする。
【0009】
【課題を解決するための手段】以上の目的を達成するた
めに、本発明に係るコンパイル方式は、ソースプログラ
ムの実行におけるログ情報を採取するための目的コード
を生成するコンパイル方式において、コンパイラ起動時
に指定されたオプションを解析し、実行ログ採取オプシ
ョンが指定されているかどうかを判定するオプション判
定手段と、前記実行ログ採取オプションに指定された実
行ログ制御情報ファイルから実行ログ制御情報を読み込
み解析する実行ログ制御ファイル解析手段と、前記実行
ログ制御ファイル解析手段により解析された前記実行ロ
グ制御情報に基づき、前記ソースプログラムの実行ログ
採取関数を挿入する箇所を判定する実行ログ採取関数呼
び出し判定手段と、前記実行ログ採取関数呼び出し判定
手段により指定された箇所に挿入する前記実行ログ採取
関数を呼び出すコードを生成する実行ログ採取関数呼び
出し命令生成手段と、を有することを特徴とする。
【0010】また、他の発明によれば、ソースプログラ
ムの実行におけるログ情報を採取するための目的コード
を生成するコンパイル方式において、コンパイラ起動時
に指定されたオプションを解析し、実行ログを採取する
かどうかを判定するオプション判定手段と、前記オプシ
ョンに指定された実行ログ制御情報に基づき、前記プロ
グラムの実行ログ採取関数を挿入する箇所を判定する実
行ログ採取関数呼び出し判定手段と、前記実行ログ採取
関数呼び出し判定手段により指定された箇所に挿入する
前記実行ログ採取関数を呼び出すコードを生成する実行
ログ採取関数呼び出し命令生成手段と、を有することを
特徴とする。
【0011】更に、他の発明によれば、上記発明におけ
るコンパイル方式において、前記実行ログ制御情報に
は、1ないし複数の実行ログ制御情報ファイル名が含ま
れていることを特徴とする。
【0012】
【作用】この発明におけるコンパイル方式によれば、オ
プション判定手段においてコンパイラ起動時に指定され
たオプションを解析し、実行ログ採取オプションが指定
されているかどうかを判定する。指定されていれば、実
行ログ制御ファイル解析手段は、オプションに実行ログ
採取オプションが指定されている実行ログ制御情報ファ
イルから実行ログ制御情報を読み込み、どの実行ログ採
取関数をソースプログラムのどこに挿入するかを解析す
る。実行ログ採取関数呼び出し判定手段は、実行ログ制
御情報に基づき、コード化されたソースプログラムのど
の位置に実行ログ採取関数を挿入するかを判定する。実
行ログ採取関数呼び出し命令生成手段は、実行ログ採取
関数呼び出し判定手段により指定された箇所に挿入する
実行ログ採取関数を呼び出すコードを生成する。このよ
うにして、本発明におけるコンパイル方式を使用したコ
ンパイラは目的コードファイルを生成する。
【0013】また、上記発明において、実行ログ採取オ
プションに直接実行ログ制御情報を指定することができ
る。
【0014】また、上記発明において、実行ログ制御情
報ファイルに実行ログ制御情報を含む1ないし複数の実
行ログ制御情報ファイル名を記述することができる。
【0015】以上のように、本発明によれば、ソースプ
ログラムを修正することなく、任意の実行ログ採取関数
をソースプログラム任意の位置に挿入することができ
る。
【0016】
【実施例】実施例1. 以下、本発明における一実施例を図を用いて
説明する。図1は、本実施例におけるコンパイル方式を
使用したコンパイラのブロック図であり、同時に処理、
データの流れも示した図である。
【0017】図1において、10はプログラムソースフ
ァイル、52はプログラムソースファイル10をコンパ
イルするコンパイラ、30はコンパイラ52によって生
成された目的コードファイル、4は後述する実行ログ制
御情報が記述されている実行ログ制御情報ファイルであ
る。
【0018】コンパイラ52は、オプション判定部5
5、実行ログ制御ファイル解析部56、コード生成部5
7、実行ログ採取関数呼び出し判定部58及び実行ログ
採取関数呼び出し命令生成部59から構成される。オプ
ション判定部55は、コンパイラ52の起動時に指定さ
れたオプションを解析し、実行ログ採取オプションが指
定されているかどうかを判定する。実行ログ制御ファイ
ル解析部56は、実行ログ採取オプションに指定された
実行ログ制御情報ファイル4から実行ログ制御情報を読
み込み、解析した後、実行ログ採取に関するデータをコ
ンパイラ52の内部に設定する。コード生成部57は、
プログラムソースファイル10のコード化を行う。実行
ログ採取関数呼び出し判定部58は、コード生成部57
により生成されたプログラム目的コードが実行ログ採取
関数を挿入すべき箇所(位置)であるかを判定する。実
行ログ採取関数呼び出し命令生成部59は、実行ログ採
取関数呼び出し判定部58により指定されたプログラム
目的コードの箇所に挿入する実行ログ採取関数を呼び出
すコードを生成する。
【0019】本実施例の特徴的なことは、プログラムの
実行の際にログを出力させ、そのログを採取するための
制御情報である実行ログ制御情報をプログラムソースフ
ァイル10とは別に実行ログ制御情報ファイル4に記述
し、その実行ログ制御情報ファイル4をコンパイル時に
読み込むようにしたことであり、この結果、プログラム
ソースファイル10を修正することなく実行ログを採取
することができる。
【0020】図2は、コンパイラ52の内部処理の手順
を示したフローチャートであり、以下、図1、2を用い
て、本実施例におけるコンパイル方式の処理手順を説明
する。
【0021】コンパイルが開始されると、ステップ10
1では、オプション判定部52において、コンパイラ5
2の起動時に指定されたオプションの解析し、指定され
たオプションに実行ログの採取を指定する実行ログ採取
オプションが指定されているかどうかを判定する。
【0022】ステップ102において、実行ログ採取オ
プションが指定されている場合、そのオプションに指定
された実行ログ制御情報ファイル4から実行ログ制御情
報を読み込む。つまり、コンパイラ52の起動時には予
め実行ログ制御情報ファイル4を作成しておく必要があ
る。本実施例における実行ログ制御情報には、実行ログ
採取関数名、実行ログ採取関数の引数、ソースプログラ
ムの実行ログ採取関数の挿入する箇所等の実行ログ採取
に関するデータが記述されている。このように、実行ロ
グ制御情報を実行ログ制御情報ファイル4に記述してお
けば、実行ログ制御情報ファイル4を繰り返し使用で
き、また、他にも流用でき、更に複数の実行ログ採取関
数を指定することが容易にできる。
【0023】ステップ103では、実行ログ制御情報フ
ァイル解析部55において、実行ログ制御情報ファイル
4から実行ログ制御情報の読込み後、実行ログ制御情報
を解析し、所定の形式でコンパイラ52内部の実行ログ
情報格納領域に設定する。
【0024】コンパイラ52は実行ログ採取に関するデ
ータが設定されると、プログラムソースファイル10を
読み込み、通常の字句解析処理(ステップ104)及び
構文解析処理(ステップ105)を行う。
【0025】ステップ106以降の処理で目的コードフ
ァイル30を生成するわけであるが、まず、ステップ1
06において、実行ログ採取オプションが指定されてい
るかを判定する。次に、実行ログ採取オプションが指定
されている場合、現在処理対象となっているソースプロ
グラム行が処理され、出力されようとしているプログラ
ム目的コードが実行ログ採取指定された位置のプログラ
ム目的コードかどうか判定する(ステップ107)。も
し実行ログの採取が指定された位置ならば、実行ログ採
取関数呼び出しコードを生成する(ステップ108)。
その後、通常のソースプログラムのプログラム目的コー
ドを生成し、実行ログ採取関数呼び出しコードと併せて
目的コードファイル3を生成する(ステップ109)。
【0026】以上のように、本実施例によれば、実行ロ
グ制御情報が記述された実行ログ制御情報ファイル4を
用いることでソースプログラムを修正することなく実行
ログを採取することができる。
【0027】なお、上記コンパイル方式を備えたコンパ
イラ52において、ソースプログラムの主関数をコンパ
イルする時は、さらに実行ログ情報格納領域の初期化処
理と、ソースプログラム本体の処理が終了した時に採取
された実行ログ情報をファイルに書き出す処理を行うた
めのコード生成処理と、ソースプログラム本体が処理の
途中でアボートしてもそれまでに採取した実行ログ情報
を出力できるような前処理用のコード生成処理を自動的
に行う。あるいは、それらの処理をプログラムスタート
関数として用意し、プログラム本体とリンクすることに
よって、実行ログ情報を採取するようにしてもよい。
【0028】また、実行ログ採取関数は、その関数の外
部の関数内で定義されている局所変数の値や広域変数の
値を実行ログ情報として採取するだけでなく、実行ログ
採取関数が呼ばされた時点でのスタック等システム関連
の変数値も採取できるように用意しておけば、システム
内部状態の変遷を把握することができる。
【0029】また、上記実施例で生成された実行ログ採
取関数呼び出しコードでは、その実行ログ採取関数の引
数として呼び出した箇所のアドレスがセットされる。し
たがって通常のデバッグオプションと併用することによ
り実行ログ採取関数内部で、実行ログ関数を呼び出した
関数名、ファイル名、行番号等のシンボル情報を参照す
ることが可能になる。また、実行ログ採取関数自身の処
理内容に関してコンパイラ52は認識しなくても良いた
め、ユーザが必要とする実行ログ情報のみをユーザの独
自に設計したデータ構造で出力することができる。
【0030】実施例2.上記実施例1においては、実行
ログ採取オプションに実行ログ制御情報ファイル4を指
定し、実行ログ制御情報ファイル4から実行ログ制御情
報を読み込むことでソースプログラムを修正することな
く実行ログを採取することができるようにした。本実施
例においては、実行ログ採取オプションに直接実行ログ
情報採取関数名等実行ログ制御情報を指定することを特
徴とする。
【0031】これにより、実行ログ制御情報ファイル4
をあえて作成しなくても実施例1と同様の効果を得るこ
とができる。少数の実行ログ情報採取関数を指定する場
合には特に有効である。この場合、図3におけるステッ
プ102の処理はなく、ステップ103において、実行
ログ制御情報は、実行ログ制御情報ファイル4から読み
込むのではなく、実行ログ採取オプションから得られる
ことになる。その他の処理は実施例1とほぼ同様であ
る。
【0032】実施例3.上記実施例1においては、実行
ログ制御情報ファイル4に実行ログ制御情報を記述し、
この実行ログ制御情報を読み込むことでソースプログラ
ムを修正することなく実行ログを採取することができる
ようにした。本実施例においては、実行ログ制御情報フ
ァイル4に1ないし複数の実行ログ制御情報ファイル名
を記述することを特徴とする。この記述された実行ログ
制御情報ファイルには、実行ログを採取するファイル名
と実施例1と同様の実行ログ制御情報とが記述されてい
る。
【0033】これにより、実行ログの内容あるいは実行
ログ情報採取関数の種類等により別々のファイルに実行
ログを採取したい場合等に有効である。この場合、図3
におけるステップ102では、実行ログ制御情報ファイ
ル4の内容を読み込む際、実際の実行ログ制御情報であ
るかファイル名であるかを判定する必要がある。前者の
場合は実施例1に相当する。後者の場合は実行ログ制御
情報ファイル4に記述されたファイルの内容を読み込
み、その後は実施例1と同様の処理を指定ファイル数文
繰り返し行えばよい。また、上記の構成によれば、ファ
イルの指定を階層的にすることは可能である。その他の
処理は実施例1とほぼ同様である。
【0034】
【発明の効果】以上のように、この発明によればプログ
ラムソースファルを修正することなしに、ソースファイ
ル中の任意の箇所に任意の実行ログ採取関数を挿入する
ことができるのでユーザの必要とするプログラムの実行
ログ情報を効率良く採取することが可能である。
【0035】実行ログ制御情報をファイルに記述するこ
とにより、そのファイルを繰り返し使用することがで
き、多くの実行ログ採取関数を指定するときにより有効
となる。
【0036】また、実行ログ制御情報を実行ログ採取オ
プションに指定することもでき、このようにすれば、実
行ログ制御情報ファイルを作成しなくても上記効果を得
ることができる。
【0037】更に、実行ログ制御情報ファイルに実行ロ
グ制御情報を記述したファイル名を記述することによ
り、実行ログの内容あるいは実行ログ情報採取関数の種
類等により別々のファイルに実行ログを採取することが
可能となる。
【図面の簡単な説明】
【図1】この発明におけるコンパイル方式を使用したコ
ンパイラのブロック図であり、同時に処理、データの流
れも示した図である。
【図2】この発明におけるコンパイル方式を使用したコ
ンパイラの内部処理手順を示すフローチャートである。
【図3】従来のコンパイル方式を使用したコンパイラの
ブロック図であり、同時に処理、データの流れも示した
図である。
【符号の説明】
1、10 プログラムソースファイル 2、52 コンパイラ 3、30 目的コードファイル 4 実行ログ制御情報ファイル 5、55 オプション判定部 56 実行ログ制御ファイル解析部 7、57 コード生成部 8、58 実行ログ採取関数呼び出し判定部 9、59 実行ログ採取関数呼び出し命令生成部

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムの実行におけるログ情
    報を採取するための目的コードを生成するコンパイル方
    式において、 コンパイラ起動時に指定されたオプションを解析し、実
    行ログ採取オプションが指定されているかどうかを判定
    するオプション判定手段と、 前記実行ログ採取オプションに指定された実行ログ制御
    情報ファイルから実行ログ制御情報を読み込み解析する
    実行ログ制御ファイル解析手段と、 前記実行ログ制御ファイル解析手段により解析された前
    記実行ログ制御情報に基づき、前記ソースプログラムの
    実行ログ採取関数を挿入する箇所を判定する実行ログ採
    取関数呼び出し判定手段と、 前記実行ログ採取関数呼び出し判定手段により指定され
    た箇所に挿入する前記実行ログ採取関数を呼び出すコー
    ドを生成する実行ログ採取関数呼び出し命令生成手段
    と、 を有することを特徴とするコンパイル方式。
  2. 【請求項2】 ソースプログラムの実行におけるログ情
    報を採取するための目的コードを生成するコンパイル方
    式において、 コンパイラ起動時に指定されたオプションを解析し、実
    行ログを採取するかどうかを判定するオプション判定手
    段と、 前記オプションに指定された実行ログ制御情報に基づ
    き、前記プログラムの実行ログ採取関数を挿入する箇所
    を判定する実行ログ採取関数呼び出し判定手段と、 前
    記実行ログ採取関数呼び出し判定手段により指定された
    箇所に挿入する前記実行ログ採取関数を呼び出すコード
    を生成する実行ログ採取関数呼び出し命令生成手段と、 を有することを特徴とするコンパイル方式。
  3. 【請求項3】 請求項1記載のコンパイル方式におい
    て、 前記実行ログ制御情報には、1ないし複数の実行ログ制
    御情報ファイル名が含まれていることを特徴とするコン
    パイル方式。
JP5105213A 1993-05-06 1993-05-06 コンパイル方式 Pending JPH06314221A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5105213A JPH06314221A (ja) 1993-05-06 1993-05-06 コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5105213A JPH06314221A (ja) 1993-05-06 1993-05-06 コンパイル方式

Publications (1)

Publication Number Publication Date
JPH06314221A true JPH06314221A (ja) 1994-11-08

Family

ID=14401397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5105213A Pending JPH06314221A (ja) 1993-05-06 1993-05-06 コンパイル方式

Country Status (1)

Country Link
JP (1) JPH06314221A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7016807B2 (en) 2002-09-24 2006-03-21 Hitachi, Ltd. Device and method for monitoring a program execution
US7478282B2 (en) 2003-04-02 2009-01-13 Canon Kabushiki Kaisha Log acquisition method and its control program and storage medium

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7016807B2 (en) 2002-09-24 2006-03-21 Hitachi, Ltd. Device and method for monitoring a program execution
US7478282B2 (en) 2003-04-02 2009-01-13 Canon Kabushiki Kaisha Log acquisition method and its control program and storage medium

Similar Documents

Publication Publication Date Title
JPH07105012A (ja) 言語処理プログラムのコンパイル処理方式
EP0933706B1 (en) Language processing system and language processing method enabling reduction of memory region and overhead in profile information collection of computer
JPH10507016A (ja) ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ
JPH06314221A (ja) コンパイル方式
JPH0736680A (ja) 並列化プログラム開発支援装置
JPH10187461A (ja) 言語処理方式
JPH09218789A (ja) 分割コンパイル方式
JP3603718B2 (ja) メイク情報解析によるプロジェクト内容解析方法及びそのシステム並びに情報記録媒体
JPH0667871A (ja) プログラム自動更新方式
JPH07121379A (ja) 複数言語混在コンパイラ
JPH05197561A (ja) コンパイル方式
JP3921288B2 (ja) 言語処理装置およびインライン展開プログラムを記憶したコンピュータ読取可能な記憶媒体
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP2001282520A (ja) プログラム作成方法、プログラム作成装置およびプログラム作成用記録媒体
JPH05313909A (ja) 中間コードインライン展開機能を有するコンパイラシステム
JPH08328841A (ja) ソフトウェア生成装置
JP3114686B2 (ja) プログラム・ディバグ方法
JPH08263272A (ja) 共通ルーチンのライブラリ登録方法およびそのための装置
JP3018783B2 (ja) コンパイル方式
JP3226172B2 (ja) インライン展開システム
JPH06236283A (ja) 言語処理システム
JPS5924348A (ja) コンパイル処理方式
JPH0498322A (ja) コンパイラの作成方法
JPH0358232A (ja) プリプロセッサ呼び出し方式
KR940015798A (ko) 사용자 정합 소프트웨어와 응용 소프트웨어 사이에서의 정규화된 명령어 정보 메세지 구성, 전송 및 추출 방법