JPS63317826A - シンボリックデバッグ方式 - Google Patents

シンボリックデバッグ方式

Info

Publication number
JPS63317826A
JPS63317826A JP62154864A JP15486487A JPS63317826A JP S63317826 A JPS63317826 A JP S63317826A JP 62154864 A JP62154864 A JP 62154864A JP 15486487 A JP15486487 A JP 15486487A JP S63317826 A JPS63317826 A JP S63317826A
Authority
JP
Japan
Prior art keywords
intermediate language
language
program
error correction
module
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
JP62154864A
Other languages
English (en)
Inventor
Minoru Umetsu
梅津 実
Nariyuki Oonishi
大西 作幸
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 JP62154864A priority Critical patent/JPS63317826A/ja
Publication of JPS63317826A publication Critical patent/JPS63317826A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [a業上の利用分野] この発明は、高級言語におけるプログラムのシンボリッ
クデバッグ方式に関するものである。
[従来の技術] 第8図は従来の全体構成を示したもので、(1)はCP
U、(2)は端末装置、(3)はコンパイラ、リンケー
ジエディタ、デバッガ及びソースモジュール、オブジェ
クトモジュール、ロードモジュールを格納する外部メモ
リ、(3−1)はソースモジュールをオブジェクトモジ
ュールに変換するコンパイラ、(3−2)はオブジェク
トモジュールを1つの実行可能なロードモジュールに連
係編集するリンケージエディタ、(3−3) はプログ
ラムに含まれている誤りを発見するためのデバッガ、(
4)は主メモリで、(4−1)は主メモリに常駐し、コ
ンパイラ(3−1) 、リンケージエディタ(3−2)
やデバッガ(3−3)などの実行に伴う様々なサービス
を行なうオペレーティングシステム(以後osと称す)
である。
例えば端末装置(2)からコンパイルの要求があフた場
合、05(4−1)は外部メモリ(3)からコンパイラ
(3−1)を読み出し、主メモリ(4)上に割付はコン
パイラ(3−1)を実行させるものである。
ソースモジュールがロードモジュールに変換されるまで
の流れを第9図で説明する。ソースモジュール(5)は
外部メモリ(3) にありて、コンパイラ(3−1)に
より翻訳され機械語から成るオブジェクトモジュール(
7)になり、このオブジェクトモジュル(7)は外部メ
モリ(3)に格納される。この時オブジェクトモジュー
ル(7)内に、ソースモジュール(5)で使用されてい
る変数テーブル(8)と文番号テーブル(9)が作成さ
れる。第3図(a)に示すように、変数テーブル(8)
は変数の名前と変数の型が整数か実数かなどを示す属性
とその変数の主メモリ(4)上で割付は位置の情報を有
し、また第3図(b)に示すように、文番号テーブル(
9)は文番号と、ブレークポイント(プログラムの実行
を一旦停止させる指示)の有無などを示す属性と、文の
処理コードの先頭の主メモリ(4)上での割付は位置、
つまり文の開始位置の情報を有す。
第9図において、オブジェクトモジュール(7)はリン
ケージエディタ(3−2)により他のオブジェクトモジ
ュール(lO)と連係編集され、一つの実行可能なロー
ドモジュール(12)となり、このロードモジュール(
12)は外部メモリ(3)に格納される。
しかして、第8図において、このロードモジュール(1
2)をデバッグする要求が端末装置(2)からあった場
合、O5(4−1)はデバッガ(3−3)と指定された
ロードモジュールを主メモリ(4)上に割付はデバッガ
(3−3)を実行させる。ここで例えば端末装置(2)
から変数Aの参照要求があった場合、デバッガ(3−3
)は変数テーブル(8)の変数Aの情報を調べ変数の属
性と主メモリ(4)上の割付は位置より、データを読み
出し端末装置(2)の画面に表示させる。また、変数A
のデータを書き換える要求があった場合も、デバッガ(
3−3)は変数テーブル(8)の変数Aの属性を調べ、
入力された書き換えデータを変数Aの型に合うように変
換し、変数Aの割付けられている位置のデータを書き換
える。
[発明が解決しようとする問題点] 従来の高級言語におけるシンボリックデバッグ方式は以
上のように変数の参照や変数のデータ書き換えなどのよ
うにプログラムの誤りを検出する機能は有していたが、
プログラムの誤りを修正する手段、つまりロードモジュ
ールの処理コードを書き換える手段が無かった。このた
め、誤りを訂正するにはソースプログラムから修正し、
再厚翻訳、連係編集を実行しなければならず、時間の有
効利用ができなかった。
この発明は上記のような問題点を解消するためになされ
たもので、プログラムの誤り訂正を高級言語でも行い得
るシンボリックデバッグ方式を得ることを目的とする。
[問題点を解決するための手段] この発明に係るシンボリックデバッグ方式は、記号から
構成された中間言語と、これを解釈して実行する中間言
語解釈プログラムを採用し、連係編集時中間言語解釈プ
ログラムを他のオブジェクトモジュールと結合させ、か
つロードモジュール内に中間言語格納エリアを設け、デ
バッグ時端末装置から人力される高級言語での誤り訂正
情報を中間言語に展開してこれを中間言語格納エリアに
格納し、訂正対象文の処理コードを、中間言語解釈プロ
グラムの呼び出し命令コードに書き換えるようにした。
[作用コ この発明によれば、プログラムの誤り訂正はソースモジ
ュールを記述した高級言語と同じ言語で行うことができ
る。
[実施例] 以下、この発明の一実施例について説明する。
第1図はこの発明を示す全体構図である。(1)。
(2) 、 (3) 、 (3−1) 、 (3−2)
 、 (3−3) 、 (4) 、 (4−1) は従
来と同じで、それぞれcpu、端末装置、外部メモリ、
コンパイラ、リンケージエディタ、デバッガ、主メモリ
、O5である。(3−4)は記号から構成された中間言
語を解釈して実行する中間言語解釈プログラムで外部メ
モリ(3)内に格納されである。
第2図はソースモジュールがロードモジュールに変換さ
れるまでの流れを従来技術の例と同じように示したもの
である。ソースモジュール(5)は外部メモリ(3)に
あって、従来と同様コンパイラ(3−1)により翻訳さ
れ、変数テーブル(8)と文番号テーブル(9)を含ん
だオブジェクトモジュール(7)が生成される。オブジ
ェクトモジュール(7)はリンケージエディタ(3−2
)により他のオブジェクトモジュール(lO)及び中間
言語解釈プログラム(3−4) と連係編集され実行可
能なロードモジュール(12)となり、外部メモリ(3
)へ格納される。この時リンケージエディタ(3−2)
はロードモジュール(12)内に中間言語格納エリア(
13)を設ける。中間言語格納エリア(13)は第3図
(C)に示すように、エリアの先頭にバッチポインタ(
13−1>と呼ばれる中間言語格納エリアの空き領域の
先頭アドレスを示すデータがセットされである。
端末装置(2)からデバッグ要求があると、05(4−
1)がデバッガ(3−3) とロードモジュール(12
)を主メモリ(4)上に割付はデバッガ(3−3)を実
行させる。
ここで端末装置(2)から誤り訂正要求があった場合、
第5図に示すような手順で誤り訂正が行われる。まずス
テップ(20)で端末装置(2)から入力された、ソー
スモジュール(5)を記述している高級言語での誤り訂
正情報を文解析し、文法的に誤りが無いかをステップ(
21)でチェックし、もし誤りがあればステップ(31
)で端末装置(2)にエラーメツセージを表示させ終了
する。誤りが無い場合はステップ(22)で誤り訂正情
報にある変数が変数テーブル(8)に登録されであるも
のかチェックし、もし登録されていなければステップ(
23)によりステップ(31)に実行が移され、文法エ
ラーと同様、端末装置(2)にエラーメツセージを表示
させ終了する。文法及び使用されている変数が正常な場
合はステップ(24)で誤り訂正情報を、記号で構成さ
れた中間言語に展開しステップ(25)で中間言語格納
エリア(13)に書き込む。ステップ(26)でターミ
ネータと中間言語実行後の本プログラムへの戻り番地を
書き込む。次にステップ(27)でバッチポインタ(1
3−1)を読み込み、ステップ(28)で訂正対象文の
処理コードエリアに、読み込んだバッチポインタ(13
−1)をスタックに格納する命令コードを書き込み、中
間言語解釈プログラム(3−4)を呼び出す命令コード
をステップ(29)で上記の処理コードエリアに引き続
き書き込む。そして、ステップ(26)で中間言語格納
エリア(13)に書き込んだターミネータ、戻り番地の
次のアドレス(Pl)をバッチポインタにステップ(3
0)でセットし誤り訂正処理を終了する。
誤り訂正処理終了後の主メモリの状態を第4図の(4−
b)に示す。ここでは文番号100と文番号200の処
理があって文番号100に誤りがあったとしている。ま
ず、中間言語格納エリア(13)には文番号100の誤
り訂正情報が展開された中間言語が格納されており、バ
ッチポインタ(13−11には誤り訂正処理前は(Pl
)の値がセットされていたのが誤り訂正処理後はPlの
値がセットされていて、戻り番地には文番号200の先
頭アドレスがセットされている。文番号100の処理コ
ード部バッチポインタ(Pl)の値をスタックに格納す
る命令(100−1)と中間言語解釈プログラムを呼び
出す命令(too−2)がセットされている。
次にこの発明の一実施例における中間言語の仕様を第6
図に示す。言語の最小単位は初めに命令コードがあり、
次に各命令ごとに変数又は、パラメータの数が決ってい
る。変数は型とその変数の割付は位置とが組になって1
つとなる。誤り訂正情報は複数の最小言語単位に分割さ
れることになる。
例として“A=O”と“A=B+C*D”が中間言語に
展開されたものを第6図の(50)と(51)に示す。
”、“+”、“*“はそれぞれ代入、加算、乗算の命令
を示している。
(50)は命令が代入で、左辺が整数変数A、右辺が整
数定数0を意味し、(51)は“A=C*D”+“A=
A+B”の2つの最小言語単位に分割され第1の命令が
乗算で左辺が整数変数A、右辺が整数変数CとD、第2
の命令が加算で左辺が整数変数A、右辺が整数変数A、
Bであることを意味している。
第7図は誤り訂正処理後の中間言語解釈プログラム(3
−4)の動作を示したものである。第4図の(100−
2)で示されるところで中間言語解釈プログラム(3−
4)が呼び出されると、(100−1)でスタックに格
納されたバッチポインタ(Pl)をステップ(40)で
読み出し、中間言語格納エリア(13)の解析開始アド
レスをセットし、ステップ(41)で命令コードの解析
を開始する。解析した結果命令コードがターミネータで
なければステップ(43)で各命令ごとに中間言語格納
エリア(13)のデータを解析して実行し、実行が完了
したら再度ステップ(41)に戻り、命令コードにター
ミネータが現れるまでくり返す。ステップ(42)でタ
ーミネータが発見されたならステップ(44)でターミ
ネータの次に格納されている戻り番地、(第4図の場合
なら文番号200の先頭アドレス)を中間言語解釈プロ
グラム(3−4)のリターンアドレスにセットして終了
する。
なお、上記実施例では誤り訂正専用領域に誤り訂正情報
を中間言語に展開して格納しているが、これを高級言語
のまま格納し、中間言語解釈プログラムの代わりにイン
タプリタを採用しても上記と同様の効果を奏する。
[発明の効果] 以上のようにこの発明によれば、プログラムの誤り訂正
を高級言語で行うことができ、誤り発見ごとにソースプ
ログラムの修正、翻訳連係編集を行う必要が無いため、
時間の有効利用ができる。
【図面の簡単な説明】
第1図はこの発明の全体構成図、第2図はこの発明にお
けるソースモジュールからロードモジュールに変換する
までの流れを示したフロー図、第3図(a) 、 (b
) 、 (C)は変数テーブル、文番号テーブル、及び
中間言語格納エリアの構成図、第4図は誤り訂正処理前
と処理後の状態を示す比較図、第5図はデバッカの誤り
訂正処理フロー図、第6図はこの発明の一実施例におけ
る中間言語の仕様説明図、第7図は中間言語解釈プログ
ラムの動作フロー図、第8図は従来の全体構成図、第9
図は従来のソースモジュールからロードモジュールに変
換するまでの流れを示したフロー図である。 (1)  :CPU     (2)  :端末装置(
3):外部メモリ (3−1)  :コンパイラ(3−
2)  ニリンケージエディタ (3−3)  :デバッガ (3−4)  :中間言語解釈プログラム(4):主メ
モリ (4−x)  :オペレーティングシステム(7):オ
ブジェクトモジュール (8):変数テーブル (9):文番号テーブル (10) :他のオブジェクトモジュール(11):連
係編集 (12) :ロードモジュール (13) :中間言語格納エリア なお、各図中同一符号は、同−又は相当部分を示す。

Claims (1)

    【特許請求の範囲】
  1. 少なくともCPU、主メモリ、外部メモリとデータの入
    出力を行う端末装置を備え、ソースモジュールを翻訳し
    オブジェクトモジュールに変換するコンパイラと、複数
    のオブジェクトモジュールを連係編集し、実行可能な1
    つのロードモジュールにするリンケージエディタとを具
    備するコンピュータシステムにおいて、連係編集時、予
    めオブジェクトモジュールとして外部メモリに格納され
    ている中間言語解釈プログラムを他のオブジェクトモジ
    ュールと結合させ、かつロードモジュール内に中間言語
    格納エリアを確保する手段と、デバッグ時、端末装置か
    ら入力される高級言語での誤り訂正情報を中間言語に展
    開する手段と、展開された中間言語を上記の中間言語格
    納エリアに格納する手段と、格納された中間言語を解釈
    する手段とにより、高級言語でのプログラムの誤り訂正
    を可能としたことを特徴とするシンボリックデバッグ方
    式。
JP62154864A 1987-06-22 1987-06-22 シンボリックデバッグ方式 Pending JPS63317826A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62154864A JPS63317826A (ja) 1987-06-22 1987-06-22 シンボリックデバッグ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62154864A JPS63317826A (ja) 1987-06-22 1987-06-22 シンボリックデバッグ方式

Publications (1)

Publication Number Publication Date
JPS63317826A true JPS63317826A (ja) 1988-12-26

Family

ID=15593587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62154864A Pending JPS63317826A (ja) 1987-06-22 1987-06-22 シンボリックデバッグ方式

Country Status (1)

Country Link
JP (1) JPS63317826A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948164B2 (en) 1998-12-14 2005-09-20 Metrowerks Corporation Method and system for modifying executable code to add additional functionality

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948164B2 (en) 1998-12-14 2005-09-20 Metrowerks Corporation Method and system for modifying executable code to add additional functionality

Similar Documents

Publication Publication Date Title
JP2666847B2 (ja) 異種言語間連絡方式
US5794043A (en) Method for testing at least one class of an object-oriented program on a computer
JPH0883197A (ja) ソフトウエアプログラムをデバッグする方法およびコンピュータシステム
JPH1083293A (ja) 誤り訂正コンパイラ
JP2012063868A (ja) 言語処理パーサーを組み合わせて、組み合わせパーサーを生成する方法、並びにそのコンピュータ及びコンピュータ・プログラム
CN116540986A (zh) 一种基于Web端的文本类编程语言代码编辑器构建方法
US6381736B1 (en) Method for compile-time type-checking of arguments for externally-specified format strings
WO2000036500A2 (en) Hybrid computer programming environment
JPS63317826A (ja) シンボリックデバッグ方式
US11256479B2 (en) Dynamic updates in an interactive programming environment
JPH0766342B2 (ja) プログラムテスト装置
JP3196675B2 (ja) 言語処理方式
Andrews et al. The formal definition of Modula-2 and its associated interpreter
JPS5922140A (ja) 対話型コンパイル方式
JPH07311679A (ja) プログラム作成システム
JPS5930145A (ja) 動的プログラム修正による再実行処理方式
JPH1091418A (ja) 多国語対応ソフトウェア実現方式
JPH08212105A (ja) プログラム管理装置
JPH05134854A (ja) ソフトウエア開発支援装置
JPH06231003A (ja) 実行可能ファイルのデバッガ
JPS6033640A (ja) デ−タ・モニタ方式
JPH06119203A (ja) デバック行削除装置
JPH03266037A (ja) トレースプログラム挿入方式
JPH0695868A (ja) ソフトウェア管理方式
JPS6365542A (ja) デバツグ方式