JP3194925B2 - プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置 - Google Patents

プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置

Info

Publication number
JP3194925B2
JP3194925B2 JP24524486A JP24524486A JP3194925B2 JP 3194925 B2 JP3194925 B2 JP 3194925B2 JP 24524486 A JP24524486 A JP 24524486A JP 24524486 A JP24524486 A JP 24524486A JP 3194925 B2 JP3194925 B2 JP 3194925B2
Authority
JP
Japan
Prior art keywords
user
function
expression
program
address
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 - Fee Related
Application number
JP24524486A
Other languages
English (en)
Other versions
JPS63100543A (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 JP24524486A priority Critical patent/JP3194925B2/ja
Publication of JPS63100543A publication Critical patent/JPS63100543A/ja
Application granted granted Critical
Publication of JP3194925B2 publication Critical patent/JP3194925B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、インタプリタ形式で実行される言語処理系
において、特にプログラムの内部表現がリスト構造のLI
SP(List Processor)プログラムのデバッグに好適なデ
バッグ支援装置に関する。 〔従来の技術〕 LISPのプログラムは、(i2i2……ii…)のように、括
弧付きのリスト形式で表現される。ここでリストの要素
iiは、文字列や数値あるいは、前記と同形式のリストで
ある。LISP処理系は、各リストを(関数 引数……引
数)というふうに、リストの第1要素を関数、第2要素
以降を関数の引数として解釈する。ここで関数とは、LI
SP処理系にあらかじめ準備されている組込関数、あるい
はユーザが定義した関数(サブルーチンに相当)であ
る。例えば、 ANS:(X+Y)*Z の式をLISPプログラムで表現すると、 (SETQ ANS(*(+XY)Z)) となる。ユーザ関数は、このようなリスト表現の式の組
わせで表現される。ここで左括弧“(”の次の文字や文
字列であるSETQ、*、+は、それぞれLISPの組込み関数
である。LISP処理系は、左右の括弧をもつリストを順次
評価(解釈・実行)して行く。前記の例では、最初に
(SETQ………)のリストを評価しようとすると、その引
数に、(*(+XY)Z)というリストがあり、さらにそ
のリストの中の(+ X Y)というリストの評価が必
要となって、内側のリストから順番に評価が行われる。 ところで、前記の例の式の実行前に、Xの値が定まっ
ていなかった場合には、例えば文献Common LISP入門:
湯浅著岩波書店1986.7.18発行pp.313〜315に記載のよう
に、 Error:The variable X is unbound. Error signalled by +. というメッセージが表示される。即ち、エラーの内容と
エラーの発生したリストの関数が表示されるだけであっ
た。 〔発明が解決しようとする問題点〕 上記従来のLISP処理系では、エラーの表示において、
エラーの種類と、エラー発生の直接の関数しか提示され
ないため、どのユーザ定義関数中のどの式でエラーがお
こったかを知ることが困難な問題があった。またエラー
の分析を行うユーティリティの一つであるデバッガの一
機能として関数の呼出しごとにスタック上にたくわえら
れた関数名をバックトレースする機能が用意されている
が、バックトレース機能による表示では、同一のユーザ
関数内で同じ式が複数箇所に存在した場合など、エラー
の発生箇所を特定することが困難であった。またエラー
の発生場所の表示と、エラーのあるプログラムを修正す
るプログラムが別であったために、それぞれの表示画面
が異なり、誤って別の箇所を修正してしまう可能性を含
んでいる問題があった。 本発明の目的は、LISPのように、式を逐一実行する言
語処理系で、実行中にエラーが発生したとき、エラーが
どのユーザ関数(サブルーチン)のどの式で発生したか
を即座に明示し、同一画面上で、提示されたエラー箇所
を直接修正できる処理系を提供することにある。 〔問題点を解決するための手段〕 上記目的は、プログラム実行中のエラー検出時に、エ
ラーを含むユーザ関数のソースプログラムを、編集画面
に表示し、かつその表示において、最後に実行した式を
識別表示する手段により達成される。 〔作用〕 前記、エラーの式を含むユーザ関数を見つける手段
は、関数名を含む制御情報を、新たな関数の呼び出しご
とにスタックにたくわえ、処理が完了した関数について
は、スタックから当該制御情報を除去するようにし、エ
ラー発生時点で、スタック上の制御情報をバックトレー
スして最近のユーザ関数名を探索することにより実現さ
れる。 また最後に実現した式の識別は、実行中、常に最後に
実行した式の存在場所を保持しておき、当該ユーザ関数
の各式の表示処理において、表示するソースプログラム
の各式の存在場所と、前記の最後に実行した式の存在場
所の一致検出により実現される。 プログラムの編集画面に、エラーの式を含むユーザ関
数と、エラーの発生箇所が明示されるのでエラー箇所を
直接修正できるようになる。 〔実施例〕 以下、本発明の一実施例を説明する。 第1図は、本発明のデバッグ支援装置の構成図であ
る。実施例では、LISPの実行、デバッグを本装置を用い
て実行する。第1図1のソースプログラムは、2の解釈
・実行機構(インタプリタ)に入力されて、各式(リス
ト)単位に逐一解釈実行され、その実行結果が4の表示
機構によって表示される。2における実行中にエラーが
あれば、同じく4にエラーメッセージを表示する。3
は、ソースプログラムの入力、修正を含む編集を行う機
構でテキスト・エディタである。1〜4は、従来の各種
プログラムの言語処理系において、一般的に実現されて
いる動作機構であり、公知である。本実施例では、新た
に5のエラー箇所摘出機構を付加した。5は、2におけ
る実行中にエラーがあったとき、エラーを含むユーザ関
数を探索し、該ユーザ関数のソースプログラムの全体の
表示と、該ソースプログラムの中のエラーの式(リス
ト)を識別表示することを可能にするエラー箇所摘出機
構であり、常に最後に実行した式(リスト)のアドレス
を保持する機構51と、解釈・実行機構2の実行中にたく
わえたスタック情報から、最後に実行したユーザ関数を
探索する機構52、52で摘出したユーザ関数のソースプロ
グラムの各式のアドレスと、51で保持したアドレスの一
致を検出する機構53からなる。53でアドレスが一致した
式は、4の表示機構で、その他の式と識別表示される。
5で摘出したユーザ関数のソースプログラムと、エラー
の式は、3の編集機構の入力となって、編集画面に表示
することも可能にした。 第2図は、第1図の装置を用いてnの階乗を計算する
LISPプログラムfactを実行したときプログラムの記述誤
りのために実行時にエラーが発生したとき、表示される
画面の例である。プログラムfactの中で未定義な関数名
fを実行しようとしたとき、エラーが発生する。従来の
LISP処理系では、画面上23のメッセージ行に表示されて
いるメッセージが表示されるだけであった。このメッセ
ージでは、fは関数*の中であることはわかっても、ユ
ーザ定義関数factの中であることは表示されなかった。 本実施例では、テキスト表示部22に示すようにユーザ
定義関数のソースプログラムを表示し、かつその表示の
中で、エラーを検出した式(リスト)25を反転強調表示
して、エラー箇所を識別せしめるようにした。同図20
は、編集画面の見出し部、24はコマンド入力部である。
本実施例によれば、ソースプログラム中のエラーに対
し、エラーを含むユーザ定義関数が、編集画面に表わ
れ、エラー箇所が反転強調表示されるので、ユーザにと
っては、エラー箇所の検索の手間が省け、誤り箇所を直
接修正できるので、修正までの時間が短縮できると共
に、修正箇所を誤ることが少なくなる。本表示例では、
“f"を“fact"に置換えることにより、factの再帰呼出
しによって正しく動作する。 なお第2の実施例として、エラー発生時に直接編集画
面の表示に移行せず、一旦デバッガモードに入り、デバ
ッガの一コマンド“WHERE"の入力により、第1図の画面
が表示されるようにしてもよい。 第3図は、解釈実行機構2と、エラー箇所摘出機構5
の装置内部の動作フローを記述したものである。解釈・
実行機構2は、指定された関数の式を順次取出し(30
1)、常に最新の式のアドレスを実行式アドレス保持機
構51によって保持しておく(302)。取出された式は解
釈・実行(303)され、次の式の処理に進む。303の処理
においてエラー検出したとき(304)、解釈・実行機構
2の一処理モードであるデバッガ・モードに入る(30
5)。次に、端末からデバッガコマンドが入力される
と、解釈実行機構2はそのコマンドを解釈する(30
6)。デバッガ・コマンドが“WHERE"であると判定され
たとき(307)、ユーザ関数探索機構52によりエラーの
式を含むユーザ関数を探索する。(308)〔詳細後
述〕。それ以外のコマンドのときは、それぞれ対応のコ
マンド処理を行う(309)。〔本発明に関係ないので説
明省略〕。なお第1の実施例では、305〜307はスキップ
する。308の流れでユーザ関数が見つかり、次に、該ユ
ーザ関数を引数にして、編集機構3をコールすると、該
ユーザ関数のソースプログラムは順次編集用の画面に表
示される(310)。このときアドレス一致検出機構53に
より、ソースプログラムの各式ごとの存在場所と、処理
302で保持した存在場所(アドレス)を比較し(311、31
2)一致した式は反転強調表示(313)、それ以外は通常
輝度表示(314)する。 第4図は、関数factのソースプログラムの内部表現の
リスト構造を図示したものである。第3図の処理301や3
10において、式を取出すときには、第4図のA、B、
C、D、E、Fで示すアドレスが参照・記憶される。 第5図は、ユーザ関数探索機構52においてエラーの式
を含むユーザ関数を探索するときに参照するスタックの
様子を図示したものである。関数が参照されるごとに参
照する関数名を含む制御情報をスタックに格納し、その
関数の処理を完了し、元の関数に処理が戻るとき、当該
のスタックから、当該関数の制御情報を除去する。本実
施例の関数f参照時にエラーが発生した時点のスタック
にはfact、cond、T.*、f、debugの関数名を含む制御
情報が蓄積されている。ここで500に示すように下から
順に関数名を参照し、システム組込関数でないものを探
して行くと、“fact"というユーザ関数を見つけること
ができる。 編集用画面上で修正の終った関数は、終了コマンドの
入力によって、新しい定義のリスト構造に変更される。 〔発明の効果〕 本発明によれば、LISPのように、式を逐一実行する言
語処理系で、実行中にエラーが発生したとき、エラーが
どのユーザ関数(サブルーチン)のどの式で発正したか
を、編集画面に明示され、提示されたエラーを直接修正
できるので、ユーザにとってエラーの発生箇所を保す手
間が省けると共に、修正箇所を間違える可能性が少なく
なる。従って、デバッグ作業の効率が大幅に改善され
る。
【図面の簡単な説明】 第1図は、本発明の一実施例の装置の構成図、 第2図は、実施例の一表示画面例を示す図、 第3図は、装置内部の動作フロー図、 第4図は、ソースプログラムの内部表現のリスト構造
図、 第5図は、ユーザ関数探索時のスタックの様子を図示し
たものである。 5:エラー箇所摘出機構 20:エラー識別表示画面 22:エラー表示を含むソースプログラム表示部 25:エラー箇所の反転表示
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭59−83248(JP,A) 特開 昭58−191047(JP,A) 特開 昭57−191759(JP,A) 実開 昭57−161050(JP,U) 情報処理学会第33回(昭和61年後期) 全国大会講演論文集,P507−508 情報処理学会第29回(昭和59年後期) 全国大会講演論文集(1)P663−664

Claims (1)

  1. (57)【特許請求の範囲】 1.組込み関数と複数の式により構成されるユーザ定義
    関数とを含むソースプログラムを式ごとに逐一解釈し実
    行するプログラム言語処理系におけるプログラム・デバ
    ッグ表示方法において、 上記プログラム言語処理系において実行する最新の式の
    アドレスを保持するステップと、 上記プログラム言語処理系において実行された組込み関
    数もしくはユーザ定義関数の名称を蓄積するステップ
    と、 上記ソースプログラムの実行中においてエラーが生じた
    場合には、 上記蓄積された関数の名称から最後に実行されたユーザ
    定義関数を検索するステップと、 上記検索されたユーザ定義関数を構成する各式のアドレ
    スと上記保持された最新の式のアドレスとを比較して一
    致する式を検出するステップと、 上記検索されたユーザ定義関数を構成する式をプログラ
    ム編集画面上に表示し、かつ上記検出された式を他の式
    とは異なる表示形式として上記プログラム編集画面上に
    表示するステップとを有することを特徴とするプログラ
    ム・デバッグ表示方法。 2.組込み関数と複数の式により構成されるユーザ定義
    関数とを含むソースプログラムを式ごとに逐一解釈し実
    行するプログラム言語処理手段と、 上記プログラム言語処理手段が実行する最新の式のアド
    レスを保持するアドレス保持手段と、 上記プログラム言語処理手段により実行された組込み関
    数もしくはユーザ定義関数の名称を蓄積する関数名称蓄
    積手段と、 上記ソースプログラムの実行中においてエラーが生じた
    場合に、上記関数名称蓄積手段から最後に実行されたユ
    ーザ定義関数を検索するユーザ定義関数検索手段と、 上記ユーザ定義関数検索手段により検索されたユーザ定
    義関数を構成する各式のアドレスと上記アドレス保持手
    段に保持された最新の式のアドレスとを比較して一致す
    る式を検出するアドレス一致検出手段と、 上記ユーザ定義関数検索手段により検索されたユーザ定
    義関数を構成する式を表示し、かつ上記アドレス一致検
    出手段により検出された式を他の式とは異なる表示形式
    としてプログラム編集画面上に表示する表示手段とを有
    することを特徴とするプログラム・デバッグ支援装置。
JP24524486A 1986-10-17 1986-10-17 プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置 Expired - Fee Related JP3194925B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24524486A JP3194925B2 (ja) 1986-10-17 1986-10-17 プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24524486A JP3194925B2 (ja) 1986-10-17 1986-10-17 プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置

Publications (2)

Publication Number Publication Date
JPS63100543A JPS63100543A (ja) 1988-05-02
JP3194925B2 true JP3194925B2 (ja) 2001-08-06

Family

ID=17130800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24524486A Expired - Fee Related JP3194925B2 (ja) 1986-10-17 1986-10-17 プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置

Country Status (1)

Country Link
JP (1) JP3194925B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2601533B2 (ja) * 1988-12-20 1997-04-16 株式会社ピーエフユー データ処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57161050U (ja) * 1981-04-01 1982-10-09
JPS58191047A (ja) * 1982-04-30 1983-11-08 Fujitsu Ltd プログラム・ダウン箇所検出方式

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
情報処理学会第29回(昭和59年後期)全国大会講演論文集(1)P663−664
情報処理学会第33回(昭和61年後期)全国大会講演論文集,P507−508

Also Published As

Publication number Publication date
JPS63100543A (ja) 1988-05-02

Similar Documents

Publication Publication Date Title
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
US5142679A (en) Method and apparatus for collecting execution status data of structured program
US7299456B2 (en) Run into function
US7080360B2 (en) Breakpoint safety net
US5987248A (en) Debugging information display device
US5408660A (en) System for analyzing and displaying data in computer program
JP3194925B2 (ja) プログラム・デバツグ表示方法及びプログラム・デバッグ支援装置
JP2010287101A (ja) ソフトウエアデバッグ装置及び方法
KR960003048B1 (ko) 소프트 웨어 개발 지원 시스템에 있어서의 표시방법
US20030018957A1 (en) Debugger monitor with anticipatory highlights
JPH11224211A (ja) ソフトウェア検査支援装置
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
JP2642788B2 (ja) 実行監視点削減方式
JPH03260742A (ja) プログラムのトレース表示方法
JP3011115B2 (ja) デバッグシステム
JP2607975B2 (ja) デバック方式
JPH08212105A (ja) プログラム管理装置
JP2607976B2 (ja) デバック方式
JP2006003987A (ja) デバッグ方法およびデバッガ
JP2777938B2 (ja) プログラム実行経路出力装置
JPH0250731A (ja) コンパイル装置
JPH04148335A (ja) 言語処理プログラムのオブジェクト出力方式
JPH11296406A (ja) プログラム修正支援方法
JPH06332684A (ja) プログラム修正支援装置
JPH0588872A (ja) プログラム構造図作成処理システム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees