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

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

Info

Publication number
JPS6257033A
JPS6257033A JP60195848A JP19584885A JPS6257033A JP S6257033 A JPS6257033 A JP S6257033A JP 60195848 A JP60195848 A JP 60195848A JP 19584885 A JP19584885 A JP 19584885A JP S6257033 A JPS6257033 A JP S6257033A
Authority
JP
Japan
Prior art keywords
section
display
procedure
operating range
program
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.)
Granted
Application number
JP60195848A
Other languages
English (en)
Other versions
JPH079628B2 (ja
Inventor
Tadashi Hirose
広瀬 正
Kazuo Nakao
中尾 和夫
Yoichi Takeuchi
洋一 竹内
Keiko Shinada
品田 啓子
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

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00—Error detection; Error correction; Monitoring
    • G06F11/36—Prevention of errors by analysis, debugging or testing of software
    • G06F11/3698—Environments for analysis, debugging or testing of software
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00—Error detection; Error correction; Monitoring
    • G06F11/30—Monitoring
    • G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/321—Display for diagnostics, e.g. diagnostic result display, self-test user interface
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00—Error detection; Error correction; Monitoring
    • G06F11/30—Monitoring
    • G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323—Visualisation of programs or trace data
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00—Arrangements for software engineering
    • G06F8/30—Creation or generation of source code
    • G06F8/31—Programming languages or programming paradigms
    • G06F8/313—Logic 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)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明は、論理型言語におけるテストおよびデバッグ支
援方式に係り、特に宣言的なプログラム理解に基づくテ
ストおよびデパック″″(こ好適なプログラムの動作範
囲表示方式に関する。
〔発明の背景〕
論理型言語のデバッグのためのプログラム理解方式につ
いては、研究論文151、人工知能部門、ニシンバラ大
学(1980)  (Resarch Paperl 
51 、 Dept、 of Artificial 
Intelligence。
Univ、 of Edimburgh (1980)
 )におけるエル・バイルド(Lj3yrd)による“
プロローグプログラムの制御フローの理解法′″ (Unde’rstanging the Contr
ol flow ofP ROL O,G progr
ams)と題する論文において論じられている。ここで
は手続き単位での動作把握モデルが提案され、さらに節
単位での動作把握モデルの必要性が示唆されている。こ
の示唆に対応した節単位での動作把握モデルが、たとえ
ば岩崎技研工業株式会社発行の゛′プロローグカバ参照
マニュアル” (Prolog −K A B A R
afarencerLONfflI」の機能と効果」と
題する論文において、節単位および節を構成する頭部項
および本体部項を単位とする動作把握モデル(”cla
useモデル”と呼ぶ)が提案されている。
しかしながら、いずれの論文においても、それらの動作
把握モデル上での動作形態の表示方式の問題を認識して
いない。
動作形態の表示方式については、情報処理学会記号処理
研究会資料27−6 (1984)における後藤による
「Prologの図形的な動作表示法」と題する論文に
おいて、論理型言語の動作過程の視覚的表示に関する提
案が行なわれている。また、1985年のロジックプロ
グラミング会議の予稿集(proceedings o
f the logic programmingco
nference ’ 85 (1985) )におけ
る沼尾らによる″プロエディツト、スクリーンをもとに
したプロローグプログラミング環境′″ (P ROE D I T、 a 5craan 0r
iented prologprogramming 
E nviroment)と題する論文において、節単
位の動作把握モデルの表示方式に関する提案が行なわれ
ている。
しかしながら、いずれの論文においても、論理型言語で
記述されたプログラムの宣言的なプログラム理解を支援
することを配慮していない。
〔発明の目的〕
本発明の目的は、論理型言語で記述されたプログラムの
宣言的なプログラム理解に基づくテストおよびデバッグ
作業に好適なプログラム動作範囲表示方式を提供するこ
とにある。
〔発明の概要〕
テストおよびデバッグを行なう場合、そのプログラムが
意図通りに動作しているか否かを理解する必要がある。
この理解を支援するために言語処理系が提供する情報は
、プログラマのプロ、ダラム理解の方法を合致している
ことが望ましい。
論理型言語の場合、プログラムの動作を理解する方法と
して、手続き的理解法と宣言的理解法の2つがある。手
続き的理解法の方が、宣言的理解法より精緻な動作理解
が得られる方法であると云えるが、プログラマが常にこ
の精緻な理解法だけを用いてプログラムを作成している
わけではない。
たとえば、第1図に示す論理型言語 PROLOGによるプログラミング例を考える。
プログラムd −1stter(X )は、連続した2
要素あるいは1つ飛びの2要素が同一である様な部分を
含むリストであるか否かを調べるプログラムである。こ
のプログラムは、次の様な宣言的理解法を用いた方が理
解しやすく、多くのプログラマはこの理解法に基づきプ
ログラムを作成している。
(節1)・・・引数Xがリストであり、かつその中の第
1.第2要素が同一であるなら、 d −1stter(X)は成立する。
(節2)・・・引数Xがリストであり、かつその中の第
1.第3の要素が同一であるなら、 d −1stter(X)は成立する。
(節3)・・・引数Xがリストであり、かつその第2要
素以降のリストについてd −1etter(L)が成
立すればd −1etter (X )は成立する。
今、このプログラムに対して次の呼び出し。
’7  d  1etter ((a e b e O
* d)) 。
を行なった場合を考える。従来は、たとえばこの呼び出
しに伴い発生するプログラム動作を、その動作経路の表
示で表わしていた。第2図は。
”clauseモデル″を用いた場合の動作経路表示例
である。図中の矢印は、論理型言語prologの処理
系の処理手続を忠実に示すものであり、すなわち手続き
的理解法に対応する表示である。この表示から、上述の
(節1)、(節2)、(節3)の理解、すなわち宣言的
理解法との対応はつきにくい。必要とされる情報、すな
わちどの節が利用されたかを第2図の表示から読み取る
には、表示される動作経路をプログラム起動から終了ま
でのすべてについて追跡せねばならないからである。
宣言的理解法において使用される主な情報は、各手続き
、各頭部項、各本体部毎にプログラム起動から終了まで
の動作経路を重ね合わせた累積情報である。本発明では
、この点に着目し、各手続き、各頭部項、各本体部項対
応に、その動作範囲を表示する。第3図に、第2図の実
行を行なった場合の本発明方式によ乞表示例を示す。表
示は。
各項を囲う箱形図形の4辺に対応させてあり従来の動作
経路表示(第2図)を知るプログラマにとって学びやす
い。
〔発明の実施例〕
以下、本発明の一実施例を第4図から第11図により説
明する。
第4図は本発明を適用するシステム全体のブロック構成
図で、演算装置31、メモリ装置32、CRT表示装置
33、およびキーボード入力装置34がバス35で結合
されている。
第5図は、メモリ装置32内に格納される本実施例のソ
フトウェア構成を示すもので、制御部41、入出力部4
2、推論部43、およびデバッガ−表示部44.ユーザ
プログラム部46.と実行管理スタック部47から構成
される。
システム全体の動作の概要を説明する。図中の破線矢印
は制御信号の流れ、実線矢印はデータ信号の流れを表わ
す。システム起動信号45により、まず、制御部41が
動作する。制御部41は、ユーザがキーボード入力装置
34から入力するコマンド411を解析して、入出力部
42、推論部43のいずれかを動作させる信号451又
は452を発生する。入出力部42はユーザの入力する
プログラム421をユーザプログラム部46に格納する
。推論部43は、ユーザプログラム部46を参照し、実
行管理スタック部47を使いながら、ユーザの入力する
質問に対する解を作成する。デバッガ−表示部44は推
論43で行なわれる処理の進行状況を逐次監視し監視結
果442を、ユーザに出力する。以下、デバッガ−表示
部44の動作を第6図を用いて説明する。
デバッガ−表示部44は、トレース表示部49゜動作範
囲把握部50、動作状況監視スタック51、動作範囲テ
ーブル52、および動作範囲表示部53から構成される
。
推論部43は、プログラム実行中に、その”claus
eモデル”の制御点通過のタイミングでトレース表示部
49と動作範囲把握部5oの起動信号491を発生し、
同時に第7図の通過点の種別71、実行中手続き名称7
2、手続き呼び出し発生毎に生成される呼び出し一貫番
号73、および呼び出しのネストレベルを示す呼び出し
レベル74に関する信号492を送る。トレース表示部
49は、これをトレースしてトレース表示結果61を順
次出力する。第7図は、第1図のプログラムに対し、第
2図に示す動作が行なわれた時表示されるトレース表示
の出力例である。動作範囲把握部5oは推論部43から
送られて来た上述の信号492に基づき、動作状況監視
スタック51を用いて、各手続きおよび各頭部項、各本
体部項に対してどの動作が実行されたかを把握し、それ
を動作範囲テーブル52に記録する。
推論部43は、上述の制御点通過タイミングとは別に、
動作範囲表示指示プログラム−が実行されると起動信号
531を送出して動作範囲表示部53を起動する。動作
範囲表示部53は動作範囲テーブル52に記録されてい
る情報に基づき、各手続きおよび各頭部項1本体部項の
動作範囲を、それぞれを囲う箱形図形の上辺、右辺、左
辺、下辺のうち、実際に動作した辺だけを太線化するこ
とによりディスプレイ62上に表示する。第3図は、第
1図のプログラムに対し、第2図に示す動作が行なわれ
た後に得られる手続きd −1etter(X)に対す
る動作範囲の表示例である。
以下、本発明に関連の深い動作状況監視スタッり51.
動作範囲テーブル52の構成と、動作範囲把握部50の
処理アルゴリズムの詳細を説明する。
第8図は、動作状況監視スタック51および動作範囲テ
ーブル52の詳細な構造を示している。
動作状況監視スタック51は、あらたな手続き呼び出し
発生毎に次の6種の情報、すなわち呼び出し手続き名称
72、呼び出し一貫番号73、呼び出し−Ca1l(以
下、Cと略す)、成功終了−Exit(以下、Eと略す
)、再呼び出し−Red。
(以下、Rと略す)、失敗終了−Fail (以下、F
と略す)の区別を示す制御点種別71.呼び出しレベル
74.現在何番目の節を実行中であるかを示すカレント
節番号(以下、L番号と呼ぶ)、現在何番目の項を実行
中であるかを示すカレント項番号(以下、C番号と呼ぶ
)76の6種の情報から構成されるレコード77が格納
される。
動作範囲テーブル52は1手続き名称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:現在情報を動作状況監視スタック51に
押しこむ。
ここで、L番号、C番号は共に1とし、ステップ93へ
進む。
ステップ93:現在情報の呼び出し一貫番号72と同一
の番号を持つレコード77を動作状況監視スタック51
の中から捜し出す。このレコードを以下カレントレコー
ドと呼ぶ。さらに、カレントレコードの呼び出し深さよ
り1つ浅い呼び出し深さを持つレコードを、カレントレ
コードから動作状況監視スタック51の下位方向(より
古いレコードが格納されている方向)に順に捜す、この
レコードを親レコードと呼ぶ。
ステップ94:現在情報の制御点種別71を判定し、そ
れが“R”ならステップ95へ、“E”ならステップ9
6へ、“F”ならステップ97゜その他ならステップ9
8へ進む。
ステップ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つ増すと共に一〇番
号を1に設定し、カレントレコードを消去し処理を終了
する。
ステップ98二親レコードのC番号終了を1つ増し、処
理を終了する。
第10図に第7図における1番目から8番目までの情報
を動作範囲把握部50が処理した時点での動作状況監視
スタック51と動作範囲テーブル52の内容を示してお
く。動作状況監視スタック51の第2レコードのL番号
75、C番号76がそれぞれ3,2であることから、第
2レコードの呼び出し元が1手続きd −1sttar
第3節第2項であることが判る。
第11図に、本実施例で得られるプログラム実行範囲表
示の別の例を示す。たとえばこの表示から、第1節は使
用されていないこと、第3節のS(x、y)とr(A、
Y)との間でバックトラッキング発生していること、本
述語に対して再呼び出しは行なわれていないこと、本述
語の呼び出しは失敗終了していないことなどが容易に読
み取れる。
〔発明の効果〕
本発明によれば、論理型言語が記述されたプログラムの
宣言的な理解の方法、すなわち、番手続き、各節が恒等
的な事実を表わしているものとの立場からのプログラム
理解の方法に合致した、動作範囲の表示、すなわち、ど
の恒等的な事実が使用されたかの表示が行なわれるので
、テストおよびデバッグ作業の効率が向上する効果があ
る。
【図面の簡単な説明】
第1図は、論理型言語で記述されたプログラムの一例を
示す図、第2図は“clauseモデル”を用いた実行
トレースの一例を示す図、第3図、第第7図はトレース
表示出力例を示す図、第8図。 第9図はそれぞれ本発明の表示データ作成のための内部
テーブル構成図と処理手順のフローチャート、第10図
は、第8図のテーブル構成の動作中の内容を示す図であ
る。 代理人 弁理士 小 川 勝 男 オ IT!! オ 2 凹 茅 ! 凹 め 5 圓 移       〃7 第 bllり 扁7 口 第 3 閲 狛IO口 め 71  回 手  続  補  正  書  (方 式)%式% 事件の表示 昭和60年 特 許願 第195848号発明の名称 
  論理型言語の動作範囲表示方式補正をする者 事件との関係   特許出願人 名称(510)    株式会社 日  立  製  
作  所代  理  人 居所〒100    °東京都千代口1区丸の内−丁目
5番1号株式会社 日 立 製 作 所 内 補正の対象   明細書の「特許請求の範囲」の欄補正
の内容   1.明細書第1頁第2行目と第3行目の間
に「特許請求の範囲」を挿入する。

Claims (1)

  1. 【特許請求の範囲】 1、論理型言語処理系のテストおよびデバッグ支援方式
    において、各手続き毎に、過去にそれぞれが、呼び出し
    −成功終了、呼び出し−失敗終了、再呼び出し−成功終
    了、再呼び出し−失敗終了の4種の動作のうち、どの動
    作が行なわれたかを示す動作範囲の把握のために、各手
    続きを囲う箱形図形の上辺、左辺、右辺、下辺にそれぞ
    れ上記4種の動作を対応させて表示することを特徴とす
    る論理型言語の動作範囲表示方式。 2、上記動作範囲の把握を、各手続きに含まれる各節の
    頭部項および本体部項に対して行ない、各頭部項、本体
    部項を囲う箱形の図形の上辺、左辺、右辺、下辺にそれ
    ぞれ上記4種の動作を対対させて表示することを特徴と
    する第1項の論理型言語の動作範囲表示方式。 3、上記各手続き呼び出し毎に、該手続きの呼び出し元
    手続き名称と、該呼び出し手続き内の呼び出し元節およ
    び呼び出し元項を示すカレント節番号およびカレント項
    番号とを記憶し、該記憶した番号から、各手続き内の頭
    部項および本体部項のそれぞれが、上記4種の動作のい
    ずれを過去に実行したかを判定することを特徴とする第
    2項の論理型言語における動作範囲表示方式。
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 true JPS6257033A (ja) 1987-03-12
JPH079628B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63231543A (ja) * 1987-03-20 1988-09-27 Hitachi Ltd 論理型言語プログラムの実行トレ−ス表示方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63231543A (ja) * 1987-03-20 1988-09-27 Hitachi Ltd 論理型言語プログラムの実行トレ−ス表示方法

Also Published As

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

Similar Documents

Publication Publication Date Title
US5485601A (en) Completely automated and self-generating software system
Baum et al. On the optimal order of reading source code changes for review
Suzuki et al. Tracediff: Debugging unexpected code behavior using trace divergences
Wilcox et al. The design and implementation of a table driven, interactive diagnostic programming system
Guibert et al. Example-based programming: a pertinent visual approach for learning to program
Yoon et al. Cognitive activities and support in debugging
Simonis et al. Search-tree visualisation
Kahn A new generation in computing: Microelectronics and artificial intelligence may produce advanced computers that are both fast and smart
Aiello et al. Reasoning about reasoning in a meta-level architecture
JPH079628B2 (ja) 論理型言語の動作範囲表示方法
Rajan Principles for the design of dynamic tracing environments for novice programmers
Neufeld et al. Visual metaphors for understanding logic program execution
Waterman Serial pattern acquisition: A production system approach
Coetzee Combining reverse debugging and live programming towards visual thinking in computer programming
Sloman Beginners need powerful systems
Kay et al. A microworld for developing learning design strategies
Whitington et al. Direct interpretation of functional programs for debugging
Numao et al. Proedit—a screen oriented Prolog programming environment
Mungunsukh et al. An agent based programming language learning support system
Augenstein et al. Graphic displays of data structures on the IBM PC
JPH06259209A (ja) プロセス実行状況表示装置
Emdin et al. Automatic Data Structures Visualization in IntelliJ IDEA.
Bundy et al. An intelligent tutoring system for induction proofs
Berleur et al. Recent technical developments: Attitudes and paradigms
Davis Interactive Error Diagnostics for an Instructional Programming System.