JPH0766342B2 - プログラムテスト装置 - Google Patents

プログラムテスト装置

Info

Publication number
JPH0766342B2
JPH0766342B2 JP60254442A JP25444285A JPH0766342B2 JP H0766342 B2 JPH0766342 B2 JP H0766342B2 JP 60254442 A JP60254442 A JP 60254442A JP 25444285 A JP25444285 A JP 25444285A JP H0766342 B2 JPH0766342 B2 JP H0766342B2
Authority
JP
Japan
Prior art keywords
program
symbol
memory
function
interpreter
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.)
Expired - Lifetime
Application number
JP60254442A
Other languages
English (en)
Other versions
JPS62113244A (ja
Inventor
彰 宮川
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.)
Omron Corp
Original Assignee
Omron 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 Omron Corp filed Critical Omron Corp
Priority to JP60254442A priority Critical patent/JPH0766342B2/ja
Publication of JPS62113244A publication Critical patent/JPS62113244A/ja
Publication of JPH0766342B2 publication Critical patent/JPH0766342B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Description

【発明の詳細な説明】 <発明の技術分野> 本発明は、プログラムのテスト装置、特にインタプリタ
形式のプログラムと機械語レベルのプログラムとを結合
して実行テストするものに関する。
<発明の概要> この発明は、インタプリタ形式のプログラムと機械語レ
ベルのプログラムとを結合し、1つのプログラムとして
実行可能とするプログラムテスト装置であって、相互参
照すべき両プログラムの関数あるいは変数を共通するシ
ンボルで表示するとともに、各シンボルを、そのシンボ
ルの内容を記述するプログラムが存在するメモリー上の
絶対番地およびこのプログラムを記述する言語の種類と
対応づけたシンボルテーブルを用意し、メモリー上に配
置したプログラムのシンボルを適宜シンボルテーブルを
参照しながら実アドレス上の絶対番地で置き換えること
により、オブジェクト構造が異なるプログラム間相互の
自由なデータ参照あるいは呼び出しを維持しながら、プ
ログラムの実行速度を上げ、デバッグ能率を向上せんと
するものである。
<発明の背景> 従来、各種高級言語を用いてプログラムの開発を行う場
合、ソースプログラムをコンパイラ、リンケージエンデ
ィタ等を用いてコンピュータが直接実行しうる機械語プ
ログラムに変換したのち、デバッガを用いてソースプロ
グラム上の誤り部分を発見し、ソースプログラムの訂正
とコンパイル、リンクとをバグがなくなるまで繰り返す
ことにより、プログラムのデバッグを行うことが一般的
であった。しかし、かかるコンパイル、リンクを含むデ
バッグ作業は煩雑を極めるとともに、軽微なバグの存在
に対しても最初からコンパイル、リンクを繰り返す必要
があるなど、ともすると迅速なプログラム開発を行うこ
とは難しかった。
かかる問題に対し、デバッガをインタプリタ形式とする
ことにより、コンパイル、リンク等の余分な作業を要す
ることなく、ソースレベルでデバッグを直接可能とする
試みもなされている。しかしながら、インタプリタは本
質的にプログラムの実行速度が極めて遅く、大規模なプ
ログラムの実行テストには長時間を要し、その結果、コ
ンパイル等のデバッグ以外の作業を必要としないという
インタプリタ本来の長所が阻却される虞が強い。
一方インタプリタ言語であるBASICなどのプログラムと
機械語プログラムを結合することも行われているが、両
者を結合するためにはそれ専用の特別な命令を利用した
繁雑な操作を必要とするとともに、機械語プログラムの
メモリー上の配置位置も固定したものにする必要がある
など、その目的は専らデバッグを済ませたプログラムを
機械語プログラムとしてルーチン化してインタプリタ側
から該ルーチンを呼び出すことによりプログラムの実行
速度を上げることにのみ限定され、ソースプログラムの
頻繁な変更を必要とするプログラムのデバッグには不適
当であるとともに、機械語側からインタプリタ側のルー
チン或いは変数を呼び出すことが出来ないなど、その機
能も不十分なものであった。
<発明の目的> 本発明は、上記問題に鑑みてなされたものであって、デ
バッグを行っている部分のみをインタプリタ形式で実行
させ、他は機械語とするとともに、両者を互いに共通す
るシンボルおよびシンボルテーブルを利用してリンクし
1つのプログラムとして実行可能とすることにより、プ
ログラムの実行速度を高め、しかもデバッグ作業の簡易
化が図れるプログラムテスト装置を提供することを目的
とする。
<発明の構成および効果> この発明は、相互参照する関数あるいは変数を互いに共
通するシンボルを用いて表示したインタプリタ形式のプ
ログラムと機械語レベルのプログラムとを一体に結合し
て実行するプログラムテスト装置であって、各プログラ
ムのメモリー上に配設するプログラム配設手段と、前記
プログラム配設手段によりメモリー上に配設された各プ
ログラムに含まれるシンボルについて、シンボルの内容
を記述するプログラムが存在するメモリー上の絶対番地
を検出する検出手段と、前記検出手段の検出結果に基づ
き、各シンボルの関数あるいは変数名,シンボルの内容
を記述するプログラムが存在する絶対番地,およびその
プログラムが機械語あるいはインタプリタ形式のいずれ
の言語であるかの情報を各シンボル毎に対応づけたシン
ボルテーブルを作成するシンボルテーブル作成手段と、
メモリー上に配設された各プログラムに含まれるシンボ
ルを順次読み出して前記シンボルテーブルと照合し、そ
のシンボルが関数あるいは変数のいずれであるか、およ
びそのシンボルが機械語あるいはインタプリタ形式のい
ずれの言語で記述されているかを判定する判定手段と、
前記判定手段によりシンボルが変数または機械語である
記述された関数と判定されたとき、そのシンボルを前記
シンボルテーブル上の対応する絶対番地に置き換え、前
記判定手段によりシンボルがインタプリタ形式の関数と
判定されたとき、メモリー上の所定の番地にそのシンボ
ルの内容を記述するプログラムを実行するためのルーチ
ンを作成して前記シンボルをこのルーチンの存在するメ
モリー上の絶対番地に置き換えることにより、各プログ
ラムを結合させるプログラム結合手段と、前記プログラ
ム結合手段により結合されたプログラムを順次実行する
プログラム実行手段とを備えて成るものである。
上記構成によれば、ソースプログラム中のデバッグ対象
となるルーチンのプログラムをインタプリタ形式に、他
のルーチンのプログラムを機械語にすることにより、イ
ンタプリタの豊富なデバッグ機能を利用してデバッグ作
業の簡易化、高速化が実現できる。また、各プログラム
を共通のシンボルおよびシンボルテーブルによりリンク
するので、各シンボルを呼び出すための命令を1種類に
固定でき、デバッグ対象のルーチンの変更によりシンボ
ルを記述するプログラム形式が置き換えられても、その
シンボルを呼び出すための命令を書き換える必要がな
く、能率良くデバッグ作業を進めることができる。
<実施例の説明> 以下図面に示す実施例に基づき、本発明を具体的に説明
する。
なお実施例では、汎用コンピュータを用い、テスト目的
に応じてソフトウェアを取り替えることにより適用範囲
を広げたC言語用のテストシステムに本発明を実施した
一例を示すがこれらに限らず、それ単独で動作するデバ
ッグ専用機等にも略同様に実施でき、又、被デバッグプ
ログラム用の言語も「C」以外の各種高級言語に変更し
て略同様に実施できることは勿論である。
本発明を実施するテストシステムは、第5図に示す如
く、汎用コンピュータを使用したエンジニアリングワー
クステーション11と、該ワークステーション11に対する
オペレータの直接的なアクセスを目的とする端末装置12
とから構成される。
ワークステーション11は、マイクロプロセッサを使用し
た演算制御装置21の中心として、RAM等の記憶手段から
成る内部記憶装置(メモリー)22と、ハードディスクド
ライブ等の外部記憶装置23と、周辺装置に対するインタ
ーフェース回路を備えた入出力装置24とを各種バス25を
介して接続したものであって、更にワークステーション
11に対し、入出力装置24を介して端末装置12が接続され
る。
端末装置12は、ワークステーション11に対してコマンド
の入力を可能とするキーボード26と、ワークステーショ
ン11内でのデータ処理状況を視認しうる形で表示するCR
T等のディスプレイ装置27とから成り、キーボード26か
らのコマンド入力と連繋して、外部記憶装置23に予め格
納しておいたコンパイラ31、インタプリタデバッガ32等
の制御プログラム33や、デバッグすべき各種ファイルを
適宜内部記憶装置22に送り、演算制御装置21で順次解釈
実行させることにより、ワークステーション11は全体で
プログラムテスト装置として動作する。
第6図は、上記ワークステーション11の内部におけるプ
ログラムの処理手順の概略を示している。
まず最初に、デバッグを既に済ませたソースプログラム
のファイル34と、これからデバッグすべきソースプログ
ラムのファイル35とから成るソースプログラムのファイ
ル群36を、コンパイラ31を用いて演算制御装置21および
インタプリタデバッガ32が実行可能な形式の実行ファイ
ル群37に変換する。すなわち、原則としてデバッグ済の
ファイル34については、リロケータブルな機械語ファイ
ル38が作られ、そのファイル38には、第1図(a)の如
く、関数あるいは変数の名前が特定のシンボルとして表
された機械語プログラムリスト40と、メモリー22上へリ
ロケーションするための情報41と、前記プログラムリス
ト40上のシンボルに関する情報42が含まれる。一方これ
からデバッグすべきプログラムについては、該プログラ
ムリスト35を、インタプリタデバッグ32が実行しうる中
間コードのリスト43を含む中間コードファイル39に変換
してデータの冗長度を減少させる。なお、機械語コード
40に変換するか中間コード43のまま実行させるかは、テ
スト開始時のコマンド入力により、オペレータが任意に
選択できる。
次にこの実行ファイル群37を、インタプリタデバッガ32
のリンケージ機能を用いて、下記で記述する手順により
メモリー22上に実際に配置し、機械語と中間コードが混
在するオブジェクトを構成する。
第2図は、上記した実行ファイル群37をメモリー22上へ
配置結合する手順を示す流れ図であり、第1図はメモリ
ー22上におけるプログラムの配置状況を説明する概略図
である。
ファイルの結合を開始する(ステップ50)と、第1図
(a)に示す実行ファイル37中の機械語プログラムリス
ト40および中間コードリスト43は、オペレータが適宜設
定し、あるいはインタプリタデバッガ32既定のメモリー
22上における領域に順次配置される(ステップ51)。本
実施例では説明を簡単にするため、機械語ファイル38お
よび中間コードファイル39が各々1つずつの例を示して
おり、更に各ファイル38,39のリスト40,43は第1図
(b)の如く、演算制御装置21における実行手順を直接
あるいは間接的に記述した実行部44,46と、変数等の各
種データを定義したデータ定義領域45,47とに展開され
ている。又この段階では、相互参照すべき関数あるいは
変数の名前は、機械語コードおよび中間コードともに互
いに共通するシンボルf1,f2,f3‥‥で表示されている。
次にステップ52において、メモリー22上にシンボルテー
ブル48が作成される。該シンボルテーブル48は、関数あ
るいは変数の名前f1,f2‥‥とメモリー22上における絶
対番地A1,A2‥‥との関係、および、それらが機械語あ
るいは中間コードのどちらで記述されているか、あるい
は又、その形式、レベル等の各種情報C1,C2‥‥が記入
されるものであって、機械語部40については、実行ファ
イル38に含むシンボル情報42を用いて、中間コード部43
については、中間コードを1行ずつ取り出して順次解釈
することにより、機械語実行部40および中間コード実行
部43に存在するシンボルf1,f2‥‥とメモリー22上の実
アドレスA1,A2‥‥との関係を求める。
次にステップ53において、プログラム中のシンボルを順
次読み出し、ステップ54でそのシンボルの内容をシンボ
ルテーブル48で検索して、呼び出されるシンボルが関数
か変数かの判定がなされる。かかる判定が“NO"で変数
と判断されれば、当該シンボルをシンボルテーブル48が
示す実アドレスの絶対番地で置き換える(ステップ5
5)。逆に判定が“YES"であり関数と判断されれば、次
のステップ56でその呼び出される関数が中間コードで書
かれた関数か否かの判定がなされる。判定が“NO"で、
第1図(c)の如く機械語プログラムであれば、該関数
のエントリのアドレスA1でシンボルf1を置き換える(ス
テップ57)。
ステップ56の判定が“YES"であり、関数が中間コードで
書かれていると判断されると、第1図(d)の如く仮の
エントリを作り、エモリー22上のアドレスB1に機械語で
書かれた補助ルーチン49を挿入する(ステップ58)。該
ルーチン49は、制御をインタプリタデバッガ32側に戻す
機能を有するものであって、前記シンボルf2で特定され
る関数の中間コードが配置されている絶対番地A2をシン
ボルテーブル48により検索してそのルーチン49中に埋め
込んでおくと共に、シンボルf2を当該ルーチン49の仮の
エントリのアドレスB1で置き換える(ステップ59)こと
により、該ルーチン49を介して中間コードで書かれた関
数f2を実行可能とする。
上記操作をシンボルテーブル48を参照しつつ、機械語に
ついてはリロケーション情報41とシンボル情報42を利用
し、中間コードについては各行を順次解釈することによ
り、メモリー上に配置されたプログラムの全体に亘って
シンボルと絶対番地の置き換えを実行する(ステップ6
0)ことにより、機械語プログラムと中間コードプログ
ラムを自動的に一体に結合する。
次に第3図および第4図において、上記の如く結合され
たプログラムを実行した際、機械語と中間コード間で相
互に関数呼び出しが起こった場合のプログラムの流れを
説明する。
プログラムの実行を開始する(ステップ70)と、機械語
プログラムは演算制御装置21により直接的に、中間コー
ドはインタプリタデバッガ32により1行ずつ取り出され
て順次機械語に変換されて間接的に実行される(ステッ
プ71)。ここで、関数呼び出し命令があればステップ72
が“YES"となって、引数をスタックに積んだ(ステップ
73)あと、JSR命令のオペランドで特定されるアドレス
の機械語のプログラムに制御を渡し(ステップ74)、該
プログラムを実行する(ステップ75)。
実行したプログラムが、目的とする機械語の関数f1の呼
び出しであるとステップ76で判断されれば、第3図
(a)の如くアドレスA1に移って一連のプログラムを実
行したあと、戻し数をレジスタに入れて再び呼び出し側
に戻る(ステップ77)。
しかし実行したプログラムが中間コードの関数f2の呼び
出しであれば、第3図(b)の如くアドレスB1からの補
助ルーチン49が実行され(ステップ78)、補助ルーチン
49中に記入された飛び先のアドレスA2を引数として渡す
ことによりインタプリタ32側に制御を戻し(ステップ7
9)、渡されたアドレスA2で特定される関数f2について
の中間コードのプログラムが実行される(ステップ8
0)。この中間コードのプログラムの実行を終えると、
呼び出し側に制御が戻され(ステップ77)、つぎのプロ
グラムが実行されるのである。
【図面の簡単な説明】
第1図(a)ないし(d)はメモリー上におけるプログ
ラムの配置状況を説明する概略図、第2図はプログラム
の結合手順を説明する流れ図、第3図(a)および
(b)はプログラムの実行順序を説明する概略図、第4
図はプログラムの実行手順を説明する流れ図、第5図は
本発明を実施する装置の概略を示すブロック図、第6図
は第5図の装置におけるプログラムの処理手順を示す説
明図である。 11……ワークステーション 22……内部記憶装置(メモリー) 32……インタプリタデバッガ 36……ソースファイル 37……実行ファイル 48……シンボルテーブル

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】相互参照する関数あるいは変数を互いに共
    通するシンボルを用いて表示したインタプリタ形式のプ
    ログラムと機械語レベルのプログラムとを一体に結合し
    て実行するプログラムテスト装置であって、 各プログラムをメモリー上に配設するプログラム配設手
    段と、 前記プログラム配設手段によりメモリー上に配設された
    各プログラムに含まれるシンボルについて、シンボルの
    内容を記述するプログラムが存在するメモリー上の絶対
    番地を検出する検出手段と、 前記検出手段の検出結果に基づき、各シンボルの関数あ
    るいは変数名,シンボルの内容を記述するプログラムが
    存在する絶対番地,およびそのプログラムが機械語ある
    いはインタプリタ形式のいずれの言語であるかの情報を
    各シンボル毎に対応づけたシンボルテーブルを作成する
    シンボルテーブル作成手段と、 メモリー上に配設された各プログラムに含まれるシンボ
    ルを順次読み出して前記シンボルテーブルと照合し、そ
    のシンボルが関数あるいは変数のいずれであるか、およ
    びそのシンボルが機械語あるいはインタプリタ形式のい
    ずれの言語で記述されているかを判定する判定手段と、 前記判定手段によりシンボルが変数または機械語で記述
    された関数と判定されたとき、そのシンボルを前記シン
    ボルテーブル上の対応する絶対番地に置き換え、前記判
    定手段によりシンボルがインタプリタ形式の関数と判定
    されたとき、メモリー上の所定の番地にそのシンボルの
    内容を記述するプログラムを実行するためのルーチンを
    作成して前記シンボルをこのルーチンの存在するメモリ
    ー上の絶対番地に置き換えることにより、各プログラム
    を結合させるプログラム結合手段と、 前記プログラム結合手段により結合されたプログラムを
    順次実行するプログラム実行手段とを備えて成るプログ
    ラムテスト装置。
JP60254442A 1985-11-12 1985-11-12 プログラムテスト装置 Expired - Lifetime JPH0766342B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP60254442A JPH0766342B2 (ja) 1985-11-12 1985-11-12 プログラムテスト装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60254442A JPH0766342B2 (ja) 1985-11-12 1985-11-12 プログラムテスト装置

Publications (2)

Publication Number Publication Date
JPS62113244A JPS62113244A (ja) 1987-05-25
JPH0766342B2 true JPH0766342B2 (ja) 1995-07-19

Family

ID=17265059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60254442A Expired - Lifetime JPH0766342B2 (ja) 1985-11-12 1985-11-12 プログラムテスト装置

Country Status (1)

Country Link
JP (1) JPH0766342B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01274202A (ja) * 1988-04-27 1989-11-02 Japan Tobacco Inc ループ制御装置
JP2926898B2 (ja) * 1990-05-30 1999-07-28 横河電機株式会社 デバッグ・サポート装置
US5367685A (en) * 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
JP2792410B2 (ja) * 1993-09-30 1998-09-03 日本電気株式会社 モジュールの記述形式を判別して実行を行う機能を持つプログラム実行制御装置
JP3570870B2 (ja) * 1997-09-30 2004-09-29 株式会社東芝 システム構築装置、システム構築方法及びシステム構築プログラムを記録した媒体
US6110226A (en) * 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
JP3424596B2 (ja) * 1999-04-28 2003-07-07 日本電気株式会社 シンボル参照情報のキャッシュ方法ならびに装置
US8769517B2 (en) 2002-03-15 2014-07-01 International Business Machines Corporation Generating a common symbol table for symbols of independent applications
US10127138B2 (en) 2013-06-06 2018-11-13 Microsoft Technology Licensing, Llc. Debugging native code by transitioning from execution in native mode to execution in interpreted mode

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5890248A (ja) * 1981-11-25 1983-05-28 Hitachi Ltd プログラム間制御移動方式

Also Published As

Publication number Publication date
JPS62113244A (ja) 1987-05-25

Similar Documents

Publication Publication Date Title
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
KR950006619B1 (ko) 번역 코드 실행용의 개선된 에러 기록 방법 및 시스템
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US5446900A (en) Method and apparatus for statement level debugging of a computer program
US6330691B1 (en) Use of dynamic translation to provide breakpoints in non-writeable object code
US7086033B2 (en) Software debugger having a monitor for monitoring conditional statements within a software program
US6892379B2 (en) Methods and apparatus for use in aiding stack unwinding
JPH0766342B2 (ja) プログラムテスト装置
JPH07230386A (ja) データ処理装置及び制御ルーチン呼出し方法
US20030177471A1 (en) System and method for graphically developing a program
EP0406028A2 (en) Incremental compiler for source code development system
US20060174248A1 (en) Software tool for automatically protecting shared resources within software source code
JP4055197B2 (ja) プログラムに含まれる手続きの解析装置
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
Hart The advanced interactive debugging system (AIDS)
Ashby et al. Design of an interactive debugger for FORTRAN: MANTIS
JPS6292032A (ja) プログラムテスト方法
JP3077627B2 (ja) デバッグ方法およびデバッグプログラムを記録する記録媒体
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPS6261130A (ja) テストカバレツジ自動図示処理方式
Postiff University of Michigan EECS 100
Feriozi AC programming model for OS/2 device drivers
JP3018783B2 (ja) コンパイル方式

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term