JPH079628B2 - 論理型言語の動作範囲表示方法 - Google Patents

論理型言語の動作範囲表示方法

Info

Publication number
JPH079628B2
JPH079628B2 JP60195848A JP19584885A JPH079628B2 JP H079628 B2 JPH079628 B2 JP H079628B2 JP 60195848 A JP60195848 A JP 60195848A JP 19584885 A JP19584885 A JP 19584885A JP H079628 B2 JPH079628 B2 JP H079628B2
Authority
JP
Japan
Prior art keywords
call
display
program
unit
procedure
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
JP60195848A
Other languages
English (en)
Other versions
JPS6257033A (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.)
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 JP60195848A priority Critical patent/JPH079628B2/ja
Priority to EP86111186A priority patent/EP0213486B1/en
Priority to DE3650337T priority patent/DE3650337T2/de
Priority to US06/895,954 priority patent/US4794529A/en
Publication of JPS6257033A publication Critical patent/JPS6257033A/ja
Publication of JPH079628B2 publication Critical patent/JPH079628B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3698Environments for analysis, debugging or testing of software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/321Display for diagnostics, e.g. diagnostic result display, self-test user interface
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明は、論理型言語におけるテストおよびデバツグ支
援方式に係り、特に宣言的なプログラム理解に基づくテ
ストおよびデバツグに好適なプログラムの動作範囲表示
方式に関する。
〔発明の背景〕
論理型言語のデバツグのためのプログラム理解方式につ
いては、研究論文151、人工知能部門、エジンバラ大学
(1980)(Resarch Paper151,Dept.of Artificial Inte
lligence,Univ.of Edimburgh(1980)におけるエル・バ
イルド(L.Byrd)による“プロロ−グプログラムの制御
フローの理解法” (Understanging the Control flow of PROLOG program
s)と題する論文において論じられている。ここでは手
続き単位での動作把握モデルが提案され、さらに節単位
での動作把握モデルの必要性が示唆されている。この示
唆に対応した節単位での動作把握モデルが、たとえば岩
崎技研工業株式会社発行の“プロローグカバ参照マニュ
アル”(Prolog−KABA Reference Manual)(1984)に
記載されている。また、情報処理学会第29回全国大会
(1984)における広瀬らによる「論理型基本処理系「LO
NLI」の機能と効果」と題する論文において、節単位お
よび節を構成する頭部項および本体部項を単位とする動
作把握モデル(“clauseモデル”と呼ぶ)が提案されて
いる。
しかしながら、いずれの論文においても、それらの動作
把握モデル上での動作形態の表示方式の問題を認識して
いない。
動作形態の表示方式については、情報処理学会記号処理
研究会資料27−6(1984)における後藤による「prolog
の図形的な動作表示法」と題する論文において、論理型
言語の動作過程の視覚的表示に関する提案が行なわれて
いる。また、1985年のロジックプログラミング会議の予
稿集(proceedings of the logic programming confere
nce'85(1985))における沼尾らによる“プロエディッ
ト,スクリーンをもとにしたプロローグプログラミング
環境”(PROEDIT,a,Screan Oriented prolog programmi
ng Enviroment)と題する論文において、節単位の動作
把握モデルの表示方式に関する提案が行なわれている。
しかしながら、いずれの論文においても、論理型言語で
記述されたプログラムの宣言的なプログラム理解を支援
することを配慮していない。
〔発明の目的〕
本発明の目的は、論理型言語で記述されたプログラムの
宣言的なプログラム理解に基づくテストおよびデバツグ
作業に好適なプログラム動作範囲表示方式を提供するこ
とにある。
〔発明の概要〕
テストおよびデバツグを行なう場合、そのプログラムが
意図通りに動作しているか否かを理解する必要がある。
この理解を支援するために言語処理系が提供する情報
は、プログラマのプログラム理解の方法を合致している
ことが望ましい。
論理型言語の場合、プログラムの動作を理解する方法と
して、手続き的理解法と宣言的理解法の2つがある。手
続き的理解法の方が、宣言的理解法より精緻な動作理解
が得られる方法であると云えるが、プログラマが常にこ
の精緻な理解法だけを用いてプログラムを作成している
わけではない。
たとえば、第1図に示す論理型言語PROLOGによるプログ
ラミング例を考える。プログラムd−letter(X)は、
連続した2要素あるいは1つ飛びの2要素が同一である
様な部分を含むリストであるか否かを調べるプログラム
である。このプログラムは、次の様な宣言的理解法を用
いた方が理解しやすく、多くのプログラマはこの理解法
に基づきプログラムを作成している。
(節1)…引数Xがリストであり、かつその中の第1,第
2要素が同一であるなら、d−letter(X)は成立す
る。
(節2)…引数Xがリストであり、かつその中の第1,第
3の要素が同一であるなら、d−letter(X)は成立す
る。
(節3)…引数Xがリストであり、かつその第2要素以
降のリストについてd−letter(L)が成立すればd−
letter(X)は成立する。
今、このプログラムに対して次の呼び出し、 ?−d−letter(〔a,b,c,d〕). を行なった場合を考える。従来は、たとえばこの呼び出
しに伴い発生するプログラム動作を、その動作経路の表
示を表わしていた。第2図は、“clauseモデル”を用い
た場合の動作経路表示例である。図中の矢印は、論理型
言語prologの処理系の処理手続を忠実に示すものであ
り、すなわち手続き的理解法に対応する表示である。こ
の表示から、上述の(節1),(節2),(節3)の理
解、すなわち宣言的理解法との対応はつきにくい。必要
とされる情報、すなわちどの節が利用されたかを第2図
の表示から読み取るには、表示される動作経路をプログ
ラム起動から終了までのすべてについて追跡せねばなら
ないからである。
宣言的理解法において使用される主な情報は、各手続
き、各頭部項、各本体部毎にプログラム起動から終了ま
での動作経路を重ね合わせた累積情報である。本発明で
は、の点に着目し、各手続き、各頭部項、各本体部項対
応に、その動作範囲を表示する。第3図に、第2図の実
行を行なった場合の本発明方式による表示例を示す。表
示は、各項を囲う箱形図形の4辺に対応させてあり従来
の動作経路表示(第2図)を知るプログラマにとって学
びやすい。
〔発明の実施例〕
以下、本発明の一実施例を第4図から第11図により説明
する。
第4図は本発明を適用するシステム全体のブロック構成
図で、演算装置31、メモリ装置32、CRT表示装置33、お
よびキーボード入力装置34がバス35で結合されている。
第5図は、メモリ装置32内に格納される本実施例のソフ
トウェア構成を示すもので、制御部41、入出力部42、推
論部43、およびデバッガー表示部44,ユーザプログラム4
6、と実行管理スタック部47から構成される。
システム全体の動作の概要を説明する。図中の破線矢印
は制御信号の流れ、実線矢印はデータ信号の流れを表わ
す。システム起動信号45により、まず、制御部41が動作
する。制御部41は、ユーザがキーボード入力装置34から
入力するコマンド411を解析して、入出力部42、推論部4
3のいずれかを動作させる信号451又は452を発生する。
入出力部42はユーザの入力するプログラム421をユーザ
プログラム部46に格納する。推論部43は、ユーザプログ
ラム部46を参照し、実行管理スタック部47を使いなが
ら、ユーザの入力する質問に対する解を作成する。デバ
ッガー表示部44は推論43で行なわれる処理の進行状況を
逐次監視し監視結果442を、ユーザに出力する。以下、
デバッガー表示部44の動作を第6図を用いて説明する。
デバッガー表示部44は、トレース表示部49、動作範囲把
握部50、動作状況監視スタック51、動作範囲テーブル5
2、および動作範囲表示部53から構成される。
推論部43は、プログラム実行中に、その“clauseモデ
ル”の制御点通過のタイミングでトレース表示部49と動
作範囲把握部50の起動信号491を発生し、同時に第7図
の通過点の種別71、実行中手続き名称72、手続き呼び出
し発生毎に生成される呼び出し一貫番号73、および呼び
出しのネストレベルを示す呼び出しレベル74に関する信
号492を送る。トレース表示部49は、これをトレースし
てトレース表示結果61を順次出力する。第7図は、第1
図のプログラムに対し、第2図に示す動作が行なわれた
時表示されるトレース表示の出力例である。動作範囲把
握部50は推論部43から送られて来た上述の信号492に基
づき、動作状況監視スタック51を用いて、各手続きおよ
び各頭部項、各本体部項に対してどの動作が実行された
かを把握し、それを動作範囲テーブル52に記録する。
推論部43は、上述の制御点通過タイミングとは別に、動
作範囲表示指示プログラムが実行されると起動信号531
を送出して動作範囲表示部53を起動する。動作範囲表示
部53は動作範囲テーブル52に記録されている情報に基づ
き、各手続きおよび各頭部項、本体部項の動作範囲を、
それぞれを囲う箱形図形の上辺,右辺,左辺,下辺のう
ち、実際に動作した辺だけを太線化することによりディ
スプレイ62上に表示する。第3図は、第1図のプログラ
ムに対し、第2図に示す動作が行なわれた後に得られる
手続きd−letter(X)に対する動作範囲の表示例であ
る。
以下、本発明に関連の深い動作状況監視スタック51、動
作範囲テーブル52の構成と、動作範囲把握部50の処理ア
ルゴリズムの詳細を説明する。
第8図は、動作状況監視スタック51および動作範囲テー
ブル52の詳細な構造を示している。
動作状況監視スタック51は、あらたな手続き呼び出し発
生毎に次の6種の情報、すなわち呼び出し手続き名称7
2、呼び出し一貫番号73、呼び出し−Call(以下、Cと
略す)、成功終了−Exit(以下、Eと略す)、再呼び出
し−Redo(以下、Rと略す)、失敗終了−Fail(以下、
Fと略す)の区別を示す制御点種別71、呼び出しレベル
74、現在何番目の節を実行中であるかを示すカレント節
番号(以下、L番号と呼ぶ)、現在何番目の項を実行中
であるかを示すカレント項番号(以下、C番号と呼ぶ)
76の6種の情報から構成されるレコード77が格納され
る。
動作範囲テーブル52は、手続き名称72とそれの手続きに
含まれる各の各項(頭部項と本体部項)。それぞれに対
する4つの動作フラグ(C−E,C−F,R−E,R−Fフラ
グ)の配列79から構成されるレコード80の集まりからな
る。C−E,C−F,R−E,R−Fの各フラグは、対応する項
に対してC−E,C−F,R−E,R−F動作が行なわれた時
“1"に設定される1ビットのフラグである。
動作範囲把握部50の処理アルゴリズムを第9図を参照し
ながら説明する。
動作範囲把握部50は、推論部43よりプログラム実行中に
その“clauseモデル”における制御点通過のタイミング
で起動され、以下の処理を行なう。
ステップ91:推論部43から送られて来た情報(以下、現
在情報と呼ぶ)の制御点種別71を判定。もし“C"(呼び
出し)であればステップ2へ、さもなければステップ93
へ進む。ステップ92:現在情報を動作状況監視スタック5
1に押しこむ。
ここで、L番号、C番号は共に1とし、ステップ93へ進
む。
ステップ93:現在情報の呼び出し一貫番号72と同一の番
号を持つレコード77を動作状況監視スタック51の中から
捜し出す。このレコードを以下カレントレコードと呼
ぶ。さらに、カレントレコードの呼び出し深さより1つ
浅い呼び出し深さを持つレコードを、カレントレコード
から動作状況監視スタック51の下位方向(より古いレコ
ードが格納されている方向)に順に捜す。このレコード
を親レコードと呼ぶ。ステップ94:現在情報の制御点種
別71を判定し、それが“R"ならステップ95へ、“E"なら
ステップ96へ、“F"ならステップ97、その他ならステッ
プ98へ進む。
ステップ95:カレントレコードの制御点種別を“R"と
し、親レコードのC番号を1減じ、処理を終了する。
ステップ96:カレントレコードの制御点種別71を判定
し、“C"ならば親レコードの手続き名称、L番号,C番号
に対応する動作範囲テーブル52の動作フラグC−Eを、
“R"ならば動作フラグのR−Eを、“1"に設定し、カレ
ントレコードの制御点種別を“E"に設定して処理を終了
する。
ステップ97:カレントレコードの制御点種別を判定し、
“C"ならば親レコードの手続き名称、L番号,C番号に対
応する実行範囲テーブル52の動作フラグのC−Fを、
“R"ならばR−Fを“1"を1つ減らし、もしそれがゼロ
になるならば、L番号を1つ増すと共にC番号を1に設
定し、カレントレコードを消去し処理を終了する。
ステップ98:親レコードのC番号終了を1つ増し、処理
を終了する。
第10図に第7図における1番目から8番目までの情報を
動作範囲把握部50が処理した時点での動作状況監視スタ
ック51と動作範囲テーブル52の内容を示しておく。動作
状況監視スタック51の第1レコードのL番号75、C番号
76がそれぞれ3,2であることから、第2レコードの呼び
出し元が、手続きd−letter第3節第2項であることが
判る。
第11図に、本実施例で得られるプログラム実行範囲表示
の別の例を示す。たとえばこの表示から、第1節は使用
されていないこと、第3節のs(X,Y)とr(A,Y)との
間でバックトラッキング発生していること、本述語に対
して再呼び出しは行なわれていないこと、本述語の呼び
出しは失敗終了していないことなどが容易に読み取れ
る。
〔発明の効果〕
本発明によれば、論理型言語が記述されたプログラムの
宣言的な理解の方法、すなわち、各手続き、各節が恒等
的な事実を表わしているものとの立場からのプログラム
理解の方法に合致した、動作範囲の表示、すなわち、ど
の恒等的な事実が使用されたかの表示が行なわれるの
で、テストおよびデバッグ作業の効率が向上する効果が
ある。
【図面の簡単な説明】
第1図は、論理型言語で記述されたプログラムの一例を
示す図、第2図は“clauseモデル”を用いた実行トレー
スの一例を示す図、第3図,第11図は本発明方式での動
作範囲表示例を示す図、第4〜6図は本実発明の実施例
のハードウェア構成図、第7図はトレース表示出力例を
示す図、第8図,第9図はそれぞれ本発明の表示データ
作成のための内部テーブル構成図と処理手順のフローチ
ャート。第10図は、第8図のテーブル構成の動作中の内
容を示す図である。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】一つ以上の手続きからなり、前記手続きの
    それぞれが一つ以上の節を含み、前記節のそれぞれが一
    つ以上の項を含む、論理型言語で記述されたプログラム
    を表示手段を有する処理装置を用いてテストする際に、 a)前記項のそれぞれが呼出し、あるいは再呼出しのい
    ずれかで呼び出されたかを示す呼出し状態を記憶し、 b)前記項のそれぞれが失敗終了、あるいは成功終了の
    いずれかで終了したかを示す終了状態を検出し、 c)前記呼出し状態と前記終了状態との組合せに基づい
    て、前記項のそれぞれの実行状態が、呼出し−成功終
    了、呼出し−失敗終了、再呼出し−成功終了、あるいは
    再呼出し−失敗終了のいずれであるかを検出し、 d)前記表示手段に表示された前記プログラムの前記項
    のそれぞれに、前記実行状態に応じた表示枠を表示する
    ことを特徴とする論理型言語の動作表示方法。
  2. 【請求項2】前記ステップd)において、呼出し−成功
    終了、呼出し−失敗終了、再呼出し−成功終了、あるい
    は再呼出し−失敗終了のそれぞれの前記実行状態に応じ
    て、前記項を囲む前記表示枠の上辺、下辺、左辺、ある
    いは右辺のいずれかに識別表示を行なうことを特徴とす
    る特許請求の範囲第1項の論理型言語の動作表示方法。
  3. 【請求項3】前記ステップa)、b)、及びc)を、前
    記プログラムを構成する前記手続き、さらに前記節のそ
    れぞれに対して実行し、前記手続き、あるいは前記節の
    それぞれの前記実行状態に応じた前記表示枠を、前記手
    続き、あるいは前記節のそれぞれに表示することを特徴
    とする特許請求の範囲第1項の論理型言語の動作表示方
    法。
JP60195848A 1985-09-06 1985-09-06 論理型言語の動作範囲表示方法 Expired - Lifetime JPH079628B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP60195848A JPH079628B2 (ja) 1985-09-06 1985-09-06 論理型言語の動作範囲表示方法
EP86111186A EP0213486B1 (en) 1985-09-06 1986-08-12 Method for displaying operation range of logical language
DE3650337T DE3650337T2 (de) 1985-09-06 1986-08-12 Verfahren zur Betriebsbereichsanzeige einer logischen Sprache.
US06/895,954 US4794529A (en) 1985-09-06 1986-08-13 Method for displaying operation range of logical language

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60195848A JPH079628B2 (ja) 1985-09-06 1985-09-06 論理型言語の動作範囲表示方法

Publications (2)

Publication Number Publication Date
JPS6257033A JPS6257033A (ja) 1987-03-12
JPH079628B2 true JPH079628B2 (ja) 1995-02-01

Family

ID=16348014

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60195848A Expired - Lifetime JPH079628B2 (ja) 1985-09-06 1985-09-06 論理型言語の動作範囲表示方法

Country Status (4)

Country Link
US (1) US4794529A (ja)
EP (1) EP0213486B1 (ja)
JP (1) JPH079628B2 (ja)
DE (1) DE3650337T2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2696210B2 (ja) * 1987-03-20 1998-01-14 株式会社日立製作所 論理型言語プログラムの実行トレース表示方法
US4943968A (en) * 1987-03-04 1990-07-24 Hitachi, Ltd. Method of displaying execution trace in a logic programming language processing system
DE4323787A1 (de) * 1993-07-15 1995-01-19 Siemens Ag Verfahren zum Test eines objektorientierten Programms

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4481602A (en) * 1981-04-06 1984-11-06 International Business Machines Corporation Font compression and decompression for character generation

Also Published As

Publication number Publication date
DE3650337D1 (de) 1995-07-27
EP0213486A2 (en) 1987-03-11
EP0213486A3 (en) 1989-05-10
US4794529A (en) 1988-12-27
EP0213486B1 (en) 1995-06-21
DE3650337T2 (de) 1996-03-07
JPS6257033A (ja) 1987-03-12

Similar Documents

Publication Publication Date Title
Eisenstadt et al. The Transparent Prolog Machine (TPM): an execution model and graphical debugger for logic programming
Baum et al. On the optimal order of reading source code changes for review
EP1058894A1 (en) Intelligent agent workbench
Hindriks Debugging is explaining
Cornelissen et al. Trace visualization for program comprehension: A controlled experiment
Deiner et al. NuzzleBug: Debugging block-based programs in scratch
Smith et al. Robot tracking and control issues in an intelligent error recovery system
Yoon et al. Cognitive activities and support in debugging
JPH079628B2 (ja) 論理型言語の動作範囲表示方法
Simmons et al. Visualization tools for validating software of autonomous spacecraft
AlZoubi et al. ChiC) at-Tutor: An Integrated Environment for Learning Recursion
Herzog From elementary knowledge schemes towards heuristic expertise—designing an ITS in the field of parallel programming
Numao et al. Proedit—a screen oriented Prolog programming environment
Bouvier Visual tools to debug prolog IV programs
Ramadhan Improving the engineering of model tracing based intelligent program diagnosis
Kappel et al. TriGS debugger-a tool for debugging active database behavior1
Zhang et al. Construction of Object-Oriented Reverse Analysis and Design Model for the rCore Operating System
Ko A Contextual Inquiry of Expert Programmers in an Event-Based Programming Environment
Morazán et al. Visual Execution and Validation of Finite-State Machines and Pushdown Automata
JPH01177137A (ja) 計算機実行診断装置
Leonard Learning the structure of recursive programs in Boxer
Foltz Dr. jones: A software archaeologist’s magic lens
de Tomás et al. Vestal: a tool for teaching concurrency in Ada
Doukidis et al. Towards an intelligent tutoring system for PASCAL programming
Presnell et al. Making behavior modeling accessible to non-programmers: challenges and solutions