JPH09160806A - デバッグ支援方法および装置 - Google Patents

デバッグ支援方法および装置

Info

Publication number
JPH09160806A
JPH09160806A JP7325396A JP32539695A JPH09160806A JP H09160806 A JPH09160806 A JP H09160806A JP 7325396 A JP7325396 A JP 7325396A JP 32539695 A JP32539695 A JP 32539695A JP H09160806 A JPH09160806 A JP H09160806A
Authority
JP
Japan
Prior art keywords
information
variable
source program
execution
value
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
JP7325396A
Other languages
English (en)
Inventor
Etsuko Imamura
悦子 今村
Norie Yashiro
紀恵 矢代
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 Ltd
Original Assignee
Hitachi 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 Ltd filed Critical Hitachi Ltd
Priority to JP7325396A priority Critical patent/JPH09160806A/ja
Publication of JPH09160806A publication Critical patent/JPH09160806A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 ソースプログラムとそのソースプログラム中
で使用されている変数の実行時の値を、場所を取らず、
かつ見易く表示することにより、実行時のプログラムの
流れを容易に追うことを可能にするデバッグ支援方法を
およびデバッグ支援装置を提供する。 【解決手段】 デバッガ1aは、ソースプログラム4
を、ソースプログラム4の位置を表す情報を付加した構
文構造を表すカラム情報付き構文木5に変換し、実行時
の値を表示する変数の位置を示す情報と実行時の値を、
この構文木5を実行しながら格納した実行時データ情報
9を用いることにより、変数の実行時の値を、ソースプ
ログラム4中のその変数が現れる位置に挿入して表示す
る。

Description

【発明の詳細な説明】
【0001】
【発明に属する技術分野】本発明は、プログラム開発を
支援する、特に、ソースプログラムとそのソースプログ
ラム中で使用されている変数の実行時の値の表示とプロ
グラム部分実行を行うプログラムデバッグ支援方法およ
びデバッグ支援装置に関する。
【0002】
【従来の技術】ソースプログラムとそのソースプログラ
ム中で使用されている変数の実行時の値を表示する方法
には、以下の二つの方法がある。第一の方法では、ソー
スプログラムとそのソースプログラム中で使用されてい
る変数の実行時の値を、別々に表示する。プログラムデ
バッグ方式(特開平5−46434)によると、ソース
プログラムの表示要求指定行に含まれるデータ項目の値
の表示は、データ項目のうちカーソルで指定されたもの
の値だけを画面の隅の所定領域に表示する。
【0003】第二の方法では、ソースプログラム中で使
用されている変数と実行時の値を置換して、ソースプロ
グラムを表示する。プログラムデバッグ方式(特開平2
−242442)によると、ソース行中で使用されてい
る変数を、その変数の実行時の値に置換して、置換前の
ソース行とともに表示する。
【0004】また、ソースプログラムの範囲を指定し、
その範囲中に現れる変数の中で値が未定義である変数に
は値を入力し、部分実行を行う方法には、プログラム部
分実行方法およびプログラム部分実行装置(特開平5−
20060)がある。この方法では、プログラムの実行
すべき範囲を指定し、その範囲のプログラムを解釈し、
実行に必要な内部状態の値を全て入力してから、入力さ
れた内部状態の値を用いて実行を行う。
【0005】
【発明が解決しようとする課題】ソースプログラムとそ
のソースプログラム中で使用されている変数の実行時の
値を表示する従来の二つの方法には、それぞれ次に示す
問題がある。第一の方法の場合、ソースプログラムとそ
のソースプログラム中で使用されている変数の実行時の
値を別々に表示するため、プログラムデバッグ時に、実
行時のプログラムの流れと変数の実行時の値を同時に追
うことは難しい。
【0006】第二の方法の場合、ソース行の変数とその
変数の実行時の値を置換した行と置換前のソース行とを
ともに表示するため、実行時のプログラムの流れと変数
の実行時の値を同時に追うことは可能である。しかし、
置換する値の型や表示形式、一論理行の長さなどによっ
ては、置換前と置換後の行では比較し難い場合や数字と
記号だけで見難い場合がある。また、ソースプログラム
一行に対する結果は、置換前と置換後の二行を出力する
ため、ソースプログラムの二倍になる。このことから、
第二の方法は、大きなプログラムのデバッグやプログラ
ムの全体の流れを追うことには適さない。
【0007】本発明の第一の目的は、ソースプログラム
とそのソースプログラム中で使用されている変数の実行
時の値を、場所を取らず、かつ見易く表示することによ
り、実行時のプログラムの流れを容易に追うことを可能
にするデバッグ支援方法およびデバッグ支援装置を提供
することである。
【0008】また、ソースプログラムの範囲を指定し、
テスト実行を行う従来の方法では、その範囲中に現れる
変数の中で値が未定義である変数に対して、最初に全て
まとめて値を代入しなければならない。さらに、本発明
の第二の目的は、部分テスト実行を行いながら、未定義
変数が出現したときに、プログラムの流れにそって値を
代入することができるデバッグ支援方法およびデバッグ
支援装置を提供することである。
【0009】
【課題を解決するための手段】上記第一目的を達成する
ため、本発明のデバッグ支援方法では、ソースプログラ
ムを、ソースプログラム中に現れる変数の位置を表す情
報を付加した構文構造を表すカラム情報付き構文木に変
換し、カラム情報付き構文木を論理行単位に実行しなが
ら、実行時の値を表示する変数の位置を示す情報と実行
時の値を、実行時データ情報に登録し、実行時データ情
報を用いて、変数の実行時の値を、ソースプログラム中
のその変数が現れる位置に挿入しながら、ソース行単位
に表示する。
【0010】また、上記第二目的を達成するため、本発
明のデバッグ支援方法では、カラム情報付き構文木を論
理行単位に評価しながら、値が未定義である変数の位置
を示す情報とその変数に対応するカラム情報付き構文木
のノード番号の情報を、未定義変数情報に登録し、未定
義変数情報を用いて、部分テスト実行を行うソースプロ
グラム中で値が未定義である変数に値を入力しながら、
ソースプログラムをソース行単位に表示し、実行する。
【0011】本発明では、ソースプログラムを、ソース
プログラム中に現れる変数の位置を表す情報を付加した
カラム情報付き構文木に変換し、このカラム情報付き構
文木を論理行単位に実行しながら、実行時の値を表示す
るよう指定されている変数の位置を示す情報と実行時の
値を実行時データ情報に登録するので、この実行時デー
タ情報を用いて、変数の実行時の値を、ソースプログラ
ム中のその変数が現れる位置に挿入して表示することに
より、実行時のプログラムの流れを容易に追うことが可
能となる。
【0012】また、本発明は、カラム情報付き構文木を
論理行単位に評価しながら、値が未定義である変数が現
れるたびに、ソースプログラム中でその変数の位置を示
す情報とカラム情報付き構文木のノード番号の情報を未
定義変数情報に登録するので、この未定義変数情報を用
いて、ソースプログラムを実行中、そのソースプログラ
ム中の変数に、その変数が現れた位置で、必要に応じて
値を入力することが可能となる。
【0013】
【発明の実施の形態】以下に本発明の2つの実施例を図
面を用いて説明する。第1実施例は、実行時中のソース
プログラムに現れる変数の実行時の値を、その変数がソ
ースプログラム中に現れた位置に挿入して表示すること
により、実行時のプログラムの流れを容易に追うことを
可能にするデバッグ支援方法で、第2実施例は、ソース
プログラムを部分テスト実行しながら、値が未定義であ
る変数が現れるたびに、その変数がソースプログラム中
で現れた位置で、値を代入することを可能にしたデバッ
グ支援方法である。
【0014】図1は第1実施例の機能ブロック図であ
り、図2は図1の機能ブロック図における処理手順を示
すフローチャートであり、図3は本発明を実施する計算
機装置のシステム構成図である。図4はデバッグ対象と
するソースプログラム4の例で、図5はそのソースプロ
グラム4を入力し実行した場合の第1実施例の出力例で
ある。図面内で用いた実線は制御の流れを、破線はデー
タの読み書き関係を示す。
【0015】図3において、処理装置11は、入力装置
2と出力装置3と主記憶装置12が接続されている。処
理装置11には、デバッガ1が格納されている。デバッ
ガ1は、本発明の入力装置2からデバッガ1が処理する
コマンドを入力し、そのコマンドに対応する処理を行
い、その結果を表示する必要があれば、それを出力装置
3に表示する。
【0016】主記憶装置12には、以下に示す7つのデ
ータ情報が格納されている。 (1)ソースプログラム4 図4にその一例を示す。プログラミング言語で記述され
ているデバッグ対象のソースである。 (2)カラム情報付き構文木5 ソースプログラム4の構文構造を表す構文木に、ソース
プログラム4における字句の位置を表す情報を付加した
ものである。図6に、図4に示したソースプログラムに
対応した構文木の例を示す。
【0017】(3)表示範囲情報6 図7にそのテーブル構造を示す。変数の実行時の値を表
示させるソースプログラム4の範囲の情報と部分テスト
実行を行うソースプログラム4の範囲の情報を格納す
る。 (4)表示変数名情報7 図8にそのテーブル構造を示す。実行時の値を表示させ
ることを表す、ソースプログラム4中に現れる変数名を
格納する。
【0018】(5)カレントポイント8 図9にそのテーブル構造を示す。ソースプログラム4と
カラム情報付き構文木5の現在実行している位置を表す
情報を格納する。 (6)実行時データ情報9 図10にそのテーブル構造を示す。実行時の値を表示さ
せる変数の位置を示すソース行番号とカラム数と、実行
時の値を格納する。
【0019】(7)未定義変数情報10 図11にそのテーブル構造を示す。ソースプログラム4
を実行中、値が未定義である変数が存在した場合に、そ
の変数の情報として、ソースプログラム4中での位置を
示すソース行番号とカラム数、そしてその変数のカラム
情報付き構文木5における構文木Noを格納する。
【0020】図1に示すように、第1実施例のデバッガ
1aは、実行制御部101a、構文木生成部102、表
示範囲設定部103、表示変数名設定部104、カレン
トポイント初期化部105、実行管理部106a、コー
ド実行部107a、表示部108aからなる。デバッガ
1aは、入力装置2からコマンドを入力し、その入力コ
マンドに対応する処理の制御を実行制御部101aで行
う。
【0021】図2に示す実行制御部101aのフローチ
ャートに従い、第1実施例の処理手順を説明する。 (1)構文木生成部102において、ソースプログラム
4を入力とし、カラム情報付き構文木5を生成する。 (2)表示範囲設定部103において、変数の実行時の
値を表示する範囲を入力装置2から入力し、表示範囲情
報6に格納する。
【0022】(3)表示変数名設定部104において、
実行時の値を表示させる変数の名前を入力装置2から入
力し、表示変数名情報7に格納する。 (4)カレントポイント初期化部105で、ソースプロ
グラム4とカラム情報付き構文木5の実行を開始する位
置の情報を、カレントポイント8に設定する。
【0023】(5)ソースプログラム4を実行するた
め、表示範囲情報6とカレントポイント8を入力とす
る、実行管理部106aを呼び出す。
【0024】以下、図2に記載の個々の処理部を、図面
を用いて詳細に説明する。図12は、構文木生成部10
2のフローチャートである。構文木生成部102は、ソ
ースプログラム4を入力し、プログラムを記述している
プログラム言語の文法にしたがって字句解析を行いなが
ら、ソース行番号とカラム数をカウントする。字句解析
終了後、構文解析を行いながら、カラム情報付加部10
21により、ソースプログラム4における位置の情報を
構文構造を表す構文木に付加したカラム情報付き構文木
5を生成する。字句解析、構文解析については、多数の
著書(A.V.エイホ,R.セイシ,J.D.ウルマン
著/原田賢一訳「コンパイラI II 原理・技法・ツー
ル」,サイエンス社,1990年10月等)で説明され
ているので、ここでは省略する。
【0025】図13は、カラム情報付加部1021のフ
ローチャートである。カラム情報付加部1021は、構
文木生成部102からカラム情報付き構文木5の構文木
Noとソース行番号とカラム数を入力し、入力した構文
木Noからカラム情報付き構文木5を検索し、対応する
構文木Noのソース行番号の欄507とカラム数の欄5
08に、入力したソース行番号とカラム数を格納する。
【0026】図14は、表示範囲設定部103のフロー
チャートである。表示範囲設定部103は、入力装置2
から、変数の実行時の値を表示するソースプログラム4
の範囲の開始位置と終了位置を表す行番号を入力し、表
示範囲情報6の実行時データ表示用の開始の欄61と終
了の欄62に格納する。特に表示範囲情報6に範囲指定
がない場合は、変数の実行時の値を表示する範囲とし
て、全ソースプログラム4を対象とするような範囲デー
タを入れる。
【0027】図15は、表示変数名設定部104のフロ
ーチャートである。表示変数名設定部104は、入力装
置2から、ソースプログラム4中に現れる、実行時の値
を表示させる変数の名前を入力し、表示変数名情報7に
格納する。
【0028】図16は、カレントポイント初期化部10
5のフローチャートである。カレントポイント初期化部
105は、実行を開始するソースプログラム4の行番号
とカラム情報付き構文木5の構文木No501を実行制
御部101から入力し、カレントポイント8のソースプ
ログラム用の欄81とカラム情報付き構文木用の欄82
に格納する。
【0029】図17は、実行管理部106aのフローチ
ャートである。実行管理部106aは、表示範囲情報6
から実行時の値を表示する範囲の情報とカレントポイン
ト8を入力とし、以下の処理を行う。
【0030】(1)表示範囲情報6から入力した実行時
の値を表示する範囲の開始位置と終了位置を表すソース
プログラム4の行番号を、それぞれ変数STARTと変
数ENDに代入する。 (2)カレントポイント8と変数STARTを比較す
る。
【0031】(3)カレントポイント8<変数STAR
T、つまり実行時の値を表示する範囲の開始位置よりも
カレントポイント8が前に存在する場合には、『実行時
データ表示OFF、実行時の値を表示する範囲の開始位
置まで実行』という命令をコード実行部107aに出力
する。 (4)カレントポイント8と変数ENDを比較する。
【0032】(5)カレントポイント8≦変数END、
つまりカレントポイント8が実行時の値を表示する範囲
内である場合は、論理行単位の実行とソース行単位の表
示を行うため、表示範囲を制御する表示ポインタHPと
ソース行の区切りを制御するソースポインタSPを用意
し、対象としているソースプログラム4の範囲の実行と
表示を全て終えるまで、以下の処理を繰返し行う。
【0033】(a)ポインタHPにカレントポイント8
を代入し、同じところを指すようにする。 (b)ポインタSPにカレントポイント8を代入し、同
じところを指すようにする。 (c)『実行時データ表示ON、一論理行を実行』とい
う命令をコード実行部107aに出力する。
【0034】(d)カレントポイント8とポインタSP
を比較する。 (e)カレントポイント8とポインタSPが同じソース
行を指している場合、ソースプログラム4の行の区切り
が悪いことを示すので、行単位の表示を行うことができ
ない。よって、カレントポイント8とポインタSPが違
う行を指すまで、処理(b)から処理(d)を繰り返し
行う。 (f)ポインタHPからカレントポイント8の前までの
範囲に対して、『表示』という命令を表示部108aに
出力する。
【0035】(6)カレントポイント8>変数END、
つまり実行時の値を表示する範囲の終了位置よりもカレ
ントポイント8が後に存在する場合には、『実行時デー
タ表示OFF、実行』という命令をコード実行部107
aに出力する。
【0036】図18は、コード実行部107aのフロー
チャートである。コード実行部107aは、実行管理部
106aから実行時の値を表示するかどうかを指定した
命令と実行範囲を入力し、表示指定に応じて以下の処理
を行う。
【0037】(1)表示指定がONの場合には、カラム
情報付き構文木5の実行範囲の部分を論理行単位に実行
しながら、表示変数名情報7に登録されている変数が現
れるたびに、実行時データ情報設定部1071を呼び出
す。 (2)表示指定がOFFの場合には、カラム情報付き構
文木5の実行範囲の部分を実行する。
【0038】図19は、実行時データ情報設定部107
1のフローチャートである。実行時データ情報設定部1
071は、コード実行部107aから構文木Noを入力
し、この構文木Noからカラム情報付き構文木5を検索
し、この構文木Noに対応したソース行番号507とカ
ラム数508と実行時の値509を、実行時データ情報
9に格納する。本発明は、変数の実行時の値を、その変
数が現れた位置に挿入しながらカラム単位にソースプロ
グラムを表示するため、表示するさいに参照する実行時
データ情報9へのデータの格納は、ソース行番号、カラ
ム数の小さい順にソートしながら行う。
【0039】図20は、表示部108aのフローチャー
トである。表示部108aは、実行管理部106aから
表示する範囲の情報と実行時データ情報9を入力とし、
以下の処理を行う。実行時の値をソース行に挿入しなが
ら表示を行うため、表示位置を制御する、ソース行番号
とカラム数を押さえるポインタKPを用意する。
【0040】(1)実行管理部106aから、表示する
範囲を入力する。 (2)ポインタKPに、表示する範囲の開始位置の情報
を設定する。 (3)実行時データ情報9を検索し、格納されているデ
ータがなくなるまで、以下の処理を繰り返し行う。
【0041】(a)実行時データ情報9から、格納され
ている1つのデータ(Aとする)の情報を取得する。 (b)データAのソース行番号とカラム数の情報から、
ソースをそのデータAに対応する位置まで表示する。 (c)ポインタKPを、データAより1カラムだけ大き
い位置に設定する。
【0042】(d)データAの実行時の値を表示する。 (f)実行時データ情報9に格納されているデータAの
情報をクリアする。
【0043】(7)表示範囲の情報とポインタKPか
ら、表示範囲を最後まで表示する。
【0044】以上説明したように、ソースプログラム4
中の位置を表す情報を、構文構造を表す構文木に付加
し、表示範囲と実行時の値を表示させる変数名を指定を
することにより、その変数の実行時の値を、その変数が
ソースプログラム中に現れた位置に挿入しながら、表示
範囲の部分のソースプログラムを表示することが可能と
なる。
【0045】なお、上記の第1実施例は、ソースプログ
ラムの流れにそって、そのソースプログラム中で使用さ
れている変数の実行時の値を表示することにより、変数
の値の変化と変化した位置を追跡することが可能とな
る。また、上記の第1実施例の出力結果をすべて、画面
ではなく、ファイルに格納することにより、無人システ
ムのエラー検出機能に応用することが可能となる。
【0046】第1実施例を変更することで、ソースプロ
グラムを部分実行しながら、値が未定義である変数が現
れるたびに、その変数がソースプログラム中で現れた位
置で、値を代入することができる。この第2実施例を以
下に説明する。
【0047】図21は第2実施例の機能ブロック図であ
り、第1実施例の機能ブロック図である図1と同じ番号
のついているものは、同じ機能を持つブロックである。
図22は図21の機能ブロック図における処理手順を示
すフローチャートであり、図23は図4のソースプログ
ラムを入力し実行した場合の第2実施例の出力例であ
る。
【0048】図21に示すように、第2実施例のデバッ
ガ1bは、部分実行するソースプログラム4において、
値が未定義の変数を検出し、その変数に値を入力すると
いう処理が増えたことに伴い、実行管理部106aとコ
ード実行部107aと表示部108aを変更した点と、
部分実行する範囲を設定する部分テスト実行範囲設定部
109と、実行中に現れた値が未定義の変数を処理する
未定義変数検出部1072と、値が未定義の変数に入力
装置2から値を設定するテストデータ入力部110を新
たに持つ点で、第1実施例のデバッガ1aと異なる。
【0049】図22に示す実行制御部101bのフロー
チャートに従い、第2実施例の処理手順を説明する。 (1)構文木生成部102において、ソースプログラム
4を入力とし、カラム情報付き構文木5を生成する。
【0050】(2)部分テスト実行範囲設定部109に
おいて、部分実行を行う範囲を入力装置2から入力し、
表示範囲情報6に格納する。 (3)カレントポイント初期化部105で、部分実行を
開始するソースプログラム4とカラム情報付き構文木5
の位置の情報を、カレントポイント8に格納する。
(4)ソースプログラム4の部分実行を行うため、表示
範囲情報6とカレントポイント8を入力とする、実行管
理部106bを呼び出す。
【0051】以下、図22に記載の個々の処理部を、図
面を用いて詳細に説明する。図24は、部分テスト実行
範囲設定部109のフローチャートである。
【0052】部分テスト実行範囲設定部109は、入力
装置2から、部分実行を行うソースプログラム4の範囲
の開始位置と終了位置を表す行番号を入力し、表示範囲
情報6の部分テスト実行用の開始の欄63と終了の欄6
4に格納する。
【0053】図25は、実行管理部106bのフローチ
ャートである。実行管理部106bは、表示範囲情報6
から部分テスト実行を行う範囲の情報とカレントポイン
ト8を入力とし、以下の操作を行う。
【0054】(1)表示範囲情報6から入力した部分テ
スト実行を行う範囲の開始位置と終了位置を表すソース
プログラム4の行番号を、それぞれ変数STARTと変
数ENDに代入する。 (2)カレントポイント8と変数ENDを比較する。
【0055】(3)カレントポイント8≦変数END、
つまりカレントポイント8が部分テスト実行する範囲内
である場合は、論理行単位の評価とソース行単位の表示
を行うため、表示範囲を制御する表示ポインタHPとソ
ース行の区切りを制御するソースポインタSPを用意
し、対象としている範囲のソースプログラム4の表示と
実行を全て終えるまで、以下の処理を繰返し行う。
【0056】(a)ポインタHPにカレントポイント8
を代入し、同じところを指すようにする。 (b)ポインタSPにカレントポイント8を代入し、同
じところを指すようにする。 (c)『一論理行を評価』という命令をコード実行部1
07bに出力する。
【0057】(d)カレントポイント8とポインタSP
を比較する。 (e)カレントポイント8とポインタSPが同じソース
行を指して場合、ソースプログラム4の行の区切りが悪
いことを示すので、行単位の表示を行うことができな
い。よって、カレントポイント8とポインタSPが違う
行を指すまで、処理(b)から処理(d)を繰り返し行
う。
【0058】(f)ポインタHPからカレントポイント
8の前までの範囲に対して、『表示』という命令を表示
部108bに出力する。 (g)カレントポイント8にポインタHPを代入し、実
行範囲の開始位置に設定する。 (h)ポインタHPからカレントポイント8の前までの
範囲に対して、『実行』という命令をコード実行部10
7bに出力する。
【0059】図26は、コード実行部107bのフロー
チャートである。コード実行部107bは、実行管理部
106bからソースを評価するのか実行するのかを指定
した命令とその命令の対象となる範囲を入力し、命令の
種類に応じて以下の処理を行う。
【0060】(1)命令が評価の場合は、指定された範
囲のカラム情報付き構文木5を評価しながら、未定義変
数が出現するたびに、未定義変数検出部1072を呼び
出す。 (2)命令が実行の場合には、指定された範囲のカラム
情報付き構文木5を実行する。
【0061】図27は、未定義変数検出部1072のフ
ローチャートである。未定義変数検出部1072は、コ
ード実行部107bから未定義変数のカラム情報付き構
文木5における構文木Noとその変数がソースプログラ
ム4中に現れた位置を表すソース行番号とカラム数を入
力し、未定義変数情報10に格納する。本発明は、ソー
スプログラム4を部分テスト実行中、そのソースプログ
ラム4を表示しながら、値が未定義である変数が現れる
たびに、その変数が現れた位置で、値を入力することを
可能にするため、カラム単位にソースプログラム4を表
示しながら入力プロンプト表示する。よって、このカラ
ム単位にソースプログラム4を表示するさいに参照す
る、未定義変数情報10へのデータの格納は、ソース行
番号、カラム数の小さい順にソートしながら行う。
【0062】図28は、表示部108bのフローチャー
トである。表示部108bは、実行管理部106bから
表示する範囲の情報と未定義変数情報10を入力とし、
以下の処理を行う。ソースプログラム4を部分テスト実
行中、そのソースプログラム4を表示しながら、値が未
定義である変数が現れるたびに、その変数が現れた位置
で値を入力するため、表示位置を制御する、ソース行番
号とカラム数を押さえるポインタKPを用意する。
【0063】(1)実行管理部106bから、表示する
範囲を入力する。 (2)ポインタKPに、表示する範囲の開始位置の情報
を設定する。 (3)未定義変数情報10を検索し、格納されているデ
ータがなくなるまで、以下の処理を繰り返し行う。
【0064】(a)未定義変数情報10から、格納され
ている1つのデータ(Bとする)の情報を取得する。 (b)データBのソース行番号とカラム数の情報から、
ソースをそのデータBに対応する位置まで表示する。
【0065】(c)ポインタKPを、データBより1カ
ラムだけ大きい位置に設定する。 (d)データBの構文木Noを入力とするテストデータ
入力部110を呼び出し、変数に値を入力する。 (f)未定義変数情報10に格納されているデータBの
情報をクリアする。
【0066】(4)表示範囲の情報とポインタKPか
ら、表示範囲を最後まで表示する。
【0067】図29は、テストデータ入力部110のフ
ローチャートである。テストデータ入力部110は、表
示部108bから構文木Noと入力装置2から変数の値
を入力し、その入力した値を構文木Noが指すカラム情
報付き構文木5の実行時の値の欄509に格納する。
【0068】以上説明したように、部分テスト実行する
範囲を指定をすることにより、その範囲のソースプログ
ラム4を表示しながら、値が未定義である変数が現れた
場合には、その変数が現れたソースプログラム4の位置
で入力装置2から値を入力し、実行することが可能とな
る。
【0069】
【発明の効果】本発明には、以下の効果がある。ソース
プログラムを実行中、そのソースプログラム中に現れ
る、変数の実行時の値を、その変数が現れた位置で挿入
しながら、ソースプログラムを表示することが可能であ
る。この方法は、従来の方法に比べ、表示する量も少な
く、かつ見易いため、実行時のプログラムの流れを容易
に追うことが可能である。
【0070】また、ソースプログラムの部分テスト実行
を行う場合、そのソースプログラム中に現れる変数に、
必要に応じて、その変数が現れた位置で、値を代入しな
がら、実行することが可能である。
【0071】以上のことから、プログラムをデバッグす
るさいに、実行時のプログラムの流れと変数の実行時の
値を同時に追うことが容易になり、プログラム実行時の
データの値の変化と値が変化したソースプログラムの位
置を、簡単に追跡することが可能である。
【図面の簡単な説明】
【図1】本発明の実行時データ表示に関するデバッグ支
援方法の一実施例の機能ブロック図。
【図2】本発明の第1実施例における実行制御部のフロ
ーチャート。
【図3】本発明のシステム構成図。
【図4】ソースプログラムの例。
【図5】本発明の第1実施例における実行時データ表示
の出力例。
【図6】カラム情報付き構文木を管理するテーブルの
例。
【図7】表示範囲情報を管理するテーブルの例。
【図8】表示変数名情報を管理するテーブルの例。
【図9】カレントポイントを管理するテーブルの例。
【図10】実行時データ情報を管理するテーブルの例。
【図11】未定義変数情報を管理するテーブルの例。
【図12】本発明の構文木生成部のフローチャート。
【図13】本発明のカラム情報付加部のフローチャー
ト。
【図14】本発明の表示範囲設定部のフローチャート。
【図15】本発明の表示変数名設定部のフローチャー
ト。
【図16】本発明のカレントポイント初期化部のフロー
チャート。
【図17】本発明の第1実施例における実行管理部のフ
ローチャート。
【図18】本発明の第1実施例におけるコード実行部の
フローチャート。
【図19】本発明の第1実施例における実行時データ情
報設定部のフローチャート。
【図20】本発明の第1実施例における表示部のフロー
チャート。
【図21】本発明の部分テスト実行に関するデバッグ支
援方法の一実施例の機能ブロック図。
【図22】本発明の第2実施例における実行制御部のフ
ローチャート。
【図23】本発明の第2実施例における部分テスト実行
の出力例。
【図24】本発明の部分テスト実行範囲設定部のフロー
チャート。
【図25】本発明の第2実施例における実行管理部のフ
ローチャート。
【図26】本発明の第2実施例におけるコード実行部の
フローチャート。
【図27】本発明の第2実施例における未定義変数検出
部のフローチャート。
【図28】本発明の第2実施例における表示部のフロー
チャート。
【図29】本発明の第2実施例におけるテストデータ入
力部のフローチャート。
【符号の説明】
1:デバッガ、101:実行制御部、102:構文木生
成部、1021:カラム情報付加部、103:表示範囲
設定部、104:表示変数名設定部、105:カレント
ポイント初期化部、106:実行管理部、107:コー
ド実行部、1071:実行時データ情報設定部、107
2:未定義変数検出部、108:表示部、109:部分
テスト実行範囲設定部、110:テストデータ入力部、
2:入力装置、3:出力装置、4:ソースプログラム、
5:カラム情報付き構文木、6:表示範囲情報、7:表
示変数名情報、8:カレントポイント、9:実行時デー
タ情報、10:未定義変数情報、11:処理装置、1
2:主記憶装置

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】入力装置、表示装置および記憶装置を有す
    る処理装置を用いて、プログラミング言語で記述された
    ソースプログラムと、前記ソースプログラム中で使用さ
    れている変数の実行時の値を表示するデバッグ支援方法
    において、 (a) 前記ソースプログラム中の位置を示すソース行とカ
    ラム数の情報を、前記ソースプログラムの構文構造を表
    す構文木に付加してできるカラム情報付き構文木に、前
    記ソースプログラムを変換し、 (b) 前記ソースプログラムの特定の範囲と、前記特定範
    囲に現れる変数の中、実行時の値を表示させる変数を指
    定する情報を、入力装置から入力し、 (c) 前記カラム情報付き構文木を実行中、前記特定範囲
    内では、実行時の値を表示させる指定を行った前記変数
    の実行時の値を、前記ソースプログラムの前記変数が現
    れる位置に挿入しながら、前記ソースプログラムを表示
    することを特徴とするデバッグ支援方法。
  2. 【請求項2】請求項1で記載のデバッグ支援方法におい
    て、前記ステップ(b)は、(b1) 前記特定範囲の開始の位
    置と終了の位置を表す情報を、表示範囲情報として登録
    し、(b2) 実行時の値を表示させる前記変数の名前を、
    表示変数名情報として登録することを特徴とするデバッ
    グ支援方法。
  3. 【請求項3】請求項1で記載のデバッグ支援方法におい
    て、前記ステップ(c)は、(c1) 前記カラム情報付き構文
    木を実行し、(c2) 前記特定範囲内で、実行時の値を表
    示させる指定を行った前記変数が現れた場合、前記変数
    の位置を示すソース行とカラム数の情報と実行時の値
    を、実行時データ情報として登録し、(c3) 前記実行時
    データ情報と前記ソースプログラムを入力とし、前記実
    行時データ情報で登録されているソース行のカラム数の
    位置に、前記カラム数に対応して、同じく前記実行時デ
    ータ情報に登録されている値を挿入ながら、前記ソース
    プログラムを表示することを特徴とするデバッグ支援方
    法。
  4. 【請求項4】請求項3で記載のデバッグ支援方法におい
    て、 (d) 前記ステップ(c1)において、前記ソースプログラム
    の一論理行に対応する前記カラム情報付き構文木を実行
    し、 (e) 前記ステップ(c2)の操作を行い、 (f) 前記ソースプログラムの行の区切りまで、前記ステ
    ップ(d)と前記ステップ(e)の処理を繰り返し行い、 (g) 前記ステップ(c3)において、前記ステップ(d)から
    前記ステップ(f)で実行したソースプログラムの範囲を
    表示することを特徴とするデバッグ支援方法。
  5. 【請求項5】請求項1で記載のデバッグ支援方法におい
    て、前記ソースプログラムを実行しながら、前記ソース
    プログラム中に現れる変数の値の変化と変化した位置を
    表示することを特徴とするデバッグ支援方法。
  6. 【請求項6】請求項1で記載のデバッグ支援方法におい
    て、表示される内容を、全てファイルに格納することを
    特徴とする無人システムのエラー管理用デバッグ支援方
    法。
  7. 【請求項7】請求項1で記載のデバッグ支援方法におい
    て、 (h) 前記ソースプログラムの特定の範囲を表す情報を、
    入力装置から入力し、 (i) 前記特定範囲情報を入力とし、前記ソースプログラ
    ムと前記カラム情報付き構文木の現在実行している位置
    を示すカレントポイントを、前記特定範囲の開始の位置
    に設定し、 (j) 前記特定範囲の前記ソースプログラムを表示しなが
    ら、値が未定義である変数が現れるたび、前記ソースプ
    ログラムの前記変数が現れた位置で入力装置から値を入
    力し、 (k) 表示した範囲に対応する前記カラム情報付き構文木
    を入力とし、前記カラム情報付き構文木を実行すること
    を特徴とするデバッグ支援方法。
  8. 【請求項8】請求項7で記載のデバッグ支援方法におい
    て、前記ステップ(h)は、前記特定範囲の開始の位置と
    終了の位置を表す情報を、表示範囲情報として登録する
    ことを特徴とするデバッグ支援方法。
  9. 【請求項9】請求項7で記載のデバッグ支援方法におい
    て、前記ステップ(j)は、 (l) 前記ソースプログラムの一論理行に対応する前記カ
    ラム情報付き構文木を評価し、 (m) 値が未定義である変数が現れるたび、前記変数の前
    記ソースプログラム中での位置を示すソース行とカラム
    数の情報と、現在評価している前記カラム情報付き構文
    木のノード番号の情報を、未定義変数情報として登録
    し、 (n) 前記ソースプログラムの行の区切りまで、前記ステ
    ップ(j)と前記ステップ(k)の処理を繰り返し行い、 (o) 前記ソースプログラムと前記未定義変数情報を入力
    として、前記未定義変数情報に登録が存在する場合、前
    記未定義変数情報で登録されているソース行のカラム数
    の位置まで、現在評価している前記ソースプログラムを
    表示し、 (p) 前記カラム数に対応して前記未定義変数情報に登録
    されている前記ノード番号の情報と、入力装置から入力
    される変数の値を入力とし、前記カラム情報付き構文木
    において、前記ノード番号の対応する変数の値の欄に、
    前記入力値を格納し、 (q) 前記未定義変数情報に登録されている全ての情報に
    対して、前記ステップ(m)と前記ステップ(n)の処理を繰
    り返し行いながら、評価した範囲のソース行を表示する
    ことを特徴とするデバッグ支援方法。
  10. 【請求項10】プログラミング言語で記述されたソース
    プログラムと前記ソースプログラム中で使用されている
    変数の実行時の値を表示するデバッグ支援装置におい
    て、 入力装置からコマンドを入力し、前記入力コマンドに対
    応する処理の制御を行う実行制御手段と、 前記ソースプログラム中に現れる変数の位置を表すソー
    ス行とカラム数の情報を、前記ソースプログラムの構文
    構造を表す構文木に付加し、カラム情報付き構文木とし
    て格納する手段と、 前記ソースプログラムを入力とし、前記カラム情報付き
    構文木を生成する構文木生成手段と、 変数の実行時の値を表示させる、前記ソースプログラム
    の範囲を表示範囲情報として格納する手段と、 入力装置から、前記ソースプログラムの特定の範囲を入
    力し、表示範囲情報に設定する表示範囲設定手段と、 実行時の値を表示させたい、前記特定範囲に現れる変数
    の名前を表示変数名情報として格納する手段と、 入力装置から、前記特定範囲に現れる変数の中、実行時
    の値を表示させる変数の名前を入力し、表示変数名情報
    に設定する表示変数名設定手段と、 前記ソースプログラムと前記カラム情報付き構文木の現
    在実行している位置をカレントポイントとして格納する
    手段と、 前記実行制御手段から出力される実行を開始する位置の
    情報と前記カレントポイントを入力とし、前記カレント
    ポイントに前記実行開始位置の情報を設定することによ
    り、カレントポイントの初期化を行うカレントポイント
    初期化手段と、 前記カレントポイントと前記表示範囲情報を入力とし、
    実行時の値の表示を行うかどうかを判断し、論理行単位
    の実行とソース行単位の表示の制御を行う実行管理手段
    と、 実行時の値を表示させる変数の位置を示すソース行とカ
    ラム数の情報と、実行時の値を実行時データ情報として
    格納する手段と、 前記実行管理手段から出力される、実行時の値表示を行
    うかどうかの情報と実行範囲の情報を含む命令と、前記
    カラム情報付き構文木と、前記カレントポイントと、前
    記表示変数名情報を入力とし、前記カラム情報付き構文
    木の前記特定範囲を実行中、前記表示変数名情報に登録
    されている変数が現れた場合、前記変数の位置を示すソ
    ース行とカラム数の情報と実行時の値を、実行時データ
    情報に設定するコード実行手段と、 前記実行管理手段から出力される、表示範囲の情報を含
    む命令と、前記実行時データ情報と、前記ソースプログ
    ラムを入力とし、前記実行時データ情報で登録されてい
    るソース行のカラム数の位置に、前記カラム数に対応し
    て登録されている値を挿入ながら、前記ソースプログラ
    ムの前記表示範囲を表示する表示手段とを備えたことを
    特徴とするデバッグ支援装置。
  11. 【請求項11】請求項10記載のデバッグ支援装置にお
    いて、 テスト実行させる、前記ソースプログラムの範囲を表示
    範囲情報として格納する手段と、 入力装置から、前記ソースプログラムの特定の範囲を入
    力し、表示範囲情報に設定する部分テスト実行範囲設定
    手段と、 前記カレントポイントと前記表示範囲情報を入力とし、
    値が未定義である変数にソース行中の前記変数が現れる
    位置で変数の値を入力し、部分テスト実行を行うため、
    論理行単位の評価および実行とソース行単位の表示の制
    御を行う実行管理手段と、 値が未定義である変数の前記ソースプログラム中での位
    置を示すソース行とカラム数の情報と、前記変数に対応
    する前記カラム情報付き構文木のノード番号の情報を未
    定義変数情報として格納する手段と、 前記カラム情報付き構文木と、前記カレントポイント
    と、前記実行管理手段から出力される、評価および実行
    範囲の情報を含む評価または実行命令を入力とし、前記
    命令が評価であるならば、前記範囲の前記カラム情報付
    き構文木を評価し、値が未定義である変数が現れるた
    び、前記変数の前記ソースプログラム中での位置を示す
    ソース行とカラム数の情報と、現在評価している前記カ
    ラム情報付き構文木のノード番号の情報を、未定義変数
    情報に登録し、前記命令が実行であるならば、前記範囲
    の前記カラム情報付き構文木を実行するコード実行手段
    と、 前記実行管理手段から出力される、表示範囲の情報を含
    む命令と、前記未定義変数情報と、前記ソースプログラ
    ムを入力とし、前記未定義変数情報に登録が存在する場
    合、前記未定義変数情報で登録されているソース行のカ
    ラム数の位置まで、前記ソースプログラムの前記表示範
    囲を表示し、値が未定義である変数に値を入力するテス
    トデータ入力部を呼び出すという処理を繰り返し行うこ
    とにより、前記ソースプログラムの前記表示範囲を表示
    する表示手段と、 入力装置から入力される変数の値と、前記表示部から出
    力される、値が未定義の変数に対応する前記ノード番号
    の情報を含む命令を入力とし、前記入力値を前記ノード
    番号に対応する変数の値の欄に格納するテストデータ入
    力手段とを備えたことを特徴とするデバッグ支援装置。
JP7325396A 1995-12-14 1995-12-14 デバッグ支援方法および装置 Pending JPH09160806A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7325396A JPH09160806A (ja) 1995-12-14 1995-12-14 デバッグ支援方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7325396A JPH09160806A (ja) 1995-12-14 1995-12-14 デバッグ支援方法および装置

Publications (1)

Publication Number Publication Date
JPH09160806A true JPH09160806A (ja) 1997-06-20

Family

ID=18176379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7325396A Pending JPH09160806A (ja) 1995-12-14 1995-12-14 デバッグ支援方法および装置

Country Status (1)

Country Link
JP (1) JPH09160806A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008059515A (ja) * 2006-09-04 2008-03-13 Hitachi Software Eng Co Ltd プログラム実行過程の表示方法及びシステム並びにプログラム
JP2016173799A (ja) * 2015-03-18 2016-09-29 日本電気株式会社 デバッグ支援装置及びデバッグ支援方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008059515A (ja) * 2006-09-04 2008-03-13 Hitachi Software Eng Co Ltd プログラム実行過程の表示方法及びシステム並びにプログラム
JP2016173799A (ja) * 2015-03-18 2016-09-29 日本電気株式会社 デバッグ支援装置及びデバッグ支援方法

Similar Documents

Publication Publication Date Title
US5557774A (en) Method for making test environmental programs
US5926638A (en) Program debugging system for debugging a program having graphical user interface
US6091896A (en) Debugging optimized code using data change points
US7266809B2 (en) Software debugger and software development support system for microcomputer operable to execute conditional execution instruction
JPH11194957A (ja) デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
JPH0950389A (ja) コンピュータシステムを使って実装される装置及び方法
US7178135B2 (en) Scope-based breakpoint selection and operation
JP2003050715A (ja) コンパイラおよびデバッグ装置
JP2000122886A (ja) 半導体試験装置のプログラム作成方式
US7086033B2 (en) Software debugger having a monitor for monitoring conditional statements within a software program
JPH09160806A (ja) デバッグ支援方法および装置
WO1995032476A1 (en) A system and method for creating design configurations and for controlling the execution of multiple design tools
JPH096646A (ja) プログラムシミュレーション装置
JPH0934698A (ja) ソフトウェア生成方法及び開発支援方法
JPH11282693A (ja) Mcuシミュレーション装置、そのシミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2785606B2 (ja) パイプライン処理方式コンピュータ用プログラムのデバッガ
JP2827724B2 (ja) プログラムデバッグ処理方法
JPS5894041A (ja) 高級言語のデバツク支援装置
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
JP2004287858A (ja) プログラムテスト装置
GB2126761A (en) Inverse assembler
JPH05127945A (ja) プログラム実行状況解析方式
JP2001067245A (ja) シミュレーション方法及びシミュレーション装置
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPS61131124A (ja) 会話入力処理方式

Legal Events

Date Code Title Description
S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080516

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 5

Free format text: PAYMENT UNTIL: 20080516

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 6

Free format text: PAYMENT UNTIL: 20090516

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100516

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees