JPH04270425A - プログラムデバッグ装置 - Google Patents

プログラムデバッグ装置

Info

Publication number
JPH04270425A
JPH04270425A JP3031029A JP3102991A JPH04270425A JP H04270425 A JPH04270425 A JP H04270425A JP 3031029 A JP3031029 A JP 3031029A JP 3102991 A JP3102991 A JP 3102991A JP H04270425 A JPH04270425 A JP H04270425A
Authority
JP
Japan
Prior art keywords
program
file
routine
debugging
sub
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
JP3031029A
Other languages
English (en)
Inventor
Tetsuo Kurisu
栗栖 哲男
Yukiko Watanabe
由紀子 渡辺
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP3031029A priority Critical patent/JPH04270425A/ja
Publication of JPH04270425A publication Critical patent/JPH04270425A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムデバッグ装
置に関し、特に、プログラムをデバッグテストする場合
に、異なるファイルにまたがるルーチンをも含めてプロ
グラムデバッグを連続して行えるプログラムデバッグ装
置に関するものである。
【0002】
【従来の技術】従来、プログラムデバッグ装置において
、被デバッグファイルでコールしているルーチンが他フ
ァイルに定義してある場合、すなわち、外部ルーチンコ
ールが被デバッグプログラムに存在する場合、インタプ
リタ方式でのプログラムデバッグでは、シミュレーショ
ン機能やスタブ機能を用いて外部ルーチンの代用を行い
、テストデバッグを行っている。また、インタプリタ言
語のプログラムからコンパイラで作成されたオブジェク
トプログラム(デバッグ済プログラム)を外部ルーチン
としてコールしたい場合には、例えば、特開昭63−2
45729号公報に記載のようなプログラム呼び出し方
式によって、オブジェクトプログラムを呼び出す方法が
あるが、この方法であると、プログラムデバッグ装置に
コンパイラがない場合は、コンパイラのあるホスト計算
機上でコンパイルしたオブジェクトプログラムを持って
きて利用しなければならない。
【0003】
【発明が解決しようとする課題】従って、従来のプログ
ラムデバッグ装置の場合、プログラムデバッグ装置のみ
で他ファイルに定義してあるルーチンを直接インタプリ
トし、デバッグし、テストする点について配慮がなされ
ておらず、複数のファイルに渡るプログラムの連動デバ
ッグができないという問題がある。
【0004】本発明の目的は、複数のファイルに渡るプ
ログラムの連動デバッグを可能とし、デバッグとテスト
作業の効率を向上させることのできるプログラムデバッ
ク装置を提供することにある。
【0005】
【課題を解決するための手段】上記の目的を達成するた
め、本発明のプログラムデバック装置は、ソースプログ
ラムを1文ごとに実行するソースプログラム逐次実行部
と、ソースプログラムのテキストを編集するエディタ部
と、ソースプログラムのテストデバッグを行うデバッグ
支援部とからなるプログラムデバッグ装置において、ル
ーチン名と当該ルーチン名のプログラムが格納されてい
るファイルとを対応づけるリンケージテーブルと、ファ
イル番号エリアを含むプログラムカウンタとを備え、デ
バッグ支援部によりプログラムカウンタの内容に従って
リンケージテーブルを参照し、2つ以上のファイルにま
たがるルーチン間のプログラムテストを連続して行うこ
とを特徴とする。
【0006】また、プログラムデバッグ装置において、
デバッグ支援部は、リンケージテーブルにより外部ルー
チンの所在するファイルを検出し、各ファイルの外部ル
ーチンごとに中間コードと変数名表を生成して、2つ以
上のファイルにまたがるルーチン間のプログラムテスト
を連続して行うことを特徴とする。
【0007】
【作用】これによれば、プログラムデバッグ装置に、ル
ーチン名と当該ルーチン名のプログラムが格納されてい
るファイルとを対応ずけるリンケージテーブルと、ファ
イル番号エリアを含むプログラムカウンタとが備えられ
る。デバッグ支援部は、プログラムカウンタの内容に従
ってリンケージテーブルを参照し、2つ以上のファイル
にまたがるルーチン間のプログラムテストを連続して行
う。例えば、デバッグ支援部が、ソースプログラム逐次
実行部によりソースプログラムを1文ごとに実行して、
プログラムテストを行う場合、外部ルーチンがコールさ
れると、リンケージテーブルにより外部ルーチンとそれ
が記述してあるファイルとの対応を取り、外部ルーチン
が記述してあるファイルを捜しだし、そのファイルを読
み込み、実行するファイルを当該ファイルに切り替える
。そして、ファイル番号エリアを含むプログラムカウン
タの内容を参照して、ファイル対応に(各ファイルのプ
ログラム対応に)管理しているソースコード情報,中間
コード情報などを用いてプログラムテストを行う。当該
ファイル内に記述してある外部ルーチンの実行が終わる
と、コール元のファイルに制御を戻す。
【0008】このようにして、ファイル対応にプログラ
ム情報の管理することにより、外部ルーチンコールを可
能にし、複数のファイルに渡るプログラムを連動してデ
バッグすることができる。これにより、複数のファイル
に渡るプログラムのデバッグとテスト作業を効率よく行
うことができる。すなわち、インタプリタ形式デバッガ
が制御する変数名表や中間コードをプログラム対応に持
つことにより、プログラム間の連動テストを可能とし、
ホスト処理装置に依存するプログラムテストの大半がワ
ークステーション上で可能となり、ホスト依存を脱却し
たプログラム開発環境を確立できる。
【0009】
【実施例】以下、本発明の一実施例を図により説明する
。図1は、本発明の一実施例にかかるプログラムデバッ
グ装置の構成を示すブロック図である。プログラムデバ
ッグ装置1は、コマンド解析部2,デバッグ支援部3,
エディタ部4,ソースプログラム逐次実行部5から構成
されている。ソースプログラム逐次実行部5は、構文解
析部6およびインタプリタ部7を備えており、テストデ
バッグを行なうプログラムを1文ごとに逐次実行する。 また、プログラムデバッグ装置1には、キーボード8お
よび出力装置9が接続されており、キーボード8から与
えられたデバッグコマンドにより、ソースプログラム1
0のテストデバッグを行い、デバッグした結果は、出力
装置9に表示される。デバッグ処理を行う場合、ソース
プログラム10から中間コード11および変数名表12
が生成されて、ソースプログラム逐次実行部5によりテ
ストを行うプログラムの逐次実行が行われる。
【0010】キーボード8により入力されたコマンドは
、コマンド解析部2により解析される。エディタ部4は
ソースプログラム10を修正する処理を行う。デバッグ
支援部3はデバッグされた結果をディスプレイ,プリン
タ,ファイル等の出力装置9に出力する。ソースプログ
ラム逐次実行制御部5では、まず、構文解析部6により
ソースプログラム10からのプログラムの1文を構文解
析し、中間コード11に変換する。次にインタプリタ部
7がその中間コード11を実行することによりソースプ
ログラム10のプログラム1文の実行が終了する。なお
、プログラムデバッグ装置1は、コマンド解析部2,デ
バッグ支援部3,エディタ部4,およびソースプログラ
ム逐次実行制御部5の各々の処理部の要素をファームウ
ェアで構成することなく、ソフトウェア(プログラム)
で構成することにより、汎用のワークステーションやパ
ーソナルコンピュータ上で、プログラムデバッグ装置を
実現することも可能である。
【0011】次に、本実施例にかかるファイル単位(外
部ルーチンとなるプログラム)の管理方法を図2を参照
して説明する。図2に示すように、各ファイル単位で外
部ルーチンとなっているソースプログラム20,中間コ
ード21,変数名表22などのファイル管理情報は、フ
ァイル管理テーブル23により各ファイル単位に管理さ
れる。ファイル管理テーブル23には、各々のファイル
単位を管理するための情報として一意のファイル番号,
ファイル名,中間コードエリアへのポインタ,変数名表
へのポインタ等を格納するデータフィールドが設けられ
、それぞれのデータフィールドにファイル単位管理のた
めのデータが格納される。テストデバッグのためのプロ
グラムが実行され、そこで外部ルーチンコールが発生す
ると、コールされた外部ルーチンの内容に従って、ファ
イル番号が例えば1から2へと変更され、当該テストデ
バッグのプログラムの実行に係る該当ファイルがファイ
ル管理単位(ファイルAの管理情報)24から、コール
された外部ルーチンにかかるファイル管理単位(ファイ
ルBの管理情報)25に切り替わることになる。
【0012】次に、図3および図4を参照して、外部ル
ーチンコールによりファイル管理単位が切り替わる動作
を具体的にプログラムの処理を例として説明する。図3
はプログラムカウンタ30の内容の遷移に対応して、外
部モジュールコールの動きを説明する図である。また、
図4はルーチン名と当該ルーチン名のプログラムが格納
されているファイルとを対応ずけるリンケージテーブル
の一例を示す図である。ここでは、ファイルSUB1.
PLIの中のSUB1ルーチンがファイルSUB2.P
LIの中のSUB2ルーチンをコールしている場合を例
として説明する。
【0013】ファイルSUB1.PLIのプログラムル
ーチンにおいて、各々のプログラム文の実行に進んで「
CALL  SUB2;」を実行する直前となると、そ
の時のプログラムカウンタ30の内容は「ファイル番号
=1,行番号=123,カラム番号=1」となり、次に
実行するプログラム文は、ファイル番号が1であり、行
番号が123で、カラム番号が1の「CALL  SU
B2;」であることを示している。ソースプログラム逐
次実行部5は、現プログラムカウンタ内容31から「C
ALL  SUB2;」のソースプログラム文を得て、
SUB2ルーチンをコールする処理を行う。この場合、
SUB2ルーチンは、ファイルSUB2.PLIに格納
されている。これは、図4に示すようなリンケージテー
ブル40を参照して、ルーチン名「SUB2」のルーチ
ンがファイル名「SUB2.PLI」のファイルに格納
されていることを認識して、現プログラム実行ファイル
をファイルSUB2.PLIに切替えることにより行う
【0014】この場合、サブルーチンコールの処理と同
様にして、プログラムカウンタ30の内容を切替えるた
め、現プログラムカウンタの内容を退避した後、プログ
ラムカウンタ内容32を新たに設定し、現プログラム実
行ファイルをファイルSUB2.PLIに切替えて、順
次にSUB2ルーチンの処理を実行する。そして、SU
B2ルーチンの処理が終了すると、リターン処理を行っ
て、旧プログラムカウンタの回復を行う。すなわち、プ
ログラムカウンタ30の内容を旧プログラムカウンタの
内容に回復し、プログラムカウンタ内容33として、元
のファイルSUB1.PLIのSUB1ルーチンに現プ
ログラム実行ファイルを切替える。このリターン処理を
行う場合にも、外部ルーチンコールの場合にはリンケー
ジテーブル40を参照して、当該外部ルーチンが格納さ
れているファイル名を認識してプログラム実行ファイル
を切替える。
【0015】このようにして、ファイル番号を含むプロ
グラムカウンタ30の内容が、順次にプログラムカウン
タ内容31,32,33と切り替わり、異なるファイル
の渡る各ルーチンのテストデバッグの処理を、手動によ
って各ファイルを切替える手間が生ずることなく、連続
して実行することができる。
【0016】図5(a),(b),(c)は、プログラ
ム文を実行するデバッグ処理の処理フローを示すフロー
チャートである。図5の処理フローを説明すると、ソー
スプログラム逐次実行制御部5がプログラムカウンタ3
0の内容によって次のプログラム文の処理を始めようと
する場合、図5(a)に示すように、プログラム文の文
実行処理で、まずステップ50において、現プログラム
カウンタの内容からプログラム文の得て、次のステップ
51において、プログラムカウンタの内容からファイル
番号が切替った否かを判断する。ファイル番号が切替っ
た場合には、ステップ52に進み、切替ったファイル番
号の対応するファイルの画面に切替える処理を行い、ス
テップ53に進む。また、ファイル番号が切替らない場
合には、そのままステップ53に進む。そして、次のス
テップ53において各文の処理を行って、文実行処理を
終了する。各文の処理では判定文,繰り返し文、呼び出
し文などの処理を行う。
【0017】呼び出し文(CALL)の処理では、図5
(b)に示すように、まず、ステップ54においてコー
ルされたルーチンが内部ルーチンか否かを判定する。内
部ルーチンであれば、そのまま内部ルーチンコールの処
理へと進む。また、ステップ54の判定で内部ルーチン
コールでないことが判定されると、ステップ55に進み
、当該ルーチン名がリンケージテーブル40に登録され
ているか否かを判定する。リンケージテーブル40に登
録されていない場合には、未定義エラーとする。リンケ
ージテーブルに登録されている場合、ステップ56に進
み、ファィル管理テーブル23に登録して、プログラム
実行ファイルのファイル管理情報へのポインタを設定す
る。これにより、各ファィルに格納されたルーチンのプ
ログラムのソースプログラム,中間コード,変数名表の
所在が指示される。そして、ステップ57において現プ
ログラムカウンタの退避処理を行い、次のステップ58
において新プログラムカウンタの内容の設定を行い、呼
び出し文の処理を終了する。
【0018】プログラム文の実行において、呼び出し文
(CALL)の処理の後、呼び出し元に戻るには復帰文
(RETURN)の処理を行う。復帰文(RETURN
)の処理では、図5(c)に示すように、ステップ59
において、先に退避しておいた旧プログラムカウンタへ
の回復の処理を行い、呼び出し元に戻る。
【0019】次に、文実行処理の制御の全体の流れを、
図2,図3および図4を参照し、図5のフローチャート
に従って説明する。外部モジュールの外部ルーチンコー
ルを含む処理の実際の動きを、ファイルSUB1.PL
Iの中のSUB1ルーチンがファイルSUB2.PLI
の中のSUB2ルーチンをコールしている場合を例とし
て説明する。「CALL  SUB2;」を実行する直
前のプログラムカウンタ30の内容は「ファイル番号=
1,行番号=123,カラム番号=1」となっている。 ソースプログラム逐次実行部5は、現プログラムカウン
タ内容31からプログラム文「CALL  SUB2;
」を得る(ステップ50)。「CALL  SUB2;
」のプログラム文自体は当該プログラム実行ファイル中
のプログラム文の処理なので、そのまま各文の処理(ス
テップ53)に移行して、「CALLSUB2;」の呼
び出し文の処理を行う。ここでは、呼出し文であるCA
LL文処理(図5(b)の処理)を行う。
【0020】CALL文の処理では、呼び出されたルー
チン名SUB2が内部ルーチン名であるか否かをチェッ
クし(ステップ54)、カレントなファイルすなわちプ
ログラムカウンタ内容31のファイル番号1に対応する
ファイルSUB1.PLI内でルーチン名SUB2を捜
す。見つかった場合には内部ルーチンコールの処理を行
うが、ここでは内部ルーチン名でないので、次にリンケ
ージテーブル40を参照して、ルーチン名SUB2が外
部ルーチンとして登録されていないかを検索する(ステ
ップ55)。リンケージテーブル40においてルーチン
名が見つからない場合は「SUB2未定義エラー」とな
る。ルーチン名が見つかった場合、そのルーチン名に対
応するファイル名SUB2.PLIを得る。次に、ファ
イル管理テーブル23によりファイル名SUB2.PL
Iでファイル番号を検索し、見つかったファイル番号を
新プログラムカウンタのファイル番号とし、ファイル管
理テーブル23にファイル名が未登録の場合に空いてい
るエントリにファイル名を登録する(ステップ56)。 そして、「CALL  SUB2;」のプログラム文の
次のプログラム文の解析を始める位置を旧プログラムカ
ウンタとしてスタック等に退避する(ステップ57)。 次に、当該ファイル番号2を新プログラムカウンタ内容
のファイル番号とし、プログラムカウンタ内容32の行
番号とカラム番号は共に1とする(ステップ58)。こ
れにより、「CALL  SUB2;」のプログラム文
の処理が終了する。
【0021】次に、ソースプログラム逐次実行制御部5
が、プログラムカウンタ30の内容により次のプログラ
ム文の実行処理を始めようとするとき、プログラムカウ
ンタ内容32は「ファイル番号=2,行番号=1,カラ
ム番号=1」となっているので、ファイル管理テーブル
23のファイル番号2に対応するファイル名となってい
るファイルBにおけるプログラムルーチン(ファイルS
UB2.PLIのプログラムルーチン)の行番号=1,
カラム番号=1からプロラム文の文実行処理を始める。 そして、次にファイル名SUB2.PLIの先頭から文
を得る(ステップ50)。この場合、前ファイル番号と
現ファイル番号が異なるので(ステップ51)、現プロ
グラム実行ファイルのソースプログラムを表示している
画面切り替えの処理を行い(ステップ52)。当該プロ
グラム文の各文の処理(SUB2ルーチンの処理)を行
う(ステップ53)。ファイルSUB2.PLIのルー
チンSUB2の実行が終了し、コール元に戻るときには
、RETURN処理(図5(c)の処理)を行い、スタ
ック等に退避した旧プログラムカウンタ内容の回復の処
理を行い(ステップ59)、プログラムカウンタ30に
設定する。
【0022】これにより、プログラムカウンタ30の内
容は「ファイル番号=1,行番号=123,カラム番号
=16」となり、プログラムカウンタ内容33となって
、ソースプログラム逐次実行部5がプログラムカウンタ
内容33により「CALLSUB2;」の次の位置のプ
ログラム文からの文実行処理を始める。プログラム文を
得る(ステップ50)と、また、前ファイル番号と現フ
ァイル番号が異なるので(ステップ51)、対応するプ
ログラム実行ファイルの画面への切り替え処理を行う(
ステップ53)。
【0023】このようにして、ファイル単位にプログラ
ム実行情報を管理し、外部ルーチンコールの度にファイ
ル単位の情報を切り替えることにより外部ルーチンコー
ルを実現する。
【0024】
【発明の効果】以上説明したように、本発明のプログラ
ムデバッグ装置によれば、単体ファイルのテストデバッ
グだけでなく、異なるファイルの外部ルーチンに渡って
の連動テストデバッグも可能となり、大規模なプログラ
ムのデバッグテストができるようになる。
【図面の簡単な説明】
【図1】本発明の一実施例にかかるプログラムデバック
装置の構成を示すブロック図。
【図2】ファイル管理テーブルによるファイル管理単位
の管理情報の一例を示す説明図。
【図3】プログラムカウンタの内容の遷移に対応して、
外部モジュールコールの動きを説明する図。
【図4】ルーチン名と当該ルーチン名のプログラムが格
納されているファイルとを対応ずけるリンケージテーブ
ルの一例を示す図。
【図5】プログラム文を実行するデバッグ処理の処理フ
ローを示すフローチャート。
【符号の説明】
1  プログラムデバッグ装置 2  コマンド解析部 3  デバッグ支援部 4  エディタ部 5  ソースプログラム逐次実行部 6  構文解析部 7  インタプリタ部 8  キーボード 9  出力装置 10  ソースプログラム 11  中間コード 12  変数名表 23  ファイル管理テーブル 24,25    ファイル単位の管理情報30  プ
ログラムカウンタ 40  リンケージテーブル

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】  ソースプログラムを1文ごとに実行す
    るソースプログラム逐次実行部と、ソースプログラムの
    テキストを編集するエディタ部と、ソースプログラムの
    テストデバッグを行うデバッグ支援部とからなるプログ
    ラムデバッグ装置において、ルーチン名と当該ルーチン
    名のプログラムが格納されているファイルとを対応づけ
    るリンケージテーブルと、ファイル番号エリアを含むプ
    ログラムカウンタとを備え、デバッグ支援部によりプロ
    グラムカウンタの内容に従ってリンケージテーブルを参
    照し、2つ以上のファイルにまたがるルーチン間のプロ
    グラムテストを連続して行うことを特徴とするプログラ
    ムデバッグ装置。
  2. 【請求項2】  請求項1に記載のプログラムデバッグ
    装置において、デバッグ支援部は、リンケージテーブル
    により外部ルーチンの所在するファイルを検出し、各フ
    ァイルの外部ルーチンごとに中間コードと変数名表を生
    成して、2つ以上のファイルにまたがるルーチン間のプ
    ログラムテストを連続して行うことを特徴とするプログ
    ラムデバッグ装置。
  3. 【請求項3】  請求項1に記載のプログラムデバッグ
    装置を用いて実行するプログラムデバッグ方法であって
    、ファイル対応に外部ルーチンのソースコード情報,中
    間コード情報を管理し、外部ルーチンがコールされた場
    合に、外部ルーチンとそれが記述してあるファイルとの
    対応を取り、実行するファイルを当該外部ルーチンの記
    述されたファイルに切り替え、当該ファイル内に記述し
    てある外部ルーチンの実行が終わると、コール元のファ
    イルに制御を戻すことを特徴とするプログラムデバック
    方法。
JP3031029A 1991-02-26 1991-02-26 プログラムデバッグ装置 Pending JPH04270425A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3031029A JPH04270425A (ja) 1991-02-26 1991-02-26 プログラムデバッグ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3031029A JPH04270425A (ja) 1991-02-26 1991-02-26 プログラムデバッグ装置

Publications (1)

Publication Number Publication Date
JPH04270425A true JPH04270425A (ja) 1992-09-25

Family

ID=12320089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3031029A Pending JPH04270425A (ja) 1991-02-26 1991-02-26 プログラムデバッグ装置

Country Status (1)

Country Link
JP (1) JPH04270425A (ja)

Similar Documents

Publication Publication Date Title
US6003143A (en) Tool and method for diagnosing and correcting errors in a computer program
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
CA2143145C (en) Determining dynamic properties of programs
US8037450B2 (en) System and methods for tracing code generation in template engines
JPH0950389A (ja) コンピュータシステムを使って実装される装置及び方法
US20030115576A1 (en) Breakpoint safety net
JPH0766342B2 (ja) プログラムテスト装置
CN100456260C (zh) 一种用于对解释语言程序进行调试方法及装置
JPH04270425A (ja) プログラムデバッグ装置
CN117075874A (zh) Scade模型与c代码的映射工具
JP2820184B2 (ja) ロードモジュール単体テスト支援装置
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JP2001166966A (ja) デバッガにおける被テストプログラムの実行環境管理方法
CN100418067C (zh) 计算机程序查错辅助方法及系统
JPH06231001A (ja) シンボル名入力装置
JPS63259735A (ja) プログラム実動作環境におけるプログラム図によるプログラムデバツク方式
JP2000353112A (ja) 中間言語レベルのデバッグ方法及びシステム
JPH03144832A (ja) プリコンパイラ言語プログラムのシンボリックデバッグ装置
JPH0448343A (ja) プログラムデバッグ支援装置
JPH0468446A (ja) デバッグ支援装置
JPH0259936A (ja) カーソル移動処理方式
JPH0353334A (ja) 言語処理プログラムのデバッグ情報出力処理方式
JPH0695910A (ja) 異常処理のための対話型デバッグ制御方式
JPH05151030A (ja) 利用者プログラム異常終了時の情報表示方式
JP2001067245A (ja) シミュレーション方法及びシミュレーション装置