JPH05224908A - プログラム生産システム - Google Patents

プログラム生産システム

Info

Publication number
JPH05224908A
JPH05224908A JP4059218A JP5921892A JPH05224908A JP H05224908 A JPH05224908 A JP H05224908A JP 4059218 A JP4059218 A JP 4059218A JP 5921892 A JP5921892 A JP 5921892A JP H05224908 A JPH05224908 A JP H05224908A
Authority
JP
Japan
Prior art keywords
debug
debug routine
routine
program
source program
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
JP4059218A
Other languages
English (en)
Inventor
Taiichi Murata
泰一 村田
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 JP4059218A priority Critical patent/JPH05224908A/ja
Publication of JPH05224908A publication Critical patent/JPH05224908A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 デバッグを行う際に割り込み命令を使用せ
ず、デバッガの環境下でなくともデバッグ情報を得るこ
とができて、ユーザへの負担も小さなプログラム生産シ
ステムを得る。 【構成】 ソースプログラムへのデバッグルーチンの追
加の要否を判定するデバッグルーチン追加判定手段と、
追加すべきと判定された場合に、そのソースプログラム
に最も適したデバッグルーチンを生成するデバッグルー
チン生成手段と、生成されたデバッグルーチンのプログ
ラムへの埋め込みを行うデバッグルーチン埋め込み手段
とを具備するデバッグルーチン付加手段を設けた。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、計算機のソフトウェ
アを作成するプログラム生産システムに関するものであ
る。
【0002】
【従来の技術】図4は従来のプログラム生産システムを
示す概念図であり、図5はそのデバッグ方式を示すブロ
ック図である。図4において、1は高級言語で記述され
てコンパイルの対象となるソースプログラムであり、2
はこのソースプログラム1をコンパイルするコンパイラ
である。3はこのコンパイラ2にてソースプログラム1
よりそれぞれ生成されたオブジェクトモジュールであ
り、21はその文法解析手段、22は翻訳手段である。
4は生成されたオブジェクトモジュール3をリンクする
リンカであり、5はこのリンカ4で生成されたロードモ
ジュール(目的プログラム)である。
【0003】また、図5において、5は前記ロードモジ
ュール(目的プログラム)であり、6はロードモジュー
ル5のアドレス情報を抽出するマップ情報格納手段、6
1は当該マップ情報格納手段6で得られたロードモジュ
ール5のマップ情報である。7はロードモジュール5を
ロードする記憶手段としてのローディングメモリであ
り、8はローディングメモリ7上のロードモジュール5
にパッチをあてる割り込み命令設定手段である。9はパ
ッチをあてる時に元の命令を退避させるための実パター
ン退避領域であり、10はデバッグ処理を行う動的デバ
ッガである。
【0004】次に動作について説明する。コンパイラ2
は内蔵する文法解析手段21と翻訳手段22を用い、読
み込んだソースプログラム1の文法解析とコードの変換
処理を行ってオブジェクトモジュール3を生成する。同
様にして、他のソースプログラム1についてもそれぞれ
オブジェクトモジュール3の生成を行う。このようにし
て生成されたオブジェクトモジュール3はリンカ4に送
られてリンクされ、ロードモジュール(目的プログラ
ム)5が生成される。
【0005】次に、このようにして生成されたロードモ
ジュール(目的プログラム)5のデバッグについて説明
する。デバッグ時にロードモジュール5のデバッグを行
いたいアドレスをマップ情報格納手段6で生成したマッ
プ情報61をもとに求め、ローディングメモリ7上の当
該アドレスの命令を、割り込み命令設定手段8によって
置き換える。これによって動的デバッガ10のデバッグ
ルーチンの呼び出しを行い、当該ロードモジュール5の
デバッグを行っている。
【0006】なお、このような従来のプログラム生産シ
ステムで生産されたプログラムのデバッグに関連する技
術が記載された文献としては、例えば特開昭63−21
7431号公報などがある。
【0007】
【発明が解決しようとする課題】従来のプログラム生産
システムは以上のように構成されているので、プログラ
ムのアドレスを求めてその命令を割り込み命令に置き換
え、動的デバッガ10のデバッグルーチンを起動してデ
バッグを行っているため、実際のプログラムに無関係
な、動的デバッガ10を呼び出す割り込みのための割り
込みベクタを用意する必要があり、関数への引数の受け
渡し等は、ソースファイルリスト(もしくはプログラム
リスト等)をもとに、デバッグを行う作業者の判断によ
ってその値を見つけだすなど、デバッグにユーザの介入
が必要となってユーザに対する負担も大きく、さらに、
プログラムのデバッグはデバッガの動作する環境(デバ
ッガの環境下)でしか行えず、実際にプログラムを実行
するときの環境とデバッグ時の環境とが異なる可能性も
あるなどの問題点があった。
【0008】この発明は上記のような問題点を解消する
ためになされたものであり、デバッグを行う際に割り込
み命令を使用せず、デバッガの環境下でなくともデバッ
グ情報が得られて、ユーザへの負担も小さなプログラム
生産システムを得ることを目的とする。
【0009】
【課題を解決するための手段】この発明に係るプログラ
ム生産システムは、ソースプログラムへのデバッグルー
チンの追加の要否を判定するデバッグルーチン追加判定
手段、前記判定の結果、追加すべきと判定された場合に
そのソースプログラムに最も適したデバッグルーチンを
生成するデバッグルーチン生成手段、および生成された
デバッグルーチンの埋め込み処理を行うデバッグルーチ
ン埋め込み手段を具備するデバッグルーチン付加手段を
設けたものである。
【0010】
【作用】この発明におけるデバッグルーチン付加手段
は、そのデバッグルーチン追加判定手段によって、ソー
スプログラムへのデバッグルーチンの追加の要否の判定
を行い、当該判定の結果、追加すべきと判定された場合
にはデバッグルーチン生成手段にて、そのソースプログ
ラムに最も適したデバッグルーチンを生成し、生成され
たそのデバッグルーチンをデバッグルーチン埋め込み手
段によってプログラムに埋め込むことにより、デバッグ
を行う際に割り込み命令を使用せず、デバッガの環境下
でなくともデバッグ情報が得られて、ユーザへの負担も
小さなプログラム生産システムを実現する。
【0011】
【実施例】
実施例1.以下、この発明の一実施例を図について説明
する。図1において、1はソースプログラム、2はコン
パイラ、3はオブジェクトモジュール、4はリンカ、5
はロードモジュール(目的プログラム)、21は文法解
析手段、22は翻訳手段であり、図4に同一符号を付し
た従来のそれらと同一、あるいは相当部分であるため詳
細な説明は省略する。
【0012】20はコンパイラ2内に設けられたデバッ
グルーチン付加手段である。23はソースプログラム1
にデバッグルーチンを追加すべきか否かの判定を行うデ
バッグルーチン追加判定手段であり、24はこのデバッ
グルーチン追加判定手段23にて追加すべきと判定され
た場合に、そのソースプログラム1に最も適したデバッ
グルーチンを生成するデバッグルーチン生成手段であ
る。25はあらゆるプログラムに対応できるデバッグル
ーチンを管理しているデバッグルーチンデータベースで
あり、26はこのデバッグルーチン生成手段24とデバ
ッグルーチンデータベース25によって生成されたデバ
ッグルーチンを、前記翻訳手段22の翻訳生成したオブ
ジェクトモジュール3に埋め込むデバッグルーチン埋め
込み手段である。前記デバッグルーチン付加手段20は
これらデバッグルーチン追加判定手段23、デバッグル
ーチン生成手段24、デバッグルーチンデータベース2
5、およびデバッグベース埋め込み手段26にて構成さ
れている。
【0013】次に動作について説明する。コンパイラ2
は従来の場合と同様に、文法解析手段21と翻訳手段2
2を用いて、読み込んだソースプログラム1の文法解析
およびコードの変換処理を行う。そのとき、翻訳手段2
2内でデバッグルーチンの追加を認めた場合にはデバッ
グルーチン追加判定手段23が起動される。デバッグル
ーチン追加判定手段23は起動されると、どのようなデ
バッグルーチンがもっともふさわしいかを判断してデバ
ッグルーチン生成手段24の起動を行う。
【0014】起動を受けたデバッグルーチン生成手段2
4は、デバッグルーチン追加判定手段23の判断したデ
バッグルーチンの種類(例えば、関数に対するものや、
ディスクなどの資源に対するアクセスに対するものな
ど)やデバッグルーチンデータベース25をもとにし
て、そのソースプログラム1に最も適しているデバッグ
ルーチンを生成する。デバッグルーチン埋め込み手段2
6は翻訳手段22にて現在生成中のオブジェクトモジュ
ール3に、このデバッグルーチン生成手段24が生成し
たデバッグルーチンを埋め込むための処理を実行する。
【0015】コンパイラ2によるコンパイル処理は、こ
れら文法解析手段21、翻訳手段22、およびデバッグ
ルーチン付加手段20による処理を繰り返すことによっ
て完了する。この時生成されるオブジェクトモジュール
3は、ただデバッグルーチンが付加されているだけで、
構造的およびコード的には従来のコンパイラ2が生成し
たものと何等変わるところはない。このようにして生成
されたオブジェクトモジュール3は従来の場合と同様
に、リンカ4でロードモジュール(目的プログラム)5
にリンクされる。
【0016】なお、図2は生成されたロードモジュール
5のデバッグ時の処理の流れを示す説明図である。図に
おいて、11a〜11dはソースプログラム1をコンパ
イルして得られたプログラム本体であり、12a〜12
cはソースプログラム1をもとに生成・付加されたデバ
ッグルーチンである。処理は同図の上部から下部へ順次
実行されるが、見かけ上の処理は破線矢印13で示すよ
うに進行して、このプログラムを実行したユーザにはデ
バッグルーチン12a〜12cの実行を意識させないこ
とを示している。このデバッグルーチン12a〜12c
の実行によって得られたデバッグ情報14a〜14c
は、ファイルあるいはメモリ領域のデバッグ情報格納領
域15に蓄えられて、ユーザもしくはデバッガに提供さ
れる。
【0017】実施例2.なお、上記実施例1では、デバ
ッグルーチン付加手段20を翻訳手段22の次に配置し
た場合について述べたが、デバッグルーチン付加手段2
0はコンパイラ2におけるコンパイル処理のどの段階に
配置してもかまわない。
【0018】実施例3.また、上記実施例1では、機械
語レベルにまでコード変換したオブジェクトモジュール
3にデバッグルーチンを埋め込むものを示したが、ソー
スレベルで生成したデバッグルーチンをソースプログラ
ム1に付加して中間ソースプログラムを生成し、それを
文法解析手段21に供給するようにしてもよい。図3は
そのような実施例を示す概念図であり、図1のそれらに
相当する部分には同一符号を付してその説明を省略す
る。図において、27がデバッグルーチン付加手段20
にて生成されて文法解析手段21に供給される、前記中
間ソースプログラムである。
【0019】次に動作について説明する。デバッグルー
チン追加判定手段23は読み込まれたソースプログラム
1をもとにデバッグルーチンの追加の要否を判定する。
追加の必要があると判定したときには、デバッグルーチ
ン生成手段24を起動して最適なデバッグルーチンを生
成させ、そのソースプログラム1への埋め込みをデバッ
グルーチン埋め込み手段26に行わせて中間ソースプロ
グラム27を生成する。一方、追加の必要がないと判定
したときには、ソースプログラム1を変更することなく
そのまま中間ソースプログラム27として書き出す。こ
のようにして生成された中間ソースプログラム27は文
法解析手段21に送られて文法の解析が行われ、さらに
翻訳手段22でコードの変換処理が行われてオブジェク
トモジュール3が生成される。
【0020】さらに、上記実施例3では、デバッグルー
チン生成手段24で生成するデバッグルーチンの形態
が、ソースプログラム1のそれと同一であるものとして
説明したが、独自のコード形式である中間コード形式で
生成してもよい。
【0021】また、上記各実施例では、ソースプログラ
ム1に基づいて自動生成したデバッグルーチンを付加す
る場合について説明したが、あらかじめ用意されたもの
の中から選択したデバッグルーチンを付加するようにし
てもよく、上記実施例と同様の効果を奏する。
【0022】また、上記各実施例では、デバッグルーチ
ンの生成・付加の処理を、コンパイル処理の段階で行う
場合を示したが、リンク時のような他の段階において実
施するようにしてもよい。なお、コンパイル時にデバッ
グルーチンを生成・付加するようにした場合、ソースプ
ログラム1を参照することができるので、プログラムに
適したデバッグルーチンの付加が可能となる。そのた
め、デバッグ時における関数への引数の受け渡し等に際
しても、ユーザの判断が不要となってユーザに対する負
担も軽減される。
【0023】また、ソースプログラムを機械語レベルに
まで翻訳する場合について説明したが、中間コードレベ
ルまでを生成するトランスレータに適用してもよく、上
記実施例と同様の効果を奏する。
【0024】また、上記実施例では、デバッグルーチン
を生成するための資源としてデバッグルーチンデータベ
ース25を用いたものを示したが、デバッグルーチン生
成手段自身がデバッグルーチンを生成するものであって
もよい。
【0025】
【発明の効果】以上のように、この発明によれば、デバ
ッグルーチン付加手段によってデバッグルーチンをプロ
グラム本体に付加するように構成したので、割り込みを
発生させる必要がなくなり、実際のプログラムにおいて
不要な割り込みを使用しなくともよくなるばかりか、デ
バッガがなくともデバッグ情報を得ることが可能となっ
て、デバッガの環境下以外でもデバッグを行うことがで
き、そのデバッグ情報を使用することでプログラムを実
際に実行しなくともプログラムのデバッグ・解析等が行
える効果がある。
【図面の簡単な説明】
【図1】この発明の実施例1を示す概念図である。
【図2】上記実施例にて生成されたプログラムのデバッ
グ時の処理の流れを示す説明図である。
【図3】この発明の実施例2を示す概念図である。
【図4】従来のプログラム生産システムを示す概念図で
ある。
【図5】そのデバッグ方式を示すブロック図である。
【符号の説明】
1 ソースプログラム 20 デバッグルーチン付加手段 23 デバッグルーチン追加判定手段 24 デバッグルーチン生成手段 26 デバッグルーチン埋め込み手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムの文法を解析、および
    そのコードの変換処理を行って、プログラムを生成する
    プログラム生産システムにおいて、前記ソースプログラ
    ムにデバッグルーチンを追加すべきか否かを判定するデ
    バッグルーチン追加判定手段と、前記デバッグルーチン
    追加判定手段にて追加すべきと判定された場合に、前記
    ソースプログラムに最も適したデバッグルーチンを生成
    するデバッグルーチン生成手段と、前記デバッグルーチ
    ン生成手段にて生成されたデバッグルーチンの埋め込み
    の処理を行うデバッグルーチン埋め込み手段とを具備す
    るデバッグルーチン付加手段を設けたことを特徴とする
    プログラム生産システム。
JP4059218A 1992-02-14 1992-02-14 プログラム生産システム Pending JPH05224908A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4059218A JPH05224908A (ja) 1992-02-14 1992-02-14 プログラム生産システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4059218A JPH05224908A (ja) 1992-02-14 1992-02-14 プログラム生産システム

Publications (1)

Publication Number Publication Date
JPH05224908A true JPH05224908A (ja) 1993-09-03

Family

ID=13107025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4059218A Pending JPH05224908A (ja) 1992-02-14 1992-02-14 プログラム生産システム

Country Status (1)

Country Link
JP (1) JPH05224908A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076094A (ja) * 1998-09-03 2000-03-14 Ricoh Co Ltd シミュレータ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076094A (ja) * 1998-09-03 2000-03-14 Ricoh Co Ltd シミュレータ

Similar Documents

Publication Publication Date Title
JP3041222B2 (ja) ソース・コード作成システム及び方法
US6662362B1 (en) Method and system for improving performance of applications that employ a cross-language interface
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
US6467082B1 (en) Methods and apparatus for simulating external linkage points and control transfers in source translation systems
US10831639B2 (en) Method and device for non-intrusively collecting function trace data
JPWO2000045260A1 (ja) コンパイラ装置、コンパイル方法、およびそのためのプログラムを格納した記憶媒体
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
KR20010086159A (ko) 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법
JPH03188535A (ja) プログラム・エラー検出方法
US7624381B1 (en) Portable detection of start and completion of object construction
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
CN113220327A (zh) 智能合约升级方法及区块链系统
JPH08305583A (ja) Cpuシミュレーション方法
JPH05224908A (ja) プログラム生産システム
JP3327674B2 (ja) プログラム翻訳装置及び方法
RU2390821C1 (ru) Способ динамической инструментации
KR20010037625A (ko) 바이너리 프로그램 변환 장치 및 그 방법
JPH11212807A (ja) プログラム実行方法
JP2943590B2 (ja) インタプリタ型シミュレーション方法
JP2002132502A (ja) 言語機能解釈による分散オブジェクト自動生成システム及び方法
JP2005301415A (ja) コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム
JPH01177165A (ja) 配列の定義/引用関係検査方式
Bakhtin Automation of Debugging Parallel Programs in the DVM System
JPH1083328A (ja) 単体テスト用疑似入出力実現方式
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置