JPH04337843A - プログラム動作表示方法 - Google Patents
プログラム動作表示方法Info
- Publication number
- JPH04337843A JPH04337843A JP3110131A JP11013191A JPH04337843A JP H04337843 A JPH04337843 A JP H04337843A JP 3110131 A JP3110131 A JP 3110131A JP 11013191 A JP11013191 A JP 11013191A JP H04337843 A JPH04337843 A JP H04337843A
- Authority
- JP
- Japan
- Prior art keywords
- program
- displayed
- execution
- module
- display
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、プログラムのテストや
デバッグ作業を支援する方法に関し、特に実行中のプロ
グラムの実行経路、並びにその処理結果を逐次表示する
方法、および実行結果の保存・検索表示方法に関する。
デバッグ作業を支援する方法に関し、特に実行中のプロ
グラムの実行経路、並びにその処理結果を逐次表示する
方法、および実行結果の保存・検索表示方法に関する。
【0002】
【従来の技術】通常、プログラムのデバッグ作業におい
ては、プログラムの挙動の確認、エラー発生時の原因の
探索などのためにさまざまな方法およびソフトウェア・
ツールが用いられている。
ては、プログラムの挙動の確認、エラー発生時の原因の
探索などのためにさまざまな方法およびソフトウェア・
ツールが用いられている。
【0003】このデバッグ作業を支援する一つの手段と
して、従来、プログラムを1ステップずつ実行させてそ
の結果を逐次出力するステップ実行機能がある。これは
、プログラムの挙動の理解、およびその挙動情報をもと
にしたバグ発生場所の絞り込みに有効である。
して、従来、プログラムを1ステップずつ実行させてそ
の結果を逐次出力するステップ実行機能がある。これは
、プログラムの挙動の理解、およびその挙動情報をもと
にしたバグ発生場所の絞り込みに有効である。
【0004】このステップ実行の実行経過の理解をより
容易にするものとして、文献「LISP/VMのプログ
ラム開発環境」(情報処理学会記号処理研究会報告31
(1985.3))で紹介されているように、画面上で
ソースプログラムの実行位置をプログラムの実行ステッ
プ単位で識別表示して、プログラムの実行経過をディス
プレイ画面上で監視可能にする方法が知られている。
容易にするものとして、文献「LISP/VMのプログ
ラム開発環境」(情報処理学会記号処理研究会報告31
(1985.3))で紹介されているように、画面上で
ソースプログラムの実行位置をプログラムの実行ステッ
プ単位で識別表示して、プログラムの実行経過をディス
プレイ画面上で監視可能にする方法が知られている。
【0005】また、文献「“SEWB”の開発思想と機
能」(日立評論Vol.70、No.2(1988.2
))では、ソース・プログラムを図形形式で表示し、プ
ログラムの実行に従いプログラムの各実行ステップに対
応する図形を順に識別表示するとともに、表示中のプロ
グラムに関連する変数の内容を、実行に合わせてプログ
ラムとは別の場所に表示する方法が記されている。
能」(日立評論Vol.70、No.2(1988.2
))では、ソース・プログラムを図形形式で表示し、プ
ログラムの実行に従いプログラムの各実行ステップに対
応する図形を順に識別表示するとともに、表示中のプロ
グラムに関連する変数の内容を、実行に合わせてプログ
ラムとは別の場所に表示する方法が記されている。
【0006】別の方法として、従来、プログラムの関連
部分に途中の実行内容を印字する出力文をあらかじめ挿
入して、実行途中経過の関連情報を印字出力する方法が
ある。また、プログラム中に実行を中断するブレーク・
ポイントを設定してプログラムの再実行を行い、プログ
ラムがブレーク・ポイントで停止したとき、関連情報の
参照/出力を支援する方法も広く行われている。あるい
は、プログラムを構成する各モジュールの引数や戻り値
(結果)のトレース出力指定を行い、トレース出力を行
いながら該当プログラムの再実行を行う方法も行われて
いる。
部分に途中の実行内容を印字する出力文をあらかじめ挿
入して、実行途中経過の関連情報を印字出力する方法が
ある。また、プログラム中に実行を中断するブレーク・
ポイントを設定してプログラムの再実行を行い、プログ
ラムがブレーク・ポイントで停止したとき、関連情報の
参照/出力を支援する方法も広く行われている。あるい
は、プログラムを構成する各モジュールの引数や戻り値
(結果)のトレース出力指定を行い、トレース出力を行
いながら該当プログラムの再実行を行う方法も行われて
いる。
【0007】この作業を容易にするために、先願(特願
平1−092840)では、プログラムの実行途中経過
(トレース情報)を保存し、これを検索表示する方法を
提案した。具体的には、プログラムの呼び出し階層を示
したモジュール構成図を利用してトレースを行う対象モ
ジュールの指定を行う方法、実行履歴(トレース情報)
を検索表示したいモジュールをモジュール構成図上で指
定し、指定されたモジュールの実行履歴を表示する方法
、また、モジュール間で共通に使用する変数を指示する
ことにより、それを参照・変更しているモジュールのソ
ース・プログラムならびにそのモジュールのモジュール
構成図上での位置などを表示する方法を述べている。 また、モジュール構成図およびソース・プログラムを表
示し、プログラムの実行に合わせその上で現在の実行位
置を表示すること、ならびに実行に関連するデータを別
途表示する方法についても述べた。
平1−092840)では、プログラムの実行途中経過
(トレース情報)を保存し、これを検索表示する方法を
提案した。具体的には、プログラムの呼び出し階層を示
したモジュール構成図を利用してトレースを行う対象モ
ジュールの指定を行う方法、実行履歴(トレース情報)
を検索表示したいモジュールをモジュール構成図上で指
定し、指定されたモジュールの実行履歴を表示する方法
、また、モジュール間で共通に使用する変数を指示する
ことにより、それを参照・変更しているモジュールのソ
ース・プログラムならびにそのモジュールのモジュール
構成図上での位置などを表示する方法を述べている。 また、モジュール構成図およびソース・プログラムを表
示し、プログラムの実行に合わせその上で現在の実行位
置を表示すること、ならびに実行に関連するデータを別
途表示する方法についても述べた。
【0008】また、別の先願(特願平2−057923
)では、保存しているトレース情報を、モジュールの呼
び出しレベルに応じて展開または縮退表示し、トレース
情報の構造的な調査参照を容易にする方法が示されてい
る。
)では、保存しているトレース情報を、モジュールの呼
び出しレベルに応じて展開または縮退表示し、トレース
情報の構造的な調査参照を容易にする方法が示されてい
る。
【0009】プログラムの実行経過そのもの、すなわち
所定時点(エラーが発生した時点など)までのモジュー
ルの実行順序の表示については、例えばLISP言語な
どにおけるバックトレース機能、すなわち、その時点で
の制御スタックの内容を表示する機能が知られている。
所定時点(エラーが発生した時点など)までのモジュー
ルの実行順序の表示については、例えばLISP言語な
どにおけるバックトレース機能、すなわち、その時点で
の制御スタックの内容を表示する機能が知られている。
【0010】
【発明が解決しようとする課題】上記従来技術は、プロ
グラムの実行経過を視覚的に表示するだけ、あるいは実
行に関連する変数の内容を表示するにしても別位置に表
示する、また、過去の実行履歴(トレース)の情報を参
照するにしてもプログラムやモジュール構成図とは別位
置に表示する、トレース情報の構造的表示にしてもやは
り別位置に表示する、という方法で、プログラムの実行
経過を理解するに当り、プログラムとその実行関連情報
との対応付けが必ずしも容易でない。このため、関連デ
ータが表示されるにも拘らず、プログラムとその関連デ
ータとの構造的関係(依存関係、順序関係、階層関係等
)の理解は全てユーザの頭の中で行わなくてはならず、
ユーザに余分の思考の負担を強いるという問題が有った
。
グラムの実行経過を視覚的に表示するだけ、あるいは実
行に関連する変数の内容を表示するにしても別位置に表
示する、また、過去の実行履歴(トレース)の情報を参
照するにしてもプログラムやモジュール構成図とは別位
置に表示する、トレース情報の構造的表示にしてもやは
り別位置に表示する、という方法で、プログラムの実行
経過を理解するに当り、プログラムとその実行関連情報
との対応付けが必ずしも容易でない。このため、関連デ
ータが表示されるにも拘らず、プログラムとその関連デ
ータとの構造的関係(依存関係、順序関係、階層関係等
)の理解は全てユーザの頭の中で行わなくてはならず、
ユーザに余分の思考の負担を強いるという問題が有った
。
【0011】また、実行経過の表示ついては、バックト
レース機能による表示は、単に制御スタックの内容を表
示するのみであり、それまでに実行が終了し、制御スタ
ックから削除されているモジュールについては、実行経
過の情報がスタック上に残っていないので、表示するこ
とができないという問題が有った。
レース機能による表示は、単に制御スタックの内容を表
示するのみであり、それまでに実行が終了し、制御スタ
ックから削除されているモジュールについては、実行経
過の情報がスタック上に残っていないので、表示するこ
とができないという問題が有った。
【0012】そこで本発明の目的は、ソース・プログラ
ムならびにモジュール構成図上にプログラムの実行途中
経過の情報を重畳表示することにより、プログラムの実
行状況の構造を視覚的に関連付けて理解する手段を提供
することにある。
ムならびにモジュール構成図上にプログラムの実行途中
経過の情報を重畳表示することにより、プログラムの実
行状況の構造を視覚的に関連付けて理解する手段を提供
することにある。
【0013】また、本発明の他の目的は、モジュール構
成図およびソース・プログラムを利用して、プログラム
の以前の実行履歴を検索・表示することにある。
成図およびソース・プログラムを利用して、プログラム
の以前の実行履歴を検索・表示することにある。
【0014】
【課題を解決するための手段】上記目的を達成するため
に、第1の方法として、まず、ソース・プログラムおよ
びプログラムを構成する各モジュール間の関係を木構造
上に表現したモジュール構成図を作成表示する。そして
、プログラムの実行の進展に合わせ、関連する引数、変
数および関数の戻り値等のプログラムの処理結果の値を
、ソース・プログラム上の関数・式・実行文等の実行単
位の近傍に逐次表示する。また、プログラム中の関連す
る関数・式・実行文等の実行単位の実行状態、すなわち
実行中、実行済み、実行保留の状態を示す表示属性を、
プログラムの実行の進展に合わせ、表示中のプログラム
上の各実行単位に付与する。同様に、プログラムを構成
する各モジュールの実行中、実行済み、実行保留の状態
を表わす表示属性を、プログラムの実行にあわせ、モジ
ュール構成図の各モジュールに付与する。また、プログ
ラムの再帰呼び出し、または動的呼び出しが行われた場
合に、それを示す情報をモジュール構成図に重畳させて
逐次表示する。
に、第1の方法として、まず、ソース・プログラムおよ
びプログラムを構成する各モジュール間の関係を木構造
上に表現したモジュール構成図を作成表示する。そして
、プログラムの実行の進展に合わせ、関連する引数、変
数および関数の戻り値等のプログラムの処理結果の値を
、ソース・プログラム上の関数・式・実行文等の実行単
位の近傍に逐次表示する。また、プログラム中の関連す
る関数・式・実行文等の実行単位の実行状態、すなわち
実行中、実行済み、実行保留の状態を示す表示属性を、
プログラムの実行の進展に合わせ、表示中のプログラム
上の各実行単位に付与する。同様に、プログラムを構成
する各モジュールの実行中、実行済み、実行保留の状態
を表わす表示属性を、プログラムの実行にあわせ、モジ
ュール構成図の各モジュールに付与する。また、プログ
ラムの再帰呼び出し、または動的呼び出しが行われた場
合に、それを示す情報をモジュール構成図に重畳させて
逐次表示する。
【0015】上記動作表示を実現するために、ソース・
プログラムおよびモジュール構成図の表示に関連するデ
ータを内部的に用意する。ソース・プログラムの表示関
連データは、各実行単位の種別、表示位置、表示サイズ
、その実行単位を構成する要素のリストなどの要素から
なるデータ・セルの組合せから構成される。また、モジ
ュール構成図の表示関連データは、個々のモジュールに
対応するデータ・セルの組合せから構成され、このデー
タ・セルはモジュール名称、表示位置、表示サイズ、上
記ソース・プログラムの表示関連データ、およびそのモ
ジュールが呼び出している下位モジュール群のリストな
どを要素とする。
プログラムおよびモジュール構成図の表示に関連するデ
ータを内部的に用意する。ソース・プログラムの表示関
連データは、各実行単位の種別、表示位置、表示サイズ
、その実行単位を構成する要素のリストなどの要素から
なるデータ・セルの組合せから構成される。また、モジ
ュール構成図の表示関連データは、個々のモジュールに
対応するデータ・セルの組合せから構成され、このデー
タ・セルはモジュール名称、表示位置、表示サイズ、上
記ソース・プログラムの表示関連データ、およびそのモ
ジュールが呼び出している下位モジュール群のリストな
どを要素とする。
【0016】対象とするプログラムの実行および表示を
制御するプログラムは、プログラムの実行にあわせて、
上記データを参照し、各実行単位の処理結果、ならびに
各実行単位の実行状態をソース・プログラムおよびモジ
ュール構成図の所定の位置に表示する。
制御するプログラムは、プログラムの実行にあわせて、
上記データを参照し、各実行単位の処理結果、ならびに
各実行単位の実行状態をソース・プログラムおよびモジ
ュール構成図の所定の位置に表示する。
【0017】本発明の第2の方法として、さらに次のこ
とを行う。
とを行う。
【0018】まず、ソース・プログラムの各実行単位の
上記表示関連データに、さらに処理結果の値、実行状態
、直前に実行した実行単位、次に実行する実行単位の情
報を保持する要素を準備し、実行の進展にあわせ、対応
するデータを上記所定の要素に逐次格納していく。同じ
く、モジュール構成図の各モジュールの表示関連データ
にも、そのモジュールの実行状態を保持する要素を準備
し、実行の進展にあわせ、対応するデータを上記所定の
要素に逐次格納していく。
上記表示関連データに、さらに処理結果の値、実行状態
、直前に実行した実行単位、次に実行する実行単位の情
報を保持する要素を準備し、実行の進展にあわせ、対応
するデータを上記所定の要素に逐次格納していく。同じ
く、モジュール構成図の各モジュールの表示関連データ
にも、そのモジュールの実行状態を保持する要素を準備
し、実行の進展にあわせ、対応するデータを上記所定の
要素に逐次格納していく。
【0019】一方、プログラムの実行が中断状態にある
ときに、ユーザからの要求に応じて、ソース・プログラ
ムおよびモジュール構成図の上記格納データを、前記ソ
ース・プログラムおよびモジュール構成図による動作表
示と同様の形式で、関連するソース・プログラムおよび
モジュール構成図に重畳して表示する。
ときに、ユーザからの要求に応じて、ソース・プログラ
ムおよびモジュール構成図の上記格納データを、前記ソ
ース・プログラムおよびモジュール構成図による動作表
示と同様の形式で、関連するソース・プログラムおよび
モジュール構成図に重畳して表示する。
【0020】また、同じくユーザの指定操作に応じて、
前記ソース・プログラムの各実行単位に対応する表示関
連データ中の直前に実行した実行単位、および次に実行
する実行単位の情報を利用して、現在表示中の実行状態
の一つ前の実行状態と関連する処理結果の値、または一
つ次の実行状態と関連する処理結果の値を、同様の形式
で表示する。
前記ソース・プログラムの各実行単位に対応する表示関
連データ中の直前に実行した実行単位、および次に実行
する実行単位の情報を利用して、現在表示中の実行状態
の一つ前の実行状態と関連する処理結果の値、または一
つ次の実行状態と関連する処理結果の値を、同様の形式
で表示する。
【0021】同様に、プログラム実行中、あらかじめ指
定してあるブレーク・ポイント(プログラム中断点)に
達したとき、もしくはエラーが発生したとき、その時点
での処理結果の値ならびに各実行単位の実行状態の表示
を、各実行単位および各モジュールの表示関連データに
格納してある実行履歴データを利用して、同様形式で表
示する。
定してあるブレーク・ポイント(プログラム中断点)に
達したとき、もしくはエラーが発生したとき、その時点
での処理結果の値ならびに各実行単位の実行状態の表示
を、各実行単位および各モジュールの表示関連データに
格納してある実行履歴データを利用して、同様形式で表
示する。
【0022】ここで、実行単位が、繰り返し、単なる関
数またはサブルーチンの呼び出し、関数またはサブルー
チンの再帰呼び出し、条件分岐、プログラムの動的呼び
出し、また、配列・リスト等の複数の要素を含むデータ
を入力とし、各構成要素ごとに同一の処理を繰り返し行
う関数・サブルーチンなどのときは、さらに以下の方法
を用いる。
数またはサブルーチンの呼び出し、関数またはサブルー
チンの再帰呼び出し、条件分岐、プログラムの動的呼び
出し、また、配列・リスト等の複数の要素を含むデータ
を入力とし、各構成要素ごとに同一の処理を繰り返し行
う関数・サブルーチンなどのときは、さらに以下の方法
を用いる。
【0023】まず、実行単位が繰り返しの場合は、繰り
返しに関わる実行単位の表示関連データに繰り返しの単
位ごとの情報を保持する要素を準備する。そして、繰り
返しの一単位の処理が開始されるごとに、この繰り返し
に関する部分プログラムの表示関連データを複製して前
記要素に登録し、その回の繰り返しで発生する動作表示
および実行状態表示データを、新しく複製した表示関連
データに記録していく。同時に、新しく生成および記録
したデータを、表示されているソース・プログラムの注
目している繰り返し部分に、積み重ねて表示していく。
返しに関わる実行単位の表示関連データに繰り返しの単
位ごとの情報を保持する要素を準備する。そして、繰り
返しの一単位の処理が開始されるごとに、この繰り返し
に関する部分プログラムの表示関連データを複製して前
記要素に登録し、その回の繰り返しで発生する動作表示
および実行状態表示データを、新しく複製した表示関連
データに記録していく。同時に、新しく生成および記録
したデータを、表示されているソース・プログラムの注
目している繰り返し部分に、積み重ねて表示していく。
【0024】また、上記方法による繰り返しの動作表示
がなされているとき、ユーザが適宜指定した回の繰り返
しの処理結果の値および実行状態のデータをその繰り返
しの部分プログラムに重畳表示したものを、繰り返しの
積み重ね表示の最上位に表示する。
がなされているとき、ユーザが適宜指定した回の繰り返
しの処理結果の値および実行状態のデータをその繰り返
しの部分プログラムに重畳表示したものを、繰り返しの
積み重ね表示の最上位に表示する。
【0025】次に、実行単位が関数またはサブルーチン
の呼び出しの場合は、呼び出されているプログラムを呼
び出しているプログラムの該当実行単位の位置に埋め込
んで表示する。
の呼び出しの場合は、呼び出されているプログラムを呼
び出しているプログラムの該当実行単位の位置に埋め込
んで表示する。
【0026】実行単位が関数、サブルーチン等の単なる
呼び出しでなく再帰呼び出しの場合は、再帰呼び出しに
関わる実行単位の表示関連データに再帰呼び出しの単位
ごとの情報を保持する要素を準備する。そして、再帰呼
出しの一単位の処理が開始されるごとに、呼び出されて
いるプログラム・モジュールの表示関連データを複製し
て前記要素に登録し、その回の再帰呼び出しで発生する
動作表示および実行状態表示データを、新しく複製した
表示関連データに記録していく。同時に、新しく生成お
よび記録したデータを、表示されているソース・プログ
ラム上に、積み重ねて表示していく。
呼び出しでなく再帰呼び出しの場合は、再帰呼び出しに
関わる実行単位の表示関連データに再帰呼び出しの単位
ごとの情報を保持する要素を準備する。そして、再帰呼
出しの一単位の処理が開始されるごとに、呼び出されて
いるプログラム・モジュールの表示関連データを複製し
て前記要素に登録し、その回の再帰呼び出しで発生する
動作表示および実行状態表示データを、新しく複製した
表示関連データに記録していく。同時に、新しく生成お
よび記録したデータを、表示されているソース・プログ
ラム上に、積み重ねて表示していく。
【0027】また、繰り返しの場合と同様に、上記方法
による再帰呼び出しの動作表示がなされているとき、ユ
ーザが適宜指定した回の再帰呼び出しの処理結果の値お
よび実行状態のデータをその再帰プログラムに重畳表示
したものを、再帰プログラムの積み重ね表示の最上位に
持ち上げて表示する。
による再帰呼び出しの動作表示がなされているとき、ユ
ーザが適宜指定した回の再帰呼び出しの処理結果の値お
よび実行状態のデータをその再帰プログラムに重畳表示
したものを、再帰プログラムの積み重ね表示の最上位に
持ち上げて表示する。
【0028】実行単位が再帰呼び出しの場合、別の方法
として、モジュール構成図の各モジュールの表示関連デ
ータに再帰呼び出しの単位ごとの情報を保持する要素を
準備する。そして、再帰呼び出しの一単位ごとの処理が
開始されるごとに、呼び出されているモジュールから下
位の部分モジュール構成図を複製して前記要素に登録す
る。同時に、複製した部分モジュール構成図を、もとの
モジュール構成図の対応位置に積み重ねて表示する。
として、モジュール構成図の各モジュールの表示関連デ
ータに再帰呼び出しの単位ごとの情報を保持する要素を
準備する。そして、再帰呼び出しの一単位ごとの処理が
開始されるごとに、呼び出されているモジュールから下
位の部分モジュール構成図を複製して前記要素に登録す
る。同時に、複製した部分モジュール構成図を、もとの
モジュール構成図の対応位置に積み重ねて表示する。
【0029】また、ソース・プログラムの積み重ね表示
の場合と同様に、上記方法による再帰呼び出しの動作表
示がなされているとき、モジュール構成図上でユーザが
適宜指定した回の再帰呼び出しの処理結果の値および実
行状態のデータを、呼び出されたモジュールのソース・
プログラムに重畳したものを表示する。
の場合と同様に、上記方法による再帰呼び出しの動作表
示がなされているとき、モジュール構成図上でユーザが
適宜指定した回の再帰呼び出しの処理結果の値および実
行状態のデータを、呼び出されたモジュールのソース・
プログラムに重畳したものを表示する。
【0030】実行単位が再帰呼び出しまたはプログラム
の動的呼び出しの場合、さらに別の方法として、モジュ
ール構成図の各モジュールの表示関連データに再帰呼び
出しないしはプログラムの動的呼び出しの単位ごとの情
報を保持する要素を準備する。そして、再帰呼び出しま
たはプログラムの動的呼び出しの一単位ごとの処理が開
始されるごとに、呼び出されているモジュールから下位
の部分モジュール構成図を生成して前記要素に登録する
。同時に、生成した部分モジュール構成図を、もとのモ
ジュール構成図上で呼び出しているモジュールから下位
方向へ延長して表示する。
の動的呼び出しの場合、さらに別の方法として、モジュ
ール構成図の各モジュールの表示関連データに再帰呼び
出しないしはプログラムの動的呼び出しの単位ごとの情
報を保持する要素を準備する。そして、再帰呼び出しま
たはプログラムの動的呼び出しの一単位ごとの処理が開
始されるごとに、呼び出されているモジュールから下位
の部分モジュール構成図を生成して前記要素に登録する
。同時に、生成した部分モジュール構成図を、もとのモ
ジュール構成図上で呼び出しているモジュールから下位
方向へ延長して表示する。
【0031】また、積み重ね表示の場合と同様に、モジ
ュール構成図上でユーザが適宜指定した回の再帰呼び出
しの処理結果の値および実行状態のデータをモジュール
のソース・プログラムに重畳表示したものを、呼び出さ
れたモジュールのソース・プログラムに重畳したものを
表示する。
ュール構成図上でユーザが適宜指定した回の再帰呼び出
しの処理結果の値および実行状態のデータをモジュール
のソース・プログラムに重畳表示したものを、呼び出さ
れたモジュールのソース・プログラムに重畳したものを
表示する。
【0032】実行単位が条件分岐のときは、条件分岐の
実行結果に従い、次に実行する実行単位を識別表示する
。
実行結果に従い、次に実行する実行単位を識別表示する
。
【0033】実行単位が、プログラムの動的呼び出し、
または配列・リスト等の複数の要素を含むデータを入力
とし、各構成要素ごとに同一の処理を繰り返し行う関数
・サブルーチン(具体的には、例えばLISP言語のm
ap関数)の場合は、入力引数を各構成要素の並びとし
て該関数またはサブルーチンの引数関連位置に表示し、
その内現在処理対象となっている該引数の要素を識別表
示し、該要素ごとの処理結果の関連位置に該引数と対応
させて各要素の処理終了ごとに順に表示する。
または配列・リスト等の複数の要素を含むデータを入力
とし、各構成要素ごとに同一の処理を繰り返し行う関数
・サブルーチン(具体的には、例えばLISP言語のm
ap関数)の場合は、入力引数を各構成要素の並びとし
て該関数またはサブルーチンの引数関連位置に表示し、
その内現在処理対象となっている該引数の要素を識別表
示し、該要素ごとの処理結果の関連位置に該引数と対応
させて各要素の処理終了ごとに順に表示する。
【0034】
【作用】前記第1の方法により、ソース・プログラムお
よびモジュール構成図上に、プログラムの各実行単位、
構成モジュールの処理結果および実行状態等のプログラ
ムの動作関連データを重畳して表示することが可能とな
り、プログラムとその動作を一体のものとして監視可能
な表示画面が得られる。
よびモジュール構成図上に、プログラムの各実行単位、
構成モジュールの処理結果および実行状態等のプログラ
ムの動作関連データを重畳して表示することが可能とな
り、プログラムとその動作を一体のものとして監視可能
な表示画面が得られる。
【0035】前記第2の方法により、プログラムの実行
履歴を保存するとともに、ソース・プログラムおよびモ
ジュール構成図上で関連実行単位ないしモジュールを適
宜指定することにより、該当する実行履歴データを検索
し、そのソース・プログラムおよびモジュール構成図に
重畳して表示した画面が得られる。
履歴を保存するとともに、ソース・プログラムおよびモ
ジュール構成図上で関連実行単位ないしモジュールを適
宜指定することにより、該当する実行履歴データを検索
し、そのソース・プログラムおよびモジュール構成図に
重畳して表示した画面が得られる。
【0036】
【実施例】以下本発明を実施例により詳細に説明する。
なお、以下の実施例では主に図式形式で表現したプログ
ラムを例として用いて説明する。ただし、各例における
プログラムを文字により表現したプログラムとしても、
同様な方法が実現可能である。
ラムを例として用いて説明する。ただし、各例における
プログラムを文字により表現したプログラムとしても、
同様な方法が実現可能である。
【0037】実施例中で用いるプログラムの図式表現に
は、先願(特願平2−056360)で記載した方法を
利用する。また、図式表現のベースとなるプログラミン
グ言語としては、LISP言語を用いる。ただし、本発
明は、LISP言語ならびにそれに基づく図式表現に限
定されるものではない。
は、先願(特願平2−056360)で記載した方法を
利用する。また、図式表現のベースとなるプログラミン
グ言語としては、LISP言語を用いる。ただし、本発
明は、LISP言語ならびにそれに基づく図式表現に限
定されるものではない。
【0038】図2に、本発明によるプログラム動作表示
方法を実現するシステムの構成を示す。
方法を実現するシステムの構成を示す。
【0039】図2の1は、ユーザが作成した文字表現に
よるソース・プログラムである。このソース・プログラ
ムを、2の文字表現から図式表現への変換プログラムに
より、図式表現のプログラム(の内部表現)3に変換し
、表示制御プログラム4を通じてディスプレイ装置5の
画面に表示する。
よるソース・プログラムである。このソース・プログラ
ムを、2の文字表現から図式表現への変換プログラムに
より、図式表現のプログラム(の内部表現)3に変換し
、表示制御プログラム4を通じてディスプレイ装置5の
画面に表示する。
【0040】6は、モジュール構成図生成プログラムで
、文字表現によるソース・プログラムを解析し、ソース
・プログラム中の各モジュールの呼び出し関係を抽出し
、モジュール構成図(の内部表現データ)7を生成、表
示制御プログラム4を通して画面5に表示する。
、文字表現によるソース・プログラムを解析し、ソース
・プログラム中の各モジュールの呼び出し関係を抽出し
、モジュール構成図(の内部表現データ)7を生成、表
示制御プログラム4を通して画面5に表示する。
【0041】8は実行制御プログラムである。図式表現
プログラム(の内部表現)3を解釈し、必要な処理を実
行する。なお、後述の図22に示すような図式表現プロ
グラムの内部表現データをもとにプログラムを解釈実行
するプログラムは、従来の文字表現プログラムを解釈実
行するプログラム、いわゆるインタプリタの技術を用い
て容易に実現することが出来る。
プログラム(の内部表現)3を解釈し、必要な処理を実
行する。なお、後述の図22に示すような図式表現プロ
グラムの内部表現データをもとにプログラムを解釈実行
するプログラムは、従来の文字表現プログラムを解釈実
行するプログラム、いわゆるインタプリタの技術を用い
て容易に実現することが出来る。
【0042】実行制御プログラム8は、図式表現プログ
ラムを解釈実行するとともに、実行履歴取得が指定され
ていれば、実行の過程で発生する種々の履歴情報を、実
行履歴取得プログラム9に依頼して、図式表現プログラ
ム(の内部データ)3とモジュール構成図(の内部デー
タ)7に付加していく。また、実行過程の逐次表示が指
定されていれば、表示制御プログラム4を通して画面5
に表示する。
ラムを解釈実行するとともに、実行履歴取得が指定され
ていれば、実行の過程で発生する種々の履歴情報を、実
行履歴取得プログラム9に依頼して、図式表現プログラ
ム(の内部データ)3とモジュール構成図(の内部デー
タ)7に付加していく。また、実行過程の逐次表示が指
定されていれば、表示制御プログラム4を通して画面5
に表示する。
【0043】10は実行履歴検索プログラムである。プ
ログラム実行終了後または実行途中、ユーザの指定によ
り必要な履歴情報を、図式表現プログラム(の内部デー
タ)3またはモジュール構成図(の内部データ)7から
検索し、表示制御プログラム4を通して、ディスプレイ
画面5に表示する。
ログラム実行終了後または実行途中、ユーザの指定によ
り必要な履歴情報を、図式表現プログラム(の内部デー
タ)3またはモジュール構成図(の内部データ)7から
検索し、表示制御プログラム4を通して、ディスプレイ
画面5に表示する。
【0044】11は、入力解釈および全体制御プログラ
ムである。キーボード12およびマウス13等の入力装
置から入力されたコマンドを解釈し、上記の各種プログ
ラムの起動、停止等の全体的な制御を行なう。
ムである。キーボード12およびマウス13等の入力装
置から入力されたコマンドを解釈し、上記の各種プログ
ラムの起動、停止等の全体的な制御を行なう。
【0045】図1は、図2のディスプレイ画面5に表示
される内容の具体的例を表示した図である。
される内容の具体的例を表示した図である。
【0046】図1の20は、各種コマンドを文字の形で
入力する対話入力ウィンドウである。21はモジュール
構成図の表示ウィンドウである。22はソース・プログ
ラムを図式形式で表示するウィンドウである。ウィンド
ウ21および22は、単にモジュール構成図および図式
表現によるソース・プログラムを表示するだけでなく、
プログラム実行中には、その上にプログラムの実行状態
を重畳して表示するために使われる。23は各種表示や
プログラムの実行制御を指示するボタンである。個々の
ボタンにマウス・カーソル24を合わせ、マウスをクリ
ックすると、対応する処理が実行される。
入力する対話入力ウィンドウである。21はモジュール
構成図の表示ウィンドウである。22はソース・プログ
ラムを図式形式で表示するウィンドウである。ウィンド
ウ21および22は、単にモジュール構成図および図式
表現によるソース・プログラムを表示するだけでなく、
プログラム実行中には、その上にプログラムの実行状態
を重畳して表示するために使われる。23は各種表示や
プログラムの実行制御を指示するボタンである。個々の
ボタンにマウス・カーソル24を合わせ、マウスをクリ
ックすると、対応する処理が実行される。
【0047】図3の25はコマンドメニューである。必
要に応じて、図1の画面上に、他の表示に重畳させて表
示される。各種情報の表示方法、およびプログラムの実
行制御等のための各種のコマンドが並んでおり、これら
の一つをマウス・カーソル24で指定し、マウスをクリ
ックすると、対応する処理が実行される。個々のコマン
ドの処理内容については、後述の内部処理の説明の箇所
で述べる。
要に応じて、図1の画面上に、他の表示に重畳させて表
示される。各種情報の表示方法、およびプログラムの実
行制御等のための各種のコマンドが並んでおり、これら
の一つをマウス・カーソル24で指定し、マウスをクリ
ックすると、対応する処理が実行される。個々のコマン
ドの処理内容については、後述の内部処理の説明の箇所
で述べる。
【0048】次に、具体的な画面表示例を用いて、本発
明による各種のプログラム動作表示方法について説明す
る。
明による各種のプログラム動作表示方法について説明す
る。
【0049】図4(b)は、同図(a)で示したLIS
Pプログラムを図式の形で表示したものである。これは
a*b+c/dを計算し、結果を返すプログラムである
。
Pプログラムを図式の形で表示したものである。これは
a*b+c/dを計算し、結果を返すプログラムである
。
【0050】同図30は、関数プログラムfuncの定
義を示す枠である。枠30の上辺に、左から順に、関数
定義であることを示すキーワードdefun(31)、
定義する関数名func(32)、および引数a、b、
c、d(33)をそれぞれ箱に入れて示している。枠3
0の内部に関数定義の本体がある。箱34、35、36
は、それぞれ、+、*、/の演算を行う関数を示す箱で
ある。これらの箱に右方から入る矢印により、各関数に
与えられる引数を表わし、左方から出ていく矢印により
、関数の演算結果の値を示している。矢印を用いて関数
の箱を組合せることにより、複合的な演算を表現してい
る。
義を示す枠である。枠30の上辺に、左から順に、関数
定義であることを示すキーワードdefun(31)、
定義する関数名func(32)、および引数a、b、
c、d(33)をそれぞれ箱に入れて示している。枠3
0の内部に関数定義の本体がある。箱34、35、36
は、それぞれ、+、*、/の演算を行う関数を示す箱で
ある。これらの箱に右方から入る矢印により、各関数に
与えられる引数を表わし、左方から出ていく矢印により
、関数の演算結果の値を示している。矢印を用いて関数
の箱を組合せることにより、複合的な演算を表現してい
る。
【0051】図5は、図4(b)のプログラム上でその
動作を表示した例である。
動作を表示した例である。
【0052】同図40は対話入力用のウィンドウで、関
数funcの引数a、b、c、dに適当な値(5、3、
12、4)を与え、図4のプログラムを起動した状況を
示している。
数funcの引数a、b、c、dに適当な値(5、3、
12、4)を与え、図4のプログラムを起動した状況を
示している。
【0053】同図41は、図4(b)のプログラムにそ
の実行状況を重畳して示したウィンドウである。対話ウ
ィンドウ40から引数a、b、c、dにそれぞれ値5、
3、12、4が渡され(同図51、52、53、54に
より引数に渡された値が示されている)、関数35によ
る掛け算の演算(*)が行われて結果の値15(同図5
7)が得られ、次に関数36による割算(/)が行われ
ようとする直前の段階までのプログラム実行状況を表示
している。なお、次に実行するのが関数36であるとい
うことを示すため、関数36にはハッチングが施されて
いる。
の実行状況を重畳して示したウィンドウである。対話ウ
ィンドウ40から引数a、b、c、dにそれぞれ値5、
3、12、4が渡され(同図51、52、53、54に
より引数に渡された値が示されている)、関数35によ
る掛け算の演算(*)が行われて結果の値15(同図5
7)が得られ、次に関数36による割算(/)が行われ
ようとする直前の段階までのプログラム実行状況を表示
している。なお、次に実行するのが関数36であるとい
うことを示すため、関数36にはハッチングが施されて
いる。
【0054】同図43は、画面上に表示されたnext
ボタンである。マウス等によりこのボタンをクリックす
ることによりプログラムの実行を1ステップずつ進める
ことが出来る。なお、画面に表示したボタンとマウスの
組合せではなく、キーボード12上に設けたファンクシ
ョン・キーにより、1ステップずつの実行を指示する構
成にすることもできる。図5の41のウィンドウは、こ
のボタン(またはファンクション・キー)を用いて1ス
テップずつ実行を進め、割算(/)の直前まで実行を進
めた状態を示している。
ボタンである。マウス等によりこのボタンをクリックす
ることによりプログラムの実行を1ステップずつ進める
ことが出来る。なお、画面に表示したボタンとマウスの
組合せではなく、キーボード12上に設けたファンクシ
ョン・キーにより、1ステップずつの実行を指示する構
成にすることもできる。図5の41のウィンドウは、こ
のボタン(またはファンクション・キー)を用いて1ス
テップずつ実行を進め、割算(/)の直前まで実行を進
めた状態を示している。
【0055】プログラムの実行開始から図5のソース・
プログラム表示ウィンドウ41に示した実行状態までの
プログラムの実行手順は、次のとおりである。
プログラム表示ウィンドウ41に示した実行状態までの
プログラムの実行手順は、次のとおりである。
【0056】対話入力40に、関数funcの起動のた
めの入力40が与えられると、まず、関数funcの定
義がソース・プログラム表示ウィンドウに表示される。 そこで、nextボタン43をマウスでクリックすると
、次に引数リスト33の各引数a、b、c、dに与えら
れた値5、3、12、4が渡された状況が表示される(
同図51、52、53、54)。さらにnextボタン
43をマウスでクリックすると、関数*(35)の入力
引数aに、値5が渡された状態が表示される(図5の5
5)。以下順にnextボタン43をマウスでクリック
するごとに、関数*(35)の引数bに値3が渡された
状態(56)、関数*(35)が引数の値を受け取って
掛け算を実行し結果を出力した状態(57)、関数/(
36)の引数cに値12が渡された状態(58)、関数
/(36)の引数dに値4が渡された状態(59)が次
々に表示されていき、図5の41の状況になる。このあ
とさらにnextボタン43をマウスでクリックしてい
くと、図には示していないが、関数/(36)の演算結
果および関数+(34)の演算結果が順に表示される。
めの入力40が与えられると、まず、関数funcの定
義がソース・プログラム表示ウィンドウに表示される。 そこで、nextボタン43をマウスでクリックすると
、次に引数リスト33の各引数a、b、c、dに与えら
れた値5、3、12、4が渡された状況が表示される(
同図51、52、53、54)。さらにnextボタン
43をマウスでクリックすると、関数*(35)の入力
引数aに、値5が渡された状態が表示される(図5の5
5)。以下順にnextボタン43をマウスでクリック
するごとに、関数*(35)の引数bに値3が渡された
状態(56)、関数*(35)が引数の値を受け取って
掛け算を実行し結果を出力した状態(57)、関数/(
36)の引数cに値12が渡された状態(58)、関数
/(36)の引数dに値4が渡された状態(59)が次
々に表示されていき、図5の41の状況になる。このあ
とさらにnextボタン43をマウスでクリックしてい
くと、図には示していないが、関数/(36)の演算結
果および関数+(34)の演算結果が順に表示される。
【0057】上記の例では、各ステップの実行結果は、
全て画面上に残されていくものとして説明したが、実際
上それらを全て画面上に残していくと、画面が乱雑にな
って見にくくなる可能性がある。そこで、各関数の実行
が終了するごとに、関係のないデータ表示は消去するよ
うな構成にすることも可能である。
全て画面上に残されていくものとして説明したが、実際
上それらを全て画面上に残していくと、画面が乱雑にな
って見にくくなる可能性がある。そこで、各関数の実行
が終了するごとに、関係のないデータ表示は消去するよ
うな構成にすることも可能である。
【0058】例えば、関数35の演算が終了し演算結果
57が表示された状態で、次にnextボタン43をマ
ウスでクリックすると、関数36の引数cの値12(図
の58)を表示するとともに、関数35の引数a、bの
値5(図の55)と3(図の56)の表示を消去する。 なお、関数35の出力結果の表示57は、次の関数34
(+)の入力となっているので、この表示はそのまま保
存する。この状態でのプログラム動作表示画面を図6に
示す。表示57は、関数34の処理が終わって次のステ
ップに処理が移ったとき消去する(この例では、これで
処理が終わりで次のステップはないが、一般には次のス
テップの処理がある)。
57が表示された状態で、次にnextボタン43をマ
ウスでクリックすると、関数36の引数cの値12(図
の58)を表示するとともに、関数35の引数a、bの
値5(図の55)と3(図の56)の表示を消去する。 なお、関数35の出力結果の表示57は、次の関数34
(+)の入力となっているので、この表示はそのまま保
存する。この状態でのプログラム動作表示画面を図6に
示す。表示57は、関数34の処理が終わって次のステ
ップに処理が移ったとき消去する(この例では、これで
処理が終わりで次のステップはないが、一般には次のス
テップの処理がある)。
【0059】この方法に従って、プログラムの各々の実
行単位の処理結果の表示、ならびに適切なタイミングに
よる消去を行っていけば、画面を過度に乱雑にすること
なく、プログラムの動作わかりやすく表示することが出
来る。
行単位の処理結果の表示、ならびに適切なタイミングに
よる消去を行っていけば、画面を過度に乱雑にすること
なく、プログラムの動作わかりやすく表示することが出
来る。
【0060】図7は、図5の表示に加えて、実行済みの
関数にそれを示す表示属性(図では横縞のハッチング)
を付けて表示した例である。図では関数35が既に実行
済みであるので、それを示すハッチングが施されている
。
関数にそれを示す表示属性(図では横縞のハッチング)
を付けて表示した例である。図では関数35が既に実行
済みであるので、それを示すハッチングが施されている
。
【0061】関数35(実行済み)と関数36(実行中
:次に実行する)のように、プログラムの実行の進展に
従い、現在実行中の実行単位および実行済みの実行単位
を識別表示していけば、どこまで実行したかが、画面上
で容易に把握することができる。また、結果として未実
行の部分も把握できるので、本来実行されているべき部
分が実行されていないとき、その点の認識も容易にでき
るので、プログラムのデバッグ等に大いに効果がある。
:次に実行する)のように、プログラムの実行の進展に
従い、現在実行中の実行単位および実行済みの実行単位
を識別表示していけば、どこまで実行したかが、画面上
で容易に把握することができる。また、結果として未実
行の部分も把握できるので、本来実行されているべき部
分が実行されていないとき、その点の認識も容易にでき
るので、プログラムのデバッグ等に大いに効果がある。
【0062】なお、図には該当するものがないが、プロ
グラム中にユーザ定義の関数呼び出しがある場合、その
関数の呼び出しが行われ、画面上に表示しているプログ
ラム上でその関数の実行が保留状態にあるとき、その状
況を示す表示属性を関数に付与して識別表示することが
出来る。こうすれば、画面上で実行保留状態の関数の把
握が可能になるので、プログラムの動作状態の理解に役
立つ。また、実行保留状態の表示は、特に以前の実行結
果(実行履歴)の検索表示を行うとき(後述)に効果が
ある。
グラム中にユーザ定義の関数呼び出しがある場合、その
関数の呼び出しが行われ、画面上に表示しているプログ
ラム上でその関数の実行が保留状態にあるとき、その状
況を示す表示属性を関数に付与して識別表示することが
出来る。こうすれば、画面上で実行保留状態の関数の把
握が可能になるので、プログラムの動作状態の理解に役
立つ。また、実行保留状態の表示は、特に以前の実行結
果(実行履歴)の検索表示を行うとき(後述)に効果が
ある。
【0063】この実行中、実行済み、実行保留の実行状
態識別表示は、ソース・プログラムだけでなくモジュー
ル構成図の各モジュールに施しても効果がある。
態識別表示は、ソース・プログラムだけでなくモジュー
ル構成図の各モジュールに施しても効果がある。
【0064】図5および図6の42はgoボタンである
。本ボタンをクリックすると、nextボタンと同様に
プログラムの実行を開始するが、nextボタンの場合
とは異なり、1ステップ実行で止まらずに、ブレーク・
ポイントがあらかじめ設定してあればそこまで、もしく
はプログラムの実行エラー発生するまで実行を継続する
。もし、双方ともなければプログラムの最後まで実行を
行う。なお、ブレーク・ポイントないしエラー発生によ
りプログラムが中断したときは、図5のような形式で、
中断した箇所を含むプログラムにその時までの実行状況
を重畳して表示する。
。本ボタンをクリックすると、nextボタンと同様に
プログラムの実行を開始するが、nextボタンの場合
とは異なり、1ステップ実行で止まらずに、ブレーク・
ポイントがあらかじめ設定してあればそこまで、もしく
はプログラムの実行エラー発生するまで実行を継続する
。もし、双方ともなければプログラムの最後まで実行を
行う。なお、ブレーク・ポイントないしエラー発生によ
りプログラムが中断したときは、図5のような形式で、
中断した箇所を含むプログラムにその時までの実行状況
を重畳して表示する。
【0065】図5および図6の44は、画面上に表示さ
れたprevボタンである(prevはpreviou
sの略)。必要に応じて、プログラムの実行履歴、すな
わち制御の流れと引数・変数もしくは関数の戻り値等の
プログラムの実行状態ならびにそれらとプログラムとの
対応関係を逐次記憶しているとき、このprevボタン
をマウスでクリックすることにより、画面に表示されて
いる実行状態の表示を一つ前の状態に戻すことができる
。prevボタンを続けてクリックすれば、次々にその
前その前と戻していくことができる。その状態でnex
tボタンをクリックすれば、再びプログラムの実行を前
方へ進ませることができる。
れたprevボタンである(prevはpreviou
sの略)。必要に応じて、プログラムの実行履歴、すな
わち制御の流れと引数・変数もしくは関数の戻り値等の
プログラムの実行状態ならびにそれらとプログラムとの
対応関係を逐次記憶しているとき、このprevボタン
をマウスでクリックすることにより、画面に表示されて
いる実行状態の表示を一つ前の状態に戻すことができる
。prevボタンを続けてクリックすれば、次々にその
前その前と戻していくことができる。その状態でnex
tボタンをクリックすれば、再びプログラムの実行を前
方へ進ませることができる。
【0066】図の45はlastボタンである。pre
vボタンにより実行状態の表示が以前の状態にさかのぼ
っているときこのボタンをクリックすれば、最後に実行
した状態(すなわち最後に実行履歴を取得した状態)ま
で一度で戻すことができる。次に、プログラム動作表示
の別の例を、図8および図9を用いて説明する。
vボタンにより実行状態の表示が以前の状態にさかのぼ
っているときこのボタンをクリックすれば、最後に実行
した状態(すなわち最後に実行履歴を取得した状態)ま
で一度で戻すことができる。次に、プログラム動作表示
の別の例を、図8および図9を用いて説明する。
【0067】図8は、繰り返しの形式doを用いたプロ
グラムを図式により表現したものである。1からnまで
の整数を掛け合わせる階乗関数(factorial)
の例である。同図(a)は、そのLISP言語によるプ
ログラム、また(b)は、それを図式により表現したも
のである。
グラムを図式により表現したものである。1からnまで
の整数を掛け合わせる階乗関数(factorial)
の例である。同図(a)は、そのLISP言語によるプ
ログラム、また(b)は、それを図式により表現したも
のである。
【0068】図8(b)60は、階乗関数の定義を示す
枠である。枠60の上辺には、図4の場合と同様に、左
から順に、関数定義であることを示すキーワードdef
un(61)、定義する関数名factorial(6
2)、および引数n(63)をそれぞれ箱に入れて示し
ている。枠60の内部に関数定義の本体がある。
枠である。枠60の上辺には、図4の場合と同様に、左
から順に、関数定義であることを示すキーワードdef
un(61)、定義する関数名factorial(6
2)、および引数n(63)をそれぞれ箱に入れて示し
ている。枠60の内部に関数定義の本体がある。
【0069】同図64は、繰り返しの実行形式doを示
す枠である。65および66に、doの内部で使用して
いる二つの変数iとresultを示す箱がある。変数
iは、繰り返しの制御をつかさどる変数である。最初に
初期値1が与えられ(変数iの箱(65)のラベルin
itに右から入る矢印によって示されている)、繰り返
しの2回目以降はラベルstepに右から入る矢印によ
って示される値が与えられる。この場合、前回の変数i
の値に1を加えたものが、次の繰り返しでの制御変数i
の値となる(箱67で示した関数1+(入力に1を加え
たものを出力する関数)による)。
す枠である。65および66に、doの内部で使用して
いる二つの変数iとresultを示す箱がある。変数
iは、繰り返しの制御をつかさどる変数である。最初に
初期値1が与えられ(変数iの箱(65)のラベルin
itに右から入る矢印によって示されている)、繰り返
しの2回目以降はラベルstepに右から入る矢印によ
って示される値が与えられる。この場合、前回の変数i
の値に1を加えたものが、次の繰り返しでの制御変数i
の値となる(箱67で示した関数1+(入力に1を加え
たものを出力する関数)による)。
【0070】箱66で示した変数resultは、各繰
返しごとの計算結果を格納する変数である。この場合、
初期値(init)として1が与えられている。
返しごとの計算結果を格納する変数である。この場合、
初期値(init)として1が与えられている。
【0071】図形68(二つの三角形の頂点を対抗させ
た図形)は、繰り返しの形式doの終了判定部分を表わ
している。図形68の上方から入っている矢印69は、
終了判定の条件を表す。矢印69によって示される値が
真のとき終了条件が成立し、繰り返しの実行を終了する
。このとき、図形68に右方から入っている矢印70に
つながる部分(この場合変数result)の値が計算
されて、繰り返しの制御構造doの値として矢印73を
経由して出力される。
た図形)は、繰り返しの形式doの終了判定部分を表わ
している。図形68の上方から入っている矢印69は、
終了判定の条件を表す。矢印69によって示される値が
真のとき終了条件が成立し、繰り返しの実行を終了する
。このとき、図形68に右方から入っている矢印70に
つながる部分(この場合変数result)の値が計算
されて、繰り返しの制御構造doの値として矢印73を
経由して出力される。
【0072】矢印69によって示される値が偽のときは
、終了条件が成立せず、図形68の下方に伸びる線分7
1につながる処理、すなわち繰り返しの処理本体が実行
される。
、終了条件が成立せず、図形68の下方に伸びる線分7
1につながる処理、すなわち繰り返しの処理本体が実行
される。
【0073】矢印69の始点にある箱72は、終了条件
を示す関数である。この例では、変数iと変数nとの大
小比較を行って、i>nのとき値「真」を出力し、i>
nを満たさないとき値「偽」を出力する。
を示す関数である。この例では、変数iと変数nとの大
小比較を行って、i>nのとき値「真」を出力し、i>
nを満たさないとき値「偽」を出力する。
【0074】箱73、箱74は、繰り返しの処理本体で
ある。この例では、箱74で示す関数「*」によって変
数iと変数resultを掛けあわせ、箱73で示すL
ISPの特殊関数setqによって結果を変数resu
ltに代入する。
ある。この例では、箱74で示す関数「*」によって変
数iと変数resultを掛けあわせ、箱73で示すL
ISPの特殊関数setqによって結果を変数resu
ltに代入する。
【0075】図9に、図8(b)のプログラム上でその
動作を表示した例を示す。
動作を表示した例を示す。
【0076】図5の場合と同じく、対話入力ウィンドウ
80で、関数factorialの引数nに数値10を
与え、図8のプログラムを起動した状況を示している。
80で、関数factorialの引数nに数値10を
与え、図8のプログラムを起動した状況を示している。
【0077】同図81は、図8(b)のプログラムにそ
の実行状況を重畳して示したウィンドウである。対話ウ
ィンドウ80から引数nに値10が渡され、繰り返しの
実行形式doで、iを1から5まで変化させて計算した
途中結果を示している(i=5の状態で、関数74を実
行する直前の状況)。本例では、変数や関数の処理結果
のデータを単にプログラムに重畳して表示するだけでな
く、doを示す枠に含まれる部分プログラムを同位置で
(若干ずらしつつ)繰り返しの一単位ごとに順に積み上
げて表示している。本例では、変数iを1から5まで変
化させて実行した途中結果を示しているので、doによ
る部分プログラムは5枚積まれている。なお、図の関数
72の出力値として示されているnil(図の75)は
、LISPの世界で真理値の「偽」を表わす。
の実行状況を重畳して示したウィンドウである。対話ウ
ィンドウ80から引数nに値10が渡され、繰り返しの
実行形式doで、iを1から5まで変化させて計算した
途中結果を示している(i=5の状態で、関数74を実
行する直前の状況)。本例では、変数や関数の処理結果
のデータを単にプログラムに重畳して表示するだけでな
く、doを示す枠に含まれる部分プログラムを同位置で
(若干ずらしつつ)繰り返しの一単位ごとに順に積み上
げて表示している。本例では、変数iを1から5まで変
化させて実行した途中結果を示しているので、doによ
る部分プログラムは5枚積まれている。なお、図の関数
72の出力値として示されているnil(図の75)は
、LISPの世界で真理値の「偽」を表わす。
【0078】同図81までの実行状況は、80の対話入
力ウィンドウでプログラムを起動したあと、図5の場合
と同様nextボタン(図の83)をマウスでクリック
して1ステップずつ進めることにより到達したものであ
る。
力ウィンドウでプログラムを起動したあと、図5の場合
と同様nextボタン(図の83)をマウスでクリック
して1ステップずつ進めることにより到達したものであ
る。
【0079】同図のgoボタン(82)、prevボタ
ン(84)、lastボタン(85)は、図5と同様に
、それぞれ、1ステップ実行で止めずにブレーク・ポイ
ント到達、エラー発生またはプログラムの最後まで自動
実行するボタン、実行状態の表示を一つ前のステップに
戻すボタン、およびprevボタンによりさかのぼって
いる実行状態表示を最後に実行した状態まで一度で戻す
ボタンである。
ン(84)、lastボタン(85)は、図5と同様に
、それぞれ、1ステップ実行で止めずにブレーク・ポイ
ント到達、エラー発生またはプログラムの最後まで自動
実行するボタン、実行状態の表示を一つ前のステップに
戻すボタン、およびprevボタンによりさかのぼって
いる実行状態表示を最後に実行した状態まで一度で戻す
ボタンである。
【0080】なお、繰り返しの動作を示すための積み重
ね表示は、本例のdoだけでなく、さまざまな繰り返し
の動作表示に用いることができる。例えば、後述の関数
mapcarの動作表示に用いることもできる。また、
繰り返しのみならず、関数、サブルーチン等で再帰呼び
出しを行っている場合は、再帰呼出しによる処理の繰り
返しの表示にも用いることができる。特に、プログラム
・モジュールの中で内部的に定義している関数、サブル
ーチンを用いている場合、その動作表示に効果がある。
ね表示は、本例のdoだけでなく、さまざまな繰り返し
の動作表示に用いることができる。例えば、後述の関数
mapcarの動作表示に用いることもできる。また、
繰り返しのみならず、関数、サブルーチン等で再帰呼び
出しを行っている場合は、再帰呼出しによる処理の繰り
返しの表示にも用いることができる。特に、プログラム
・モジュールの中で内部的に定義している関数、サブル
ーチンを用いている場合、その動作表示に効果がある。
【0081】次に、プログラム動作表示の第3の例を図
10に示す。
10に示す。
【0082】図10(a)は、条件分岐を使ったプログ
ラムの例である。二つの三角形の頂点を対抗させた図形
90が、条件分岐を表わす図形である。図形90の上方
から入っている矢印91は分岐の条件を表わす。矢印9
1によって示される値が真のとき、矢印92に連なる部
分プログラムが実行され、矢印91に示される値が偽の
とき、矢印93に連なる部分プログラムが実行される。
ラムの例である。二つの三角形の頂点を対抗させた図形
90が、条件分岐を表わす図形である。図形90の上方
から入っている矢印91は分岐の条件を表わす。矢印9
1によって示される値が真のとき、矢印92に連なる部
分プログラムが実行され、矢印91に示される値が偽の
とき、矢印93に連なる部分プログラムが実行される。
【0083】図10(b)は、同図(a)のプログラム
上での実行状態表示を示している。今、矢印91の状態
すなわち関数94の出力の値がT(図形95:TはLI
SPの世界で真理値の「真」を表わす)なので、次に実
行するのは矢印92に連なる部分プログラムである。こ
れを強調するために、矢印92が太線で表示されている
。なお、矢印91の値がnil(LISPの世界で真理
値の偽を表わす)のときは、矢印93が太線で表示され
る。
上での実行状態表示を示している。今、矢印91の状態
すなわち関数94の出力の値がT(図形95:TはLI
SPの世界で真理値の「真」を表わす)なので、次に実
行するのは矢印92に連なる部分プログラムである。こ
れを強調するために、矢印92が太線で表示されている
。なお、矢印91の値がnil(LISPの世界で真理
値の偽を表わす)のときは、矢印93が太線で表示され
る。
【0084】この表示によって、次に実行される部分プ
ログラムが明確に分かるので、表示されたプログラム上
での実行動作の追随がより容易になる。
ログラムが明確に分かるので、表示されたプログラム上
での実行動作の追随がより容易になる。
【0085】図10では、条件分岐の図形につながる矢
印だけを強調表示しているが、この矢印を含めて分岐条
件が真のとき実行されるプログラム全体を強調表示すれ
ば、さらにわかりやすい表示の実現が可能である。
印だけを強調表示しているが、この矢印を含めて分岐条
件が真のとき実行されるプログラム全体を強調表示すれ
ば、さらにわかりやすい表示の実現が可能である。
【0086】本例では単一の条件による2方向の分岐に
ついて示したが、複数条件による多方向分岐についても
、類似の表示を行うことにより、プログラムの動作理解
が容易になる。
ついて示したが、複数条件による多方向分岐についても
、類似の表示を行うことにより、プログラムの動作理解
が容易になる。
【0087】なお、前記の繰り返しdoの表示例中に、
繰り返しの終了判定があるが(図8の68)、これも上
記のような表示を行うことによって、動作をわかりやす
く表示できる。
繰り返しの終了判定があるが(図8の68)、これも上
記のような表示を行うことによって、動作をわかりやす
く表示できる。
【0088】次に、プログラム動作表示の第4の例を、
図11および図12を用いて説明する。
図11および図12を用いて説明する。
【0089】図11(a)は、数値を要素とするリスト
を入力とし、各要素の自乗を要素とするリストを生成し
て返すLISPプログラムである(リストとは要素の並
びをカッコで囲ったもの。要素がまたリストであっても
良い)。同図(b)は、それを図式により表現したもの
である。本例では、LISP特有の関数mapcarを
使用している。
を入力とし、各要素の自乗を要素とするリストを生成し
て返すLISPプログラムである(リストとは要素の並
びをカッコで囲ったもの。要素がまたリストであっても
良い)。同図(b)は、それを図式により表現したもの
である。本例では、LISP特有の関数mapcarを
使用している。
【0090】関数mapcarは、引数としてリストと
関数をとり、与えられた関数をリストの各要素に適用し
、結果をまたリストに組立て返す関数である。図11(
b)の100がその図式表現である。矢印101が引数
のリスト、mapcarの枠の内側の枠102が引数の
関数を表わしている。枠102の左右の三角形(103
、104)は、それぞれリストの分解および組み立てを
示唆する図形表現である。分解されたリストの要素が一
つづつ関数102に与えられ、その結果得られた値がま
たリストに組み立てられるというニュアンスを表わして
いる。
関数をとり、与えられた関数をリストの各要素に適用し
、結果をまたリストに組立て返す関数である。図11(
b)の100がその図式表現である。矢印101が引数
のリスト、mapcarの枠の内側の枠102が引数の
関数を表わしている。枠102の左右の三角形(103
、104)は、それぞれリストの分解および組み立てを
示唆する図形表現である。分解されたリストの要素が一
つづつ関数102に与えられ、その結果得られた値がま
たリストに組み立てられるというニュアンスを表わして
いる。
【0091】関数102の中で、105は無名関数(特
定の名前を付けていない関数)を表わすキーワードla
mbda、106は関数の引数である。107は関数*
(掛け算)で、入力引数xの自乗を計算する。
定の名前を付けていない関数)を表わすキーワードla
mbda、106は関数の引数である。107は関数*
(掛け算)で、入力引数xの自乗を計算する。
【0092】図12は、図11(b)のプログラム上で
その動作を表示した例である。
その動作を表示した例である。
【0093】図5と同様に、対話入力ウィンドウ110
で関数list−squareの引数に適当な値(この
場合はリスト(1、2、3、4、5、6、7、8))を
与え、図11のプログラムを起動した状況を示している
。なお、引数のリストの先頭の引用符号(’)は、リス
トをデータとして扱うために付けられている。LISP
の処理系は、リストとして与えられたものは常にプログ
ラムとして認識し実行しようとする。したがって、リス
トを単なるデータとして取り扱いたいときは、このよう
な引用符号をリストの前に付ける必要がある。
で関数list−squareの引数に適当な値(この
場合はリスト(1、2、3、4、5、6、7、8))を
与え、図11のプログラムを起動した状況を示している
。なお、引数のリストの先頭の引用符号(’)は、リス
トをデータとして扱うために付けられている。LISP
の処理系は、リストとして与えられたものは常にプログ
ラムとして認識し実行しようとする。したがって、リス
トを単なるデータとして取り扱いたいときは、このよう
な引用符号をリストの前に付ける必要がある。
【0094】図12の111は、図11(b)のプログ
ラムにその実行状況を重畳して示したウィンドウである
。対話ウィンドウから引数listにリスト(1、2、
3、4、5、6、7、8)が渡され、関数mapcar
によりリストの要素の4番目まで計算が進行した途中結
果を示している。
ラムにその実行状況を重畳して示したウィンドウである
。対話ウィンドウから引数listにリスト(1、2、
3、4、5、6、7、8)が渡され、関数mapcar
によりリストの要素の4番目まで計算が進行した途中結
果を示している。
【0095】120は関数mapcarの入力として渡
されたリストの値、121はリスト中で現在処理対象と
なっている要素、122は関数mapcarの出力の中
間結果である。現在121の要素(数値4)に対応する
要素(数値16)までが出力されている(同図123)
。
されたリストの値、121はリスト中で現在処理対象と
なっている要素、122は関数mapcarの出力の中
間結果である。現在121の要素(数値4)に対応する
要素(数値16)までが出力されている(同図123)
。
【0096】この表示法により、配列、リスト等の複数
の要素を含むデータを入力し、各構成要素ごとの処理を
行うような関数、サブルーチンの処理動作をわかりやす
く表示することが可能になる。
の要素を含むデータを入力し、各構成要素ごとの処理を
行うような関数、サブルーチンの処理動作をわかりやす
く表示することが可能になる。
【0097】次に、プログラム動作表示の第5の例を、
図13を用いて説明する。
図13を用いて説明する。
【0098】ところで、単純なプログラムならいざ知ら
ず、一般にプログラムは複数のモジュールからなってい
る。したがって、図5に示したような表示により、プロ
グラムの動作を表示しているとき、対象プログラム中に
別のユーザ定義関数の呼び出しに出会うことがある。こ
のようなとき、通常は呼び出されている関数のプログラ
ムに表示を切り換えて、動作表示を続行することになる
。しかし、ときとして、呼び出し側のプログラムと呼び
出されている側のプログラムを同時に表示してみたい場
合がある。これは、最近のマルチウィンドウ・システム
を利用すれば実現できるが、別々のウィンドウに表示し
た場合、引数や戻値等両プログラムの対応部分が離れた
位置に表示される。したがって、対応部分の関連付けは
ユーザの頭の中で行わなければならない。
ず、一般にプログラムは複数のモジュールからなってい
る。したがって、図5に示したような表示により、プロ
グラムの動作を表示しているとき、対象プログラム中に
別のユーザ定義関数の呼び出しに出会うことがある。こ
のようなとき、通常は呼び出されている関数のプログラ
ムに表示を切り換えて、動作表示を続行することになる
。しかし、ときとして、呼び出し側のプログラムと呼び
出されている側のプログラムを同時に表示してみたい場
合がある。これは、最近のマルチウィンドウ・システム
を利用すれば実現できるが、別々のウィンドウに表示し
た場合、引数や戻値等両プログラムの対応部分が離れた
位置に表示される。したがって、対応部分の関連付けは
ユーザの頭の中で行わなければならない。
【0099】これに対して、呼び出し側のプログラム中
に呼び出されているプログラムを埋め込んで表示するこ
とができれば、両者に視覚的な対応が付くので、プログ
ラムおよびその動作の理解がより容易になると考えられ
る。
に呼び出されているプログラムを埋め込んで表示するこ
とができれば、両者に視覚的な対応が付くので、プログ
ラムおよびその動作の理解がより容易になると考えられ
る。
【0100】図13はこの状況を示したものである。
(a)はその中で別のユーザ定義関数bar(120)
を呼び出しているプログラム、(b)は呼び出されてい
る関数barの定義、(c)は関数barによる呼び出
しをその定義で置き換えて表示した動作表示画面である
(121参照)。
を呼び出しているプログラム、(b)は呼び出されてい
る関数barの定義、(c)は関数barによる呼び出
しをその定義で置き換えて表示した動作表示画面である
(121参照)。
【0101】図から分かるように、引数および戻値の対
応が直接見てとれるので、プログラムの実行過程をより
容易に追随できるようになる。
応が直接見てとれるので、プログラムの実行過程をより
容易に追随できるようになる。
【0102】次に、プログラム動作表示の第6の例を、
図14を用いて説明する。モジュール構成図を利用した
プログラムの動作表示の例である。モジュール構成図と
は、プログラムを構成する各モジュール間の呼び出し関
係を表現した図で、通常木構造状に表現する。
図14を用いて説明する。モジュール構成図を利用した
プログラムの動作表示の例である。モジュール構成図と
は、プログラムを構成する各モジュール間の呼び出し関
係を表現した図で、通常木構造状に表現する。
【0103】モジュール構成図を用いたプログラムの動
作表示方法は、先願(特願平1−092840および特
願平2−057923)で既に公知である。
作表示方法は、先願(特願平1−092840および特
願平2−057923)で既に公知である。
【0104】通常、モジュール構成図は、その中に再帰
呼び出しなどにより多重に呼び出されているモジュール
があっても、スペースの都合上それらの表示を省略する
ことが多い。しかし、静的には一つでも、プログラム中
に再帰呼び出し等があり同一モジュールが多重に呼び出
される場合、モジュール構成図上でそれぞれの呼び出し
を分けて表示することができれば、プログラムの動作の
理解がより容易になると考えられる。
呼び出しなどにより多重に呼び出されているモジュール
があっても、スペースの都合上それらの表示を省略する
ことが多い。しかし、静的には一つでも、プログラム中
に再帰呼び出し等があり同一モジュールが多重に呼び出
される場合、モジュール構成図上でそれぞれの呼び出し
を分けて表示することができれば、プログラムの動作の
理解がより容易になると考えられる。
【0105】先願(特願平2−057923)では、こ
のような場合の対策として、再帰呼び出しが繰り返し行
われた場合に、モジュール構成図をその呼出しごとに下
方へ延長して表示する方法を示していた。その具体例を
図14(b)に示す。
のような場合の対策として、再帰呼び出しが繰り返し行
われた場合に、モジュール構成図をその呼出しごとに下
方へ延長して表示する方法を示していた。その具体例を
図14(b)に示す。
【0106】図14(a)はモジュール構成図の例であ
る。今、モジュールA、B、Dと実行の制御が渡ってい
き、次に、モジュールDからモジュールBを再帰的に呼
び出したとする。このとき、図14(b)に示すように
、モジュール構成図をモジュールDから下方に拡張し、
モジュールDの下にモジュールBを頂点とする部分モジ
ュール構成図(図14(b)の130)を表示する。モ
ジュールDからモジュールBの呼び出しが繰り返し行わ
れた場合、この拡張を繰り返し行う。
る。今、モジュールA、B、Dと実行の制御が渡ってい
き、次に、モジュールDからモジュールBを再帰的に呼
び出したとする。このとき、図14(b)に示すように
、モジュール構成図をモジュールDから下方に拡張し、
モジュールDの下にモジュールBを頂点とする部分モジ
ュール構成図(図14(b)の130)を表示する。モ
ジュールDからモジュールBの呼び出しが繰り返し行わ
れた場合、この拡張を繰り返し行う。
【0107】この表示方法は、再帰呼び出しだけでなく
、プログラムの動的呼び出しが行われた場合にも利用で
きる。実際、LISPやCなどの言語では、プログラム
をサブルーチンや関数の引数に取ることもできるので、
このようなプログラムの動作表示に有用である。LIS
Pでは、また、変数の値としてプログラムを格納でき、
これを動的に起動する機構が備わっている。この機構を
利用して、動的にプログラムを起動するプログラムを書
くことも多いので、この表示方法を利用してプログラム
の動作をわかりやすく表示することが出来る。
、プログラムの動的呼び出しが行われた場合にも利用で
きる。実際、LISPやCなどの言語では、プログラム
をサブルーチンや関数の引数に取ることもできるので、
このようなプログラムの動作表示に有用である。LIS
Pでは、また、変数の値としてプログラムを格納でき、
これを動的に起動する機構が備わっている。この機構を
利用して、動的にプログラムを起動するプログラムを書
くことも多いので、この表示方法を利用してプログラム
の動作をわかりやすく表示することが出来る。
【0108】ところで、図14(b)の方法では、再帰
呼び出しが繰り返し行われた場合、モジュール構成図が
どんどん大きくなる。表示スペースに制約がある場合、
これは問題である。
呼び出しが繰り返し行われた場合、モジュール構成図が
どんどん大きくなる。表示スペースに制約がある場合、
これは問題である。
【0109】図14(c)は、この問題を解決する表示
方法である。モジュール構成図を拡張する代わりに、モ
ジュールBを頂点とする部分モジュール構成図を同位置
で(若干ずらして)積み重ね表示する。多重の再帰呼び
出しが行われた場合は、積み重ねを多重にする。
方法である。モジュール構成図を拡張する代わりに、モ
ジュールBを頂点とする部分モジュール構成図を同位置
で(若干ずらして)積み重ね表示する。多重の再帰呼び
出しが行われた場合は、積み重ねを多重にする。
【0110】この方法によれば、モジュール構成図が大
きくなることはないので、表示スペースの問題は発生し
ない。また、再帰呼び出しの繰り返しが積み重ね表示に
より1ヶ所に表示されるので、再帰呼び出しの回数の確
認にも有効である。
きくなることはないので、表示スペースの問題は発生し
ない。また、再帰呼び出しの繰り返しが積み重ね表示に
より1ヶ所に表示されるので、再帰呼び出しの回数の確
認にも有効である。
【0111】この積み重ねによる表示方法は、再帰呼び
出しだけでなく、モジュール中に繰り返しの実行文を含
み、かつそのの中で下位のモジュールを繰り返し呼び出
しているときにも利用できる。この場合、再帰呼び出し
による積み上げ表示と、繰り返しの実行文中のモジュー
ル呼び出しによる積み上げ表示の表示とを、その表示属
性を異なるものにすることにより区別して表示すれば、
よりわかりやすくなる。例えば、図14(c)の図形1
31の縁の線の太さを変える、図形131で囲まれてい
る領域の色を変える、などの方法を取ることが出来る。
出しだけでなく、モジュール中に繰り返しの実行文を含
み、かつそのの中で下位のモジュールを繰り返し呼び出
しているときにも利用できる。この場合、再帰呼び出し
による積み上げ表示と、繰り返しの実行文中のモジュー
ル呼び出しによる積み上げ表示の表示とを、その表示属
性を異なるものにすることにより区別して表示すれば、
よりわかりやすくなる。例えば、図14(c)の図形1
31の縁の線の太さを変える、図形131で囲まれてい
る領域の色を変える、などの方法を取ることが出来る。
【0112】このような再帰呼び出しや動的呼び出しの
ような場合だけでなく、プログラム中で同一の下位モジ
ュールを複数回呼び出しているときも、その呼び出しご
とにモジュール構成図を拡張して表示することにより、
プログラムの動作の理解をより容易にすることができる
。例えば、図15(a)の関数combination
は、その中で同一の関数factorialを3回呼び
出している。同図(b)のように、モジュール構成図上
で各々の呼び出しごとに関数factorialの枝を
動的に拡張して表示してやれば良い。
ような場合だけでなく、プログラム中で同一の下位モジ
ュールを複数回呼び出しているときも、その呼び出しご
とにモジュール構成図を拡張して表示することにより、
プログラムの動作の理解をより容易にすることができる
。例えば、図15(a)の関数combination
は、その中で同一の関数factorialを3回呼び
出している。同図(b)のように、モジュール構成図上
で各々の呼び出しごとに関数factorialの枝を
動的に拡張して表示してやれば良い。
【0113】なお、図には示していないが、図14(b
)、(c)および図15(b)とも、プログラムの実行
履歴を保存しておくことにより、prevボタン等を用
いて、画面に表示されている実行状態の表示を一つ前の
状態に戻すようにすることもできる。
)、(c)および図15(b)とも、プログラムの実行
履歴を保存しておくことにより、prevボタン等を用
いて、画面に表示されている実行状態の表示を一つ前の
状態に戻すようにすることもできる。
【0114】また、拡張または積み重ね表示している部
分モジュール構成図を、その部分の実行が全て終わった
あと、消去することにより表示を見やすくすることも可
能である。
分モジュール構成図を、その部分の実行が全て終わった
あと、消去することにより表示を見やすくすることも可
能である。
【0115】さらに、モジュール構成図を単独で用いる
のでなく、前記の図式表現プログラムによる動作表示と
組合せて用いれば、プログラムの動作をより効果的に理
解できるようになる。
のでなく、前記の図式表現プログラムによる動作表示と
組合せて用いれば、プログラムの動作をより効果的に理
解できるようになる。
【0116】この場合にも、prevボタンによる実行
履歴遡及機能および実行終了部分の表示消去を、モジュ
ール構成図、図式表現プログラムそれぞれについて適用
できることは言うまでもない。
履歴遡及機能および実行終了部分の表示消去を、モジュ
ール構成図、図式表現プログラムそれぞれについて適用
できることは言うまでもない。
【0117】次に、プログラム動作表示の第7の例を、
図15、図16および図17を用いて説明する。
図15、図16および図17を用いて説明する。
【0118】通常、デバッグ等でプログラムの動作を監
視している場合に、以前の実行状態を再度調査したいと
きがある。先願(特願平1−092840および特願平
2−057923)では、このような要求に対する一つ
の解決策を示したが、これは、プログラムが複数のモジ
ュールからなるとき、モジュール構成図上でモジュール
単位に以前の実行状態(モジュール引数や戻り値、変数
の更新値等)のデータの検索を行い、それを表示するも
のであった。しかし、以前の実行状態のデータを単に表
示するだけでなく、本発明の前記した実施例に示したよ
うに、ソース・プログラムと重畳して表示することがで
きれば、それらのデータの理解が容易になることはたや
すく想像されることである。また、ソース・プログラム
への重畳表示を行うことにより、引数、戻り値や変数の
更新値だけでなく、プログラムの途中の処理状態もわか
りやすく表示できるので、効果が大きい。
視している場合に、以前の実行状態を再度調査したいと
きがある。先願(特願平1−092840および特願平
2−057923)では、このような要求に対する一つ
の解決策を示したが、これは、プログラムが複数のモジ
ュールからなるとき、モジュール構成図上でモジュール
単位に以前の実行状態(モジュール引数や戻り値、変数
の更新値等)のデータの検索を行い、それを表示するも
のであった。しかし、以前の実行状態のデータを単に表
示するだけでなく、本発明の前記した実施例に示したよ
うに、ソース・プログラムと重畳して表示することがで
きれば、それらのデータの理解が容易になることはたや
すく想像されることである。また、ソース・プログラム
への重畳表示を行うことにより、引数、戻り値や変数の
更新値だけでなく、プログラムの途中の処理状態もわか
りやすく表示できるので、効果が大きい。
【0119】図15に示すのは、n個の異なるものから
r個選んだときの組合せの種類の数を計算する関数の例
である。組合せの数はn!/(r!*(n−r)!)に
よって計算される。n!等の計算は前記した関数fac
torialによって計算できるので、組合せの数は、
これを組合せて計算することができる。図15(a)の
関数combinationは、これを実行する関数で
ある。
r個選んだときの組合せの種類の数を計算する関数の例
である。組合せの数はn!/(r!*(n−r)!)に
よって計算される。n!等の計算は前記した関数fac
torialによって計算できるので、組合せの数は、
これを組合せて計算することができる。図15(a)の
関数combinationは、これを実行する関数で
ある。
【0120】今、関数combinationに引数7
および5を与えて起動し、最後まで実行したとしよう。 図15(b)は、それまでの実行履歴を含めて示したモ
ジュール構成図である。図15(a)からわかるように
、関数combinationは、関数factori
alを3回呼び出している。そこで、前記の表示例(第
6の表示例)と同様な方法により、関数combina
tionの下に、それぞれの実行にあわせて関数fac
torialを3個表示している。
および5を与えて起動し、最後まで実行したとしよう。 図15(b)は、それまでの実行履歴を含めて示したモ
ジュール構成図である。図15(a)からわかるように
、関数combinationは、関数factori
alを3回呼び出している。そこで、前記の表示例(第
6の表示例)と同様な方法により、関数combina
tionの下に、それぞれの実行にあわせて関数fac
torialを3個表示している。
【0121】次に、以前の実行状態、具体的には図15
(b)のモジュール構成図で、関数factorial
の2回目の呼び出し(図の140)の途中状態を見たい
とする。このとき、まず、(b)のモジュール構成図の
140の位置をマウスでクリックすると、関数fact
orialのプログラムがその上に実行状況のデータを
載せた状態で表示される(図16)。関数factor
ialは繰り返しの形式doを含むので、その部分には
、各サイクルの繰り返しの実行状況をdoによる部分プ
ログラムに重畳表示したものを積み重ねて表示している
。
(b)のモジュール構成図で、関数factorial
の2回目の呼び出し(図の140)の途中状態を見たい
とする。このとき、まず、(b)のモジュール構成図の
140の位置をマウスでクリックすると、関数fact
orialのプログラムがその上に実行状況のデータを
載せた状態で表示される(図16)。関数factor
ialは繰り返しの形式doを含むので、その部分には
、各サイクルの繰り返しの実行状況をdoによる部分プ
ログラムに重畳表示したものを積み重ねて表示している
。
【0122】ここで、doの3回目の繰り返しの実行状
況をさらに詳しく見たいとしよう。doによる枠の積み
重ねの下から3番目にカーソルを当てマウスをクリック
すると、そのときの実行状況、すなわち繰り返しの3回
目が積み重ねの最上位に持ち上げられて表示される(図
17)。
況をさらに詳しく見たいとしよう。doによる枠の積み
重ねの下から3番目にカーソルを当てマウスをクリック
すると、そのときの実行状況、すなわち繰り返しの3回
目が積み重ねの最上位に持ち上げられて表示される(図
17)。
【0123】なお、本例では繰り返しの回数が数回程度
であるので、それぞれの繰り返しに対する図形は視覚的
に十分区別できる程度にずらして表示することができる
。したがって、その中の一つを選択するのはたやすいが
、数が多くなるとそれが困難になる。このような場合は
、繰り返しの積み重ね図形を、疑似的な立体図形(15
0)として表示することもできる(図18)。この場合
、この立体図形の高さが繰り返し回数を表わす。
であるので、それぞれの繰り返しに対する図形は視覚的
に十分区別できる程度にずらして表示することができる
。したがって、その中の一つを選択するのはたやすいが
、数が多くなるとそれが困難になる。このような場合は
、繰り返しの積み重ね図形を、疑似的な立体図形(15
0)として表示することもできる(図18)。この場合
、この立体図形の高さが繰り返し回数を表わす。
【0124】また、この立体図形を利用して、実行履歴
を検索するときは、次のようにすればよい。この立体図
形がマウス・カーソルにより選択されたとき、繰り返し
回数の相対位置を示すスケールバー(図18の151)
を表示する。そして、このスケールバー上で、求める繰
り返しの回数に比例した位置をカーソル(152)で指
定することにより、求める繰り返し回数に対応した実行
履歴を得ることが出来る。
を検索するときは、次のようにすればよい。この立体図
形がマウス・カーソルにより選択されたとき、繰り返し
回数の相対位置を示すスケールバー(図18の151)
を表示する。そして、このスケールバー上で、求める繰
り返しの回数に比例した位置をカーソル(152)で指
定することにより、求める繰り返し回数に対応した実行
履歴を得ることが出来る。
【0125】なお、上記立体図形による表示方法は、前
記図14(c)のモジュール構成図上での積み重ね表示
にも適用可能である。
記図14(c)のモジュール構成図上での積み重ね表示
にも適用可能である。
【0126】図16および図17では、検索したプログ
ラム上に関連する全ての実行履歴を重畳して表示した例
を示したが、全てを表示すると視覚的にわずらわしく、
また、ユーザが見たい部分を表示したプログラム上で探
すのに返って手間がかかる、ということもありえる。そ
こで、検索結果の表示はソース・プログラムだけとし、
その後ユーザの要求(関連箇所をマウスで指示)にした
がって、必要なデータ(実行履歴)を重畳表示するとい
う構成にすることも可能である。
ラム上に関連する全ての実行履歴を重畳して表示した例
を示したが、全てを表示すると視覚的にわずらわしく、
また、ユーザが見たい部分を表示したプログラム上で探
すのに返って手間がかかる、ということもありえる。そ
こで、検索結果の表示はソース・プログラムだけとし、
その後ユーザの要求(関連箇所をマウスで指示)にした
がって、必要なデータ(実行履歴)を重畳表示するとい
う構成にすることも可能である。
【0127】また、全ての実行履歴を記憶保存するため
にはメモリを多く必要とするので、あらかじめモジュー
ル構成図上で履歴を保存するモジュール、ないしはモジ
ュール内で履歴を保存するプログラム部分を指定する、
という構成にすることもできる。
にはメモリを多く必要とするので、あらかじめモジュー
ル構成図上で履歴を保存するモジュール、ないしはモジ
ュール内で履歴を保存するプログラム部分を指定する、
という構成にすることもできる。
【0128】本例では関数factorialを繰り返
しの形式によって実現していたが、これはまた再帰の形
式で記述することもできる。そのプログラムを図19に
示す。(a)が関数factorialのLISPプロ
グラム、(b)はその図式表現である。
しの形式によって実現していたが、これはまた再帰の形
式で記述することもできる。そのプログラムを図19に
示す。(a)が関数factorialのLISPプロ
グラム、(b)はその図式表現である。
【0129】関数factorialの再帰による定義
を用いて上記の関数combinationを同様に実
行すると、最後に得られるモジュール構成図は図20(
の上の図)のようになる。すなわち、図15(b)のモ
ジュール構成図で、それぞれの関数factorial
の再帰の回数分積み上げ表示がなされている。
を用いて上記の関数combinationを同様に実
行すると、最後に得られるモジュール構成図は図20(
の上の図)のようになる。すなわち、図15(b)のモ
ジュール構成図で、それぞれの関数factorial
の再帰の回数分積み上げ表示がなされている。
【0130】積み上げられたモジュールの一つを選択す
ると、そのモジュールのソース・プログラムに実行履歴
が重畳されたものが表示される(図20の下の図)。な
お、前記図14(c)の場合のように、複数のモジュー
ルがまとまったものが積み上げ表示されている場合は、
まず積み上げられたものの一つを選択して最上位に出し
、次に所望のモジュールを選択すれば良い。
ると、そのモジュールのソース・プログラムに実行履歴
が重畳されたものが表示される(図20の下の図)。な
お、前記図14(c)の場合のように、複数のモジュー
ルがまとまったものが積み上げ表示されている場合は、
まず積み上げられたものの一つを選択して最上位に出し
、次に所望のモジュールを選択すれば良い。
【0131】なお、図15(b)や図20のモジュール
構成図で、表示されているモジュールの一つを選択した
とき、そのソース・プログラムを表示するのではなく、
そのモジュールが呼ばれたときの引数および戻り値のみ
を表示する構成にすることも可能である。実際のデバッ
グ時には、これで十分な場合も多い。
構成図で、表示されているモジュールの一つを選択した
とき、そのソース・プログラムを表示するのではなく、
そのモジュールが呼ばれたときの引数および戻り値のみ
を表示する構成にすることも可能である。実際のデバッ
グ時には、これで十分な場合も多い。
【0132】以上のプログラム動作表示方法は、プログ
ラムを実行時におけるエラー表示においても有用である
。
ラムを実行時におけるエラー表示においても有用である
。
【0133】通常、プログラムをデバッグしているとき
エラーが発生すると、その発生場所(該当モジュールお
よびモジュール内での位置)を調べ、関連するデータの
値を見たりする。これを支援する方法、すなわちエラー
発生モジュールのモジュール構成図での位置および該当
モジュール内でのエラー発生場所の表示、ならびに関連
データ(モジュールの引数・変数の値など)を表示する
方法を、先願(特願平1−092840)で示した。し
かし、この場合も、これまで説明した例と同様に、該当
モジュールのソースプログラム上に関連データを重畳し
て表示することができれば、エラーの状況等がさらに理
解しやすくなることは容易に想像できる。また、ブレー
ク・ポイント(プログラム実行の中断点)を設定してプ
ログラムを走らせているときに、指定したブレーク・ポ
イントに達したら、同様にして、そのブレーク・ポイン
トを含むモジュールのソース・プログラムを実行履歴デ
ータとともに表示すれば、デバッグがやりやすくなるこ
とも容易に理解できよう。以上、本発明によるプログラ
ム動作表示方法のさまざまな例について説明した。次に
、これらの表示を具体的に実現する方法について述べる
。
エラーが発生すると、その発生場所(該当モジュールお
よびモジュール内での位置)を調べ、関連するデータの
値を見たりする。これを支援する方法、すなわちエラー
発生モジュールのモジュール構成図での位置および該当
モジュール内でのエラー発生場所の表示、ならびに関連
データ(モジュールの引数・変数の値など)を表示する
方法を、先願(特願平1−092840)で示した。し
かし、この場合も、これまで説明した例と同様に、該当
モジュールのソースプログラム上に関連データを重畳し
て表示することができれば、エラーの状況等がさらに理
解しやすくなることは容易に想像できる。また、ブレー
ク・ポイント(プログラム実行の中断点)を設定してプ
ログラムを走らせているときに、指定したブレーク・ポ
イントに達したら、同様にして、そのブレーク・ポイン
トを含むモジュールのソース・プログラムを実行履歴デ
ータとともに表示すれば、デバッグがやりやすくなるこ
とも容易に理解できよう。以上、本発明によるプログラ
ム動作表示方法のさまざまな例について説明した。次に
、これらの表示を具体的に実現する方法について述べる
。
【0134】図21は、システムの各種表示ないし実行
モードを制御するフラッグ(ソフトウェアの変数)およ
び実行中の状態データを保持する変数ののリストである
。
モードを制御するフラッグ(ソフトウェアの変数)およ
び実行中の状態データを保持する変数ののリストである
。
【0135】同図160の「実行履歴取得フラッグ」は
、プログラムの実行中にその一つずつのステップの実行
履歴を取得(保存)するか否かを制御するフラッグであ
る。このフラッグがONのとき、全ての実行履歴を保存
する。また、OFFのときは何も保存しない。また、フ
ラッグが限定取得モードに設定されているときは、後述
の実行履歴取得対象指定コマンドで指定されている対象
のみの実行履歴を取得(保存)する。
、プログラムの実行中にその一つずつのステップの実行
履歴を取得(保存)するか否かを制御するフラッグであ
る。このフラッグがONのとき、全ての実行履歴を保存
する。また、OFFのときは何も保存しない。また、フ
ラッグが限定取得モードに設定されているときは、後述
の実行履歴取得対象指定コマンドで指定されている対象
のみの実行履歴を取得(保存)する。
【0136】「終了時動作表示消去フラッグ」161は
、各ステップでの関数の実行が終了するごとに、関係の
ないデータの表示を残すか否かを制御するフラッグであ
る。このフラッグがONのとき、実行終了部分のデータ
の表示を消去する(図6の表示例参照)。OFFのとき
は、実行が終了しても、画面に表示されている動作表示
のデータを全てそのまま残す。
、各ステップでの関数の実行が終了するごとに、関係の
ないデータの表示を残すか否かを制御するフラッグであ
る。このフラッグがONのとき、実行終了部分のデータ
の表示を消去する(図6の表示例参照)。OFFのとき
は、実行が終了しても、画面に表示されている動作表示
のデータを全てそのまま残す。
【0137】「実行状態識別表示フラッグ」162は、
画面に表示する実行単位の実行中、実行済み、実行保留
の識別表示を行うか否かを制御する。このフラッグがO
Nのとき、実行中、実行済み、実行保留の識別表示を行
い(図7の表示例参照)、OFFのときは、実行中の実
行単位のみの識別表示を行う。
画面に表示する実行単位の実行中、実行済み、実行保留
の識別表示を行うか否かを制御する。このフラッグがO
Nのとき、実行中、実行済み、実行保留の識別表示を行
い(図7の表示例参照)、OFFのときは、実行中の実
行単位のみの識別表示を行う。
【0138】「埋め込み展開表示フラッグ」163は、
プログラムの実行動作表示中、べつのプログラムの呼び
出しがなされたとき、そのプログラムを呼出し側のソー
ス・プログラムの呼び出し位置に展開表示するか否かを
決定するフラッグである。このフラッグがONのときは
展開表示し(図13の表示例参照)、OFFのときは展
開表示せず、呼び出されたプログラムを別途表示して動
作表示を続行する。
プログラムの実行動作表示中、べつのプログラムの呼び
出しがなされたとき、そのプログラムを呼出し側のソー
ス・プログラムの呼び出し位置に展開表示するか否かを
決定するフラッグである。このフラッグがONのときは
展開表示し(図13の表示例参照)、OFFのときは展
開表示せず、呼び出されたプログラムを別途表示して動
作表示を続行する。
【0139】「再帰表示モード・フラッグ」164は、
動作表示中のプログラムに直接または間接的な再帰呼び
出しがあるとき、そのモジュール構成図上での動作表示
を、関係する部分モジュール構成図の積み重ねで行うか
、下位方向への延長で行うかを決定するフラッグである
。このフラッグが積み重ね表示モードのときは積み重ね
形式で表示し、延長表示モードのときは下位方向へ延長
して表示する(図14の表示例参照)。
動作表示中のプログラムに直接または間接的な再帰呼び
出しがあるとき、そのモジュール構成図上での動作表示
を、関係する部分モジュール構成図の積み重ねで行うか
、下位方向への延長で行うかを決定するフラッグである
。このフラッグが積み重ね表示モードのときは積み重ね
形式で表示し、延長表示モードのときは下位方向へ延長
して表示する(図14の表示例参照)。
【0140】「最後に実行した実行単位」165は、n
extボタンやgoボタンを用いたユーザの指示により
、実行制御プログラム8がそれまでに実行した実行単位
の最後の実行単位を記憶する。具体的には、その実行単
位が存在するメモリ・アドレスのポインタが格納される
。実行が途中で止まっていて、次にnextボタンもし
くはgoボタンがクリックされると、この「最後に実行
した実行単位」を参照し、その次の実行単位から実行が
開始される。
extボタンやgoボタンを用いたユーザの指示により
、実行制御プログラム8がそれまでに実行した実行単位
の最後の実行単位を記憶する。具体的には、その実行単
位が存在するメモリ・アドレスのポインタが格納される
。実行が途中で止まっていて、次にnextボタンもし
くはgoボタンがクリックされると、この「最後に実行
した実行単位」を参照し、その次の実行単位から実行が
開始される。
【0141】「現在注目している実行単位」165は、
実行履歴の検索などで現在注目している(すなわち画面
上に表示している)実行単位が上記「最後に実行した実
行単位」と異なるとき、その実行単位が存在するアドレ
スのポインタが格納される。図22および図23は、図
2の入力解釈・全体制御プログラム11の処理フローを
示すPAD図である。
実行履歴の検索などで現在注目している(すなわち画面
上に表示している)実行単位が上記「最後に実行した実
行単位」と異なるとき、その実行単位が存在するアドレ
スのポインタが格納される。図22および図23は、図
2の入力解釈・全体制御プログラム11の処理フローを
示すPAD図である。
【0142】ステップ200で、ユーザが対話入力ウィ
ンドウ20から関数起動のコマンドを入力すると、まず
、ステップ201で、モジュール構成図生成プログラム
6に指令を出して、指定した関数をトップとするモジュ
ール構成図を作成し、図1の21のウィンドウに表示す
る。同時に、ステップ202で、文字表現から図式表現
への変換プログラム2に指令を出して、指定した関数の
定義を記述したソース・プログラム(の図式表現)を、
図1のソース・プログラム・ウィンドウ22に表示する
。その後ステップ203で、ユーザ入力待ちとなる。
ンドウ20から関数起動のコマンドを入力すると、まず
、ステップ201で、モジュール構成図生成プログラム
6に指令を出して、指定した関数をトップとするモジュ
ール構成図を作成し、図1の21のウィンドウに表示す
る。同時に、ステップ202で、文字表現から図式表現
への変換プログラム2に指令を出して、指定した関数の
定義を記述したソース・プログラム(の図式表現)を、
図1のソース・プログラム・ウィンドウ22に表示する
。その後ステップ203で、ユーザ入力待ちとなる。
【0143】モジュール構成図生成プログラム6の処理
、すなわちモジュール構成図の作成方法は次のとおりで
ある。まず、プログラムを構成する各モジュールを解析
して、その中でユーザ定義の関数呼び出し(または、サ
ブルーチン呼び出し、マクロ呼出し等)を抽出し、各々
の呼び出し関係を示す木構造状のデータを作成する。 次に、このデータをもとにディスプレイ画面上に実際の
モジュール構成図を表示する。ここで、前半の処理は図
2のモジュール構成図生成プログラム6で実施され、後
半の処理は同図の表示制御プログラム4で行われる。
、すなわちモジュール構成図の作成方法は次のとおりで
ある。まず、プログラムを構成する各モジュールを解析
して、その中でユーザ定義の関数呼び出し(または、サ
ブルーチン呼び出し、マクロ呼出し等)を抽出し、各々
の呼び出し関係を示す木構造状のデータを作成する。 次に、このデータをもとにディスプレイ画面上に実際の
モジュール構成図を表示する。ここで、前半の処理は図
2のモジュール構成図生成プログラム6で実施され、後
半の処理は同図の表示制御プログラム4で行われる。
【0144】図24は、上記手順により作成されたモジ
ュール構成図の内部表現データ(図2の7)のデータ構
造の例である。これは、前記の関数combinati
onによる例である。これは、各モジュールに関する情
報を単位とする木構造形式のリスト構造を構成している
。
ュール構成図の内部表現データ(図2の7)のデータ構
造の例である。これは、前記の関数combinati
onによる例である。これは、各モジュールに関する情
報を単位とする木構造形式のリスト構造を構成している
。
【0145】図で240および241は、一つの関数モ
ジュールを表わすためのデータである(以下これをモジ
ュール・セルと呼ぶ)。モジュール・セルは、「モジュ
ール名」、「位置」、「サイズ」、「モジュール定義」
、「下位モジュール群」、「拡張」、「実行状態」など
のスロットからなっている。
ジュールを表わすためのデータである(以下これをモジ
ュール・セルと呼ぶ)。モジュール・セルは、「モジュ
ール名」、「位置」、「サイズ」、「モジュール定義」
、「下位モジュール群」、「拡張」、「実行状態」など
のスロットからなっている。
【0146】「モジュール定義」のスロットには、その
具体的定義のデータ、すなわち後述の図22に示すよう
なデータがつながれる。「下位モジュール群」スロット
には、その下に続くモジュール・セルが接続されている
。下位モジュールは(下位モジュール群というごとく)
一般に複数のセルからなる。図24の242は、複数の
セルをつなげて一つにまとめるためのデータである。
具体的定義のデータ、すなわち後述の図22に示すよう
なデータがつながれる。「下位モジュール群」スロット
には、その下に続くモジュール・セルが接続されている
。下位モジュールは(下位モジュール群というごとく)
一般に複数のセルからなる。図24の242は、複数の
セルをつなげて一つにまとめるためのデータである。
【0147】「位置」、「サイズ」のスロットは、モジ
ュール構成図上で、該当モジュール名を表示する位置、
ならびにそのモジュール名の表示サイズ(占有サイズ)
のデータを保持する。
ュール構成図上で、該当モジュール名を表示する位置、
ならびにそのモジュール名の表示サイズ(占有サイズ)
のデータを保持する。
【0148】「拡張」および「実行状態」のスロットは
、後述するプログラムの動作表示ならびに実行履歴の保
存に使用される。
、後述するプログラムの動作表示ならびに実行履歴の保
存に使用される。
【0149】本図は、プログラムを実行しない状態での
モジュール構成図のデータであるので、図15(b)の
場合と違い、関数モジュールcombinationの
下には、一つの関数モジュールfactorialが接
続されているのみである。また、本図は非常に簡単な場
合の例であって、実際の場合には多数のモジュールの複
雑な階層構成からなる木構造を構成する。
モジュール構成図のデータであるので、図15(b)の
場合と違い、関数モジュールcombinationの
下には、一つの関数モジュールfactorialが接
続されているのみである。また、本図は非常に簡単な場
合の例であって、実際の場合には多数のモジュールの複
雑な階層構成からなる木構造を構成する。
【0150】次に、図式表現によるソース・プログラム
の表示(図22ステップ202)について説明する。
の表示(図22ステップ202)について説明する。
【0151】詳細は先願(特願平2−056360)に
述べているので、ここでは細かい手順は省略するが、簡
単にいうと、まず、文字表現によるソース・プログラム
(図2の1)を解析し、図22に示すデータ構造(図2
の3に相当)を作成する。次に、このデータをもとにデ
ィスプレイ画面上に実際の図式表現プログラムを表示す
る。ここで、前半の処理は図2の文字表現から図式表現
への変換プログラム2で実施され、後半の処理は同図の
表示制御プログラム4で実施される。
述べているので、ここでは細かい手順は省略するが、簡
単にいうと、まず、文字表現によるソース・プログラム
(図2の1)を解析し、図22に示すデータ構造(図2
の3に相当)を作成する。次に、このデータをもとにデ
ィスプレイ画面上に実際の図式表現プログラムを表示す
る。ここで、前半の処理は図2の文字表現から図式表現
への変換プログラム2で実施され、後半の処理は同図の
表示制御プログラム4で実施される。
【0152】図22は、図8に示した関数factor
ialの図式表現に対応する内部表現データの一部を示
したものである。170〜178は、それぞれ図8のd
efun、defunの引数n、do、doの制御変数
i、その初期値1、そのステップ値を与える関数1+、
同じくdoの制御変数result、doの終了判定を
行う関数>、doの本体の特殊関数setqの各図形に
対応する内部データ表現(以下セルと呼ぶ)である。
ialの図式表現に対応する内部表現データの一部を示
したものである。170〜178は、それぞれ図8のd
efun、defunの引数n、do、doの制御変数
i、その初期値1、そのステップ値を与える関数1+、
同じくdoの制御変数result、doの終了判定を
行う関数>、doの本体の特殊関数setqの各図形に
対応する内部データ表現(以下セルと呼ぶ)である。
【0153】各セルは共通に「分類」、「位置」、およ
び「サイズ」のスロットを持つ。
び「サイズ」のスロットを持つ。
【0154】「位置」、「サイズ」のスロットは、その
セルによって現される図形が画面上で表示される位置、
およびサイズの情報、具体的には2次元の座標値および
寸法値を保持する。
セルによって現される図形が画面上で表示される位置、
およびサイズの情報、具体的には2次元の座標値および
寸法値を保持する。
【0155】「分類」スロットは、セルのタイプを示す
もので、ここに入れられている名称によって、そのセル
が持つ属性スロットの種類およびセルが果たす役割が決
定される。図のdefun(170)、do(172)
、setq(178)等のセルは、システムであらかじ
め決められている特殊な機能を果たす関数に対応する。 関数、変数および定数のセルは、一般の関数、変数およ
び定数に対応するものである。
もので、ここに入れられている名称によって、そのセル
が持つ属性スロットの種類およびセルが果たす役割が決
定される。図のdefun(170)、do(172)
、setq(178)等のセルは、システムであらかじ
め決められている特殊な機能を果たす関数に対応する。 関数、変数および定数のセルは、一般の関数、変数およ
び定数に対応するものである。
【0156】各セルは、その分類名、すなわちセルのタ
イプによって特有のスロットを持つ。例えば、doのセ
ル(172)には、「変数リスト」、「終了判定」、「
結果」、「本体」などの固有スロットがある。これらは
doの機能に対応するもので、それぞれの図形表現に対
応する図形のセルのポインタを保持している。
イプによって特有のスロットを持つ。例えば、doのセ
ル(172)には、「変数リスト」、「終了判定」、「
結果」、「本体」などの固有スロットがある。これらは
doの機能に対応するもので、それぞれの図形表現に対
応する図形のセルのポインタを保持している。
【0157】定数のセル以外のセルはまた、「実行履歴
取得」、「値」、「次」、「前」および「実行状態」の
スロットを持っている(定数のセルも「値」スロットを
持っているが、これはセルの生成時に固定値が入り、後
での変更は出来ない)。前の四つは後述する実行履歴の
取得(保存)機能に関するもの、あとの一つ(「実行状
態」)は動作表示に関するものである。また、doのセ
ル(172)は、「次の繰り返し」スロットを持ってい
る。これも実行履歴取得に関連するスロットである。
取得」、「値」、「次」、「前」および「実行状態」の
スロットを持っている(定数のセルも「値」スロットを
持っているが、これはセルの生成時に固定値が入り、後
での変更は出来ない)。前の四つは後述する実行履歴の
取得(保存)機能に関するもの、あとの一つ(「実行状
態」)は動作表示に関するものである。また、doのセ
ル(172)は、「次の繰り返し」スロットを持ってい
る。これも実行履歴取得に関連するスロットである。
【0158】図22の180〜184は、図24の24
2と同様に、複数の要素をまとめて一つの値とする可能
性があるスロットがあるとき、それらをつなげて一つに
まとめるために用いられている。
2と同様に、複数の要素をまとめて一つの値とする可能
性があるスロットがあるとき、それらをつなげて一つに
まとめるために用いられている。
【0159】図22のステップ203でユーザ入力、す
なわち、図1のモジュール構成図またはソース・プログ
ラム表示ウィンドウ上での対象指定、図1のボタン23
のマウス・クリック、または図3のコマンドメニューの
一つのコマンドの選択がなされたならば、次にステップ
204に進み、それが何であるかを解釈・判定し、対応
する処理を行う。
なわち、図1のモジュール構成図またはソース・プログ
ラム表示ウィンドウ上での対象指定、図1のボタン23
のマウス・クリック、または図3のコマンドメニューの
一つのコマンドの選択がなされたならば、次にステップ
204に進み、それが何であるかを解釈・判定し、対応
する処理を行う。
【0160】入力がnextボタンならばステップ20
5に進み、nextボタンの処理を行う。処理の詳細は
後述する。
5に進み、nextボタンの処理を行う。処理の詳細は
後述する。
【0161】入力がgoボタンならばステップ206に
進み、goボタンの処理を行う。処理の詳細は後述する
。
進み、goボタンの処理を行う。処理の詳細は後述する
。
【0162】入力がprevボタンならばステップ20
7に進み、prevボタンの処理を行う。処理の詳細は
後述する。
7に進み、prevボタンの処理を行う。処理の詳細は
後述する。
【0163】入力がlastボタンならばステップ20
8に進み、lastボタンの処理を行う。処理の詳細は
後述する。
8に進み、lastボタンの処理を行う。処理の詳細は
後述する。
【0164】入力が実行履歴取得ONコマンドならばス
テップ209に進み、「実行履歴取得フラッグ」(図2
1の160)をONにする。また、実行履歴取得OFF
コマンドならばステップ210に進み、同フラッグをO
FFにする。実行履歴限定取得モード・コマンドならば
ステップ211に進み、同フラッグを限定取得モードに
する。
テップ209に進み、「実行履歴取得フラッグ」(図2
1の160)をONにする。また、実行履歴取得OFF
コマンドならばステップ210に進み、同フラッグをO
FFにする。実行履歴限定取得モード・コマンドならば
ステップ211に進み、同フラッグを限定取得モードに
する。
【0165】入力が終了時動作表示消去ONコマンドな
らばステップ212に進み、「終了時動作表示消去フラ
ッグ」(図21の161)をONにする。また、終了時
動作表示消去OFFコマンドならばステップ213に進
み、同フラッグをOFFにする。
らばステップ212に進み、「終了時動作表示消去フラ
ッグ」(図21の161)をONにする。また、終了時
動作表示消去OFFコマンドならばステップ213に進
み、同フラッグをOFFにする。
【0166】入力が実行状態識別表示ONコマンドなら
ばステップ214(以下図23)に進み、「実行状態識
別表示フラッグ」(図21の162)をONにする。ま
た、実行状態識別表示OFFコマンドならばステップ2
15に進み、同フラッグをOFFにする。
ばステップ214(以下図23)に進み、「実行状態識
別表示フラッグ」(図21の162)をONにする。ま
た、実行状態識別表示OFFコマンドならばステップ2
15に進み、同フラッグをOFFにする。
【0167】入力が埋め込み展開表示ONコマンドなら
ばステップ216に進み、「埋め込み展開表示フラッグ
」(図21の163)をONにする。また、埋め込み展
開表示OFFコマンドならばステップ217に進み、同
フラッグをOFFにする。
ばステップ216に進み、「埋め込み展開表示フラッグ
」(図21の163)をONにする。また、埋め込み展
開表示OFFコマンドならばステップ217に進み、同
フラッグをOFFにする。
【0168】入力が再帰積み重ね表示モード・コマンド
ならばステップ218に進み、「再帰表示モード・フラ
ッグ」(図21の164)を積み重ね表示モードにする
。また、再帰延長表示モード・コマンドならばステップ
219に進み、同フラッグを延長表示モードにする。
ならばステップ218に進み、「再帰表示モード・フラ
ッグ」(図21の164)を積み重ね表示モードにする
。また、再帰延長表示モード・コマンドならばステップ
219に進み、同フラッグを延長表示モードにする。
【0169】入力がマウス・カーソルによる対象指定な
らばステップ220に進み、表示されているソース・プ
ログラムまたはモジュール構成図上のカーソルが指示し
ている表示対象を反転表示する。また、その表示対象を
被指定対象として記憶する。入力がブレーク・ポイント
設定コマンドならばステップ221に進み、ソース・プ
ログラムまたはモジュール構成図上で上記の対象指定コ
マンドにより指定されている対象位置をブレーク・ポイ
ントとして設定登録する。このとき対象指定がなされて
いなければ何もしない。
らばステップ220に進み、表示されているソース・プ
ログラムまたはモジュール構成図上のカーソルが指示し
ている表示対象を反転表示する。また、その表示対象を
被指定対象として記憶する。入力がブレーク・ポイント
設定コマンドならばステップ221に進み、ソース・プ
ログラムまたはモジュール構成図上で上記の対象指定コ
マンドにより指定されている対象位置をブレーク・ポイ
ントとして設定登録する。このとき対象指定がなされて
いなければ何もしない。
【0170】入力がブレーク・ポイント解除コマンドな
らばステップ222に進み、ソース・プログラムまたは
モジュール構成図上で上記の対象指定コマンドにより指
定されている対象位置のをブレーク・ポイントを解除す
る。このとき対象指定がなされていなければ何もしない
。また、その対象がブレーク・ポイントとして設定され
ていない場合も何もしない。
らばステップ222に進み、ソース・プログラムまたは
モジュール構成図上で上記の対象指定コマンドにより指
定されている対象位置のをブレーク・ポイントを解除す
る。このとき対象指定がなされていなければ何もしない
。また、その対象がブレーク・ポイントとして設定され
ていない場合も何もしない。
【0171】入力が履歴取得対象指定コマンドならばス
テップ223に進み、既に対象指定されている対象の「
実行履歴取得」のスロットをONにする。ただしこのと
き、あらかじめ対象指定がなされていないときは何もし
ない。また、履歴取得対象解除コマンドならばステップ
224に進み、同スロットのフラッグをOFFにする。 このときも、対象指定がなされていないときは何もしな
い。
テップ223に進み、既に対象指定されている対象の「
実行履歴取得」のスロットをONにする。ただしこのと
き、あらかじめ対象指定がなされていないときは何もし
ない。また、履歴取得対象解除コマンドならばステップ
224に進み、同スロットのフラッグをOFFにする。 このときも、対象指定がなされていないときは何もしな
い。
【0172】入力が実行履歴検索コマンドならばステッ
プ225に進み、指定対象の実行履歴を検索・表示する
。ただしこのとき、対象指定がなされていなければ何も
しない。実行履歴検索表示処理の詳細は後述する。
プ225に進み、指定対象の実行履歴を検索・表示する
。ただしこのとき、対象指定がなされていなければ何も
しない。実行履歴検索表示処理の詳細は後述する。
【0173】以上の入力に対する処理が終わると、図2
2のステップ203へ飛び、再度入力待ちになる(ステ
ップ226)。
2のステップ203へ飛び、再度入力待ちになる(ステ
ップ226)。
【0174】次に、前記のnextボタン、goボタン
、prevボタン、lastボタンの処理について、よ
り詳細に説明する。
、prevボタン、lastボタンの処理について、よ
り詳細に説明する。
【0175】nextボタンの処理のフローを図26に
示す。
示す。
【0176】まず、ステップ300で、現在画面上に表
示されているモジュール構成図およびソース・プログラ
ムによる実行動作表示は、nextボタン、goボタン
等により最後に実行した実行単位による実行結果を表示
した状態にあるか否かを判定する。これは、nextボ
タンを、新たな実行の開始、および実行履歴検索におけ
る次のステップの実行履歴の表示、の二種類の意味で使
用できるようにしているためである。この判定は、図1
9の165「最後に実行した実行単位」と166「現在
注目している実行単位」を比較することにより行う。
示されているモジュール構成図およびソース・プログラ
ムによる実行動作表示は、nextボタン、goボタン
等により最後に実行した実行単位による実行結果を表示
した状態にあるか否かを判定する。これは、nextボ
タンを、新たな実行の開始、および実行履歴検索におけ
る次のステップの実行履歴の表示、の二種類の意味で使
用できるようにしているためである。この判定は、図1
9の165「最後に実行した実行単位」と166「現在
注目している実行単位」を比較することにより行う。
【0177】画面表示が最後に実行した状態にあれば(
ステップ300でYESの判定)、ステップ301に進
み、実行制御プログラム8に指令を発し、図式表現プロ
グラムを1ステップ解釈実行し、ステップ302でその
実行結果をモジュール構成図のウィンドウ21およびソ
ース・プログラムのウィンドウ22に反映する。また、
実行を終了した実行単位のハッチング表示(ハッチング
表示は、次に実行する実行単位を示す)を解除し、新た
に次に実行する実行単位にハッチングを付ける。
ステップ300でYESの判定)、ステップ301に進
み、実行制御プログラム8に指令を発し、図式表現プロ
グラムを1ステップ解釈実行し、ステップ302でその
実行結果をモジュール構成図のウィンドウ21およびソ
ース・プログラムのウィンドウ22に反映する。また、
実行を終了した実行単位のハッチング表示(ハッチング
表示は、次に実行する実行単位を示す)を解除し、新た
に次に実行する実行単位にハッチングを付ける。
【0178】その後ステップ303で、前記の「実行履
歴取得フラッグ」がONになっているか、あるいは「実
行履歴取得フラッグ」が限定取得モードで、次に実行す
る実行単位の「実行履歴取得」のスロットがONになっ
ているかを判定する。条件が成立していれば、ステップ
304に進み、実行履歴取得プログラム9に依頼し、実
行単位の実行結果の値(関数等の戻り値)を、その実行
単位の該当するセル(図25参照)の「値」スロットに
書き込む。また、このとき同時に、同セルの「前」スロ
ットに、直前に実行した実行単位のセルをつなげる。ま
た、そのセルの「次」スロットに現在の実行単位のセル
をつなげ、あとで実行履歴の検索が行なわれたとき、実
行履歴を前後どちらの方向にもたどれるようにする。
歴取得フラッグ」がONになっているか、あるいは「実
行履歴取得フラッグ」が限定取得モードで、次に実行す
る実行単位の「実行履歴取得」のスロットがONになっ
ているかを判定する。条件が成立していれば、ステップ
304に進み、実行履歴取得プログラム9に依頼し、実
行単位の実行結果の値(関数等の戻り値)を、その実行
単位の該当するセル(図25参照)の「値」スロットに
書き込む。また、このとき同時に、同セルの「前」スロ
ットに、直前に実行した実行単位のセルをつなげる。ま
た、そのセルの「次」スロットに現在の実行単位のセル
をつなげ、あとで実行履歴の検索が行なわれたとき、実
行履歴を前後どちらの方向にもたどれるようにする。
【0179】ところで、上記で実行した実行単位が以下
の各種の状況にあるとき、それぞれ対応する処理を追加
して行なう。
の各種の状況にあるとき、それぞれ対応する処理を追加
して行なう。
【0180】まず、前記do等による繰り返し記述中の
最後の実行単位であるとき。
最後の実行単位であるとき。
【0181】この場合、次に実行するのは繰り返しの先
頭に戻りその最初の実行単位である。一方、図9に示し
た表示例では、繰り返しの動作をわかりやすく表示する
ために、繰り返しの枠およびそれに含まれる部分プログ
ラムを同位置で積み重ねて表示をしている。そこで、こ
の繰り返しの先頭に戻るタイミングで、繰り返しを示す
部分プログラムを新たに一つ同位置に積み重ねて表示す
る。また、同時に、前記の「実行履歴取得フラッグ」が
ONになっているか、またはこの繰り返しに対応するセ
ルの「実行履歴取得」のスロットがONになってるとき
、この繰り返しのセルとその下位につながっている子孫
のセルのコピーを作り、この繰り返しのセルの「次の繰
り返し」スロットにつなげる。この様子を、図27に示
す。
頭に戻りその最初の実行単位である。一方、図9に示し
た表示例では、繰り返しの動作をわかりやすく表示する
ために、繰り返しの枠およびそれに含まれる部分プログ
ラムを同位置で積み重ねて表示をしている。そこで、こ
の繰り返しの先頭に戻るタイミングで、繰り返しを示す
部分プログラムを新たに一つ同位置に積み重ねて表示す
る。また、同時に、前記の「実行履歴取得フラッグ」が
ONになっているか、またはこの繰り返しに対応するセ
ルの「実行履歴取得」のスロットがONになってるとき
、この繰り返しのセルとその下位につながっている子孫
のセルのコピーを作り、この繰り返しのセルの「次の繰
り返し」スロットにつなげる。この様子を、図27に示
す。
【0182】これは、図9のプログラム動作表示例に対
応する内部表現データを示したものである。図面の都合
上3個のdoのセルしか示していないが、実際は5個の
doのセルがあるつもりである。それぞれのdoのセル
が、図9で積み重ねて表現したのdoの繰り返しのプロ
グラム図式表現に対応している。
応する内部表現データを示したものである。図面の都合
上3個のdoのセルしか示していないが、実際は5個の
doのセルがあるつもりである。それぞれのdoのセル
が、図9で積み重ねて表現したのdoの繰り返しのプロ
グラム図式表現に対応している。
【0183】次に、実行した実行単位がユーザ関数の呼
び出しであり、このとき、前記「埋め込み展開表示フラ
ッグ」がONになっていれば、本関数に対応するセルの
「展開」スロットに、呼ばれているユーザ関数の関数定
義を示す図式表現に対応するセルのツリーをつなげ、全
体を再表示する。これによって、図13(c)に示した
ような表示が得られる。同図に対応するセル・ツリーす
なわち内部表現データ(の部分)を、図28に示す。
び出しであり、このとき、前記「埋め込み展開表示フラ
ッグ」がONになっていれば、本関数に対応するセルの
「展開」スロットに、呼ばれているユーザ関数の関数定
義を示す図式表現に対応するセルのツリーをつなげ、全
体を再表示する。これによって、図13(c)に示した
ような表示が得られる。同図に対応するセル・ツリーす
なわち内部表現データ(の部分)を、図28に示す。
【0184】図28で、関数barのセル190の「展
開」スロットに、関数barの定義に対応する図式表現
のセル・ツリー(セル191以下)がつながれている。
開」スロットに、関数barの定義に対応する図式表現
のセル・ツリー(セル191以下)がつながれている。
【0185】ここで注意すべきは、セル・ツリー上にこ
の関数呼び出しに対応するセル(190)は残されてい
るが、画面上にはこのセルに対応する図形は表示されず
、このセルの「展開」スロットにつながれているセル(
191以下)によって現される図形が表示されるという
ことである。なお、呼び出されているユーザ関数の処理
がすべて終わって、制御が呼び出し側のセルに戻ってき
たときは、「展開」スロットからユーザ関数の関数定義
のセル・ツリーを外し、再表示を行なう。この時は、当
然、呼び出されている関数定義の図式表現に代わって、
元の関数呼び出しの図形が復活する。
の関数呼び出しに対応するセル(190)は残されてい
るが、画面上にはこのセルに対応する図形は表示されず
、このセルの「展開」スロットにつながれているセル(
191以下)によって現される図形が表示されるという
ことである。なお、呼び出されているユーザ関数の処理
がすべて終わって、制御が呼び出し側のセルに戻ってき
たときは、「展開」スロットからユーザ関数の関数定義
のセル・ツリーを外し、再表示を行なう。この時は、当
然、呼び出されている関数定義の図式表現に代わって、
元の関数呼び出しの図形が復活する。
【0186】なお、この関数呼び出しの実行、もしくは
呼び出された関数の処理の終了の実行に伴い、モジュー
ル構成図上の表示、すなわち、実行中を示す関数のハッ
チング表示を解除し、呼び出された関数に新たにハッチ
ングを施す。
呼び出された関数の処理の終了の実行に伴い、モジュー
ル構成図上の表示、すなわち、実行中を示す関数のハッ
チング表示を解除し、呼び出された関数に新たにハッチ
ングを施す。
【0187】この外、図式表現プログラムによる動作表
示については、図10で説明した条件分岐の動作表示や
、図11および図12で説明したLISP言語特有の関
数mapcarの動作表示などがあるが、これらはこれ
まで説明してきた方法と類似の方法を用いることにより
、容易に実現可能である。
示については、図10で説明した条件分岐の動作表示や
、図11および図12で説明したLISP言語特有の関
数mapcarの動作表示などがあるが、これらはこれ
まで説明してきた方法と類似の方法を用いることにより
、容易に実現可能である。
【0188】モジュール構成図の表示に関しては、その
関数呼び出しが直接または間接的な再帰呼び出しである
ときは、さらに次の処理を行なう。なお、再帰呼び出し
であるかどうかは次の手順で判定可能である。プログラ
ム実行中、上位から順に下位のプログラムを呼び出すと
き、それぞれのプログラム名を保存しておく。そして、
新たに呼び出したプログラムの名称が、この保存してい
るプログラム名のリストにある場合、それは再帰呼び出
しである。
関数呼び出しが直接または間接的な再帰呼び出しである
ときは、さらに次の処理を行なう。なお、再帰呼び出し
であるかどうかは次の手順で判定可能である。プログラ
ム実行中、上位から順に下位のプログラムを呼び出すと
き、それぞれのプログラム名を保存しておく。そして、
新たに呼び出したプログラムの名称が、この保存してい
るプログラム名のリストにある場合、それは再帰呼び出
しである。
【0189】再帰呼び出しがあったとき、まず「再帰表
示モード・フラッグ」を調べる。同フラッグが積み重ね
モードであるときは、図14(c)に示したような積み
重ね表示を行なう。図14で言えば、同図(a)でモジ
ュールDを実行中、モジュールBの呼び出しが行なわれ
たとき、同図(c)のようにモジュールB以下の部分モ
ジュール構成図を、同位置で重ねて表示する。これは、
図21の各モジュール・セル(240および241)の
「拡張」のスロットを利用する。図14(c)のモジュ
ール構成図表示に対する内部データ表現を図29に示す
。
示モード・フラッグ」を調べる。同フラッグが積み重ね
モードであるときは、図14(c)に示したような積み
重ね表示を行なう。図14で言えば、同図(a)でモジ
ュールDを実行中、モジュールBの呼び出しが行なわれ
たとき、同図(c)のようにモジュールB以下の部分モ
ジュール構成図を、同位置で重ねて表示する。これは、
図21の各モジュール・セル(240および241)の
「拡張」のスロットを利用する。図14(c)のモジュ
ール構成図表示に対する内部データ表現を図29に示す
。
【0190】図29で、250〜253は、静的表示状
態でのモジュール構成図の各モジュールに対応するセル
である。254〜256は、積み上げ表示された部分モ
ジュール構成図に対応するセルである。特に254は、
図14(c)の図形131に対応するもので、部分モジ
ュール構成図を乗せる台となっている図形に対応してい
る。セル254のスロット「下位モジュール群」のスロ
ットに、実際の部分モジュール構成図(この例の場合は
、モジュールB以下のモジュール群のツリー)がつなが
れる。再帰呼び出しが多重に行われるときは、この「部
分モジュール構成図」のセルおよびそれから下につなが
る部分を単位として、同セルの「次の部分モジュール構
成図」のスロットにつながれる。
態でのモジュール構成図の各モジュールに対応するセル
である。254〜256は、積み上げ表示された部分モ
ジュール構成図に対応するセルである。特に254は、
図14(c)の図形131に対応するもので、部分モジ
ュール構成図を乗せる台となっている図形に対応してい
る。セル254のスロット「下位モジュール群」のスロ
ットに、実際の部分モジュール構成図(この例の場合は
、モジュールB以下のモジュール群のツリー)がつなが
れる。再帰呼び出しが多重に行われるときは、この「部
分モジュール構成図」のセルおよびそれから下につなが
る部分を単位として、同セルの「次の部分モジュール構
成図」のスロットにつながれる。
【0191】なお、本例は間接的な再帰呼び出しの例で
あるが、再帰呼び出しが自分自身を直接呼び出す直接再
帰の場合、図29のセル254を用いずに、複製したモ
ジュール・セルをもとのモジュール・セルの「拡張」ス
ロツトに直接つないでもよい。図18に示したモジュー
ル構成図は、そのような内部表現データに対応した表示
例である。
あるが、再帰呼び出しが自分自身を直接呼び出す直接再
帰の場合、図29のセル254を用いずに、複製したモ
ジュール・セルをもとのモジュール・セルの「拡張」ス
ロツトに直接つないでもよい。図18に示したモジュー
ル構成図は、そのような内部表現データに対応した表示
例である。
【0192】再帰呼び出しがあったとき、「再帰表示モ
ード・フラッグ」が延長モードのときは、図14(b)
のように、モジュールDの下位方向へ延長して表示する
。この場合の拡張されたモジュール構成図の内部表現デ
ータは、その構造については、再帰の場合とまったく同
様で、図29のようになる。再帰の場合との違いは、拡
張された部分モジュール構成図の各モジュールの表示位
置、すなわちそれぞれのモジュール・セルの「位置」ス
ロットの内容が異なること、などである。
ード・フラッグ」が延長モードのときは、図14(b)
のように、モジュールDの下位方向へ延長して表示する
。この場合の拡張されたモジュール構成図の内部表現デ
ータは、その構造については、再帰の場合とまったく同
様で、図29のようになる。再帰の場合との違いは、拡
張された部分モジュール構成図の各モジュールの表示位
置、すなわちそれぞれのモジュール・セルの「位置」ス
ロットの内容が異なること、などである。
【0193】なお、このモジュール構成図を下位方向へ
延長して表示する方法は、呼び出すモジュールが動的に
決定されるようなプログラムにおいても利用可能である
。
延長して表示する方法は、呼び出すモジュールが動的に
決定されるようなプログラムにおいても利用可能である
。
【0194】以上のプログラムの実行処理を行っている
とき、図19の162「実行状態識別表示フラッグ」が
ONになっていれば、これらの処理に加えてさらに次の
処理を行う。
とき、図19の162「実行状態識別表示フラッグ」が
ONになっていれば、これらの処理に加えてさらに次の
処理を行う。
【0195】上記の実行処理によって関連する実行単位
が、次に実行中、実行済み、または実行保留の状態にな
ったら、その情報を該当する実行単位のセルの「実行状
態」のスロットに書き込む。モジュール構成図について
も同様に実行状態が変化したら、その情報(実行中、実
行済み、実行保留)を該当するモジュール・セルの「実
行状態」スロットに書き込む。同時にこの情報を画面上
に表示しているソース・プログラムおよびモジュール構
成図に反映する。
が、次に実行中、実行済み、または実行保留の状態にな
ったら、その情報を該当する実行単位のセルの「実行状
態」のスロットに書き込む。モジュール構成図について
も同様に実行状態が変化したら、その情報(実行中、実
行済み、実行保留)を該当するモジュール・セルの「実
行状態」スロットに書き込む。同時にこの情報を画面上
に表示しているソース・プログラムおよびモジュール構
成図に反映する。
【0196】なお、以上の説明では、「終了時動作表示
消去フラッグ」に関連する処理については詳述しなかっ
たが、適宜必要な時点で所定の処理が行なわれるものと
する。以下の処理の説明でも同様である。
消去フラッグ」に関連する処理については詳述しなかっ
たが、適宜必要な時点で所定の処理が行なわれるものと
する。以下の処理の説明でも同様である。
【0197】一方、図26のステップ300でNOの場
合、すなわち、動作表示がprevボタン等で最後に実
行した状態より以前の状態に戻されているときにnex
tボタンの入力が行われた場合は、プログラムの解釈実
行は行わない。その代わりに、既に図式表現プログラム
3およびモジュール構成図7(の内部表現データ)に蓄
積している実行履歴データを参照して、図式表現プログ
ラムおよびモジュール構成図を現在の表示よりも1ステ
ップ進めた状態にする。具体的には、「現在注目してい
る実行単位」のセルの「次」スロットの内容を参照し、
その値で指定されるセルの「値」スロットの内容を画面
に表示する。また、「現在注目している実行単位」の内
容をそのセルに変更する。
合、すなわち、動作表示がprevボタン等で最後に実
行した状態より以前の状態に戻されているときにnex
tボタンの入力が行われた場合は、プログラムの解釈実
行は行わない。その代わりに、既に図式表現プログラム
3およびモジュール構成図7(の内部表現データ)に蓄
積している実行履歴データを参照して、図式表現プログ
ラムおよびモジュール構成図を現在の表示よりも1ステ
ップ進めた状態にする。具体的には、「現在注目してい
る実行単位」のセルの「次」スロットの内容を参照し、
その値で指定されるセルの「値」スロットの内容を画面
に表示する。また、「現在注目している実行単位」の内
容をそのセルに変更する。
【0198】この表示変更時、「現在注目している実行
単位」が繰り返し記述の最後の実行単位の場合は、上記
実行結果による表示変更の場合と同様に、繰り返しを示
す部分プログラムを新たに一つ同位置に積み重ねて表示
する。
単位」が繰り返し記述の最後の実行単位の場合は、上記
実行結果による表示変更の場合と同様に、繰り返しを示
す部分プログラムを新たに一つ同位置に積み重ねて表示
する。
【0199】同様に、関数呼び出しの場合は、モジュー
ルの埋め込み展開表示、モジュール構成図の表示変更な
どの付随的な表示変更処理を行なう。
ルの埋め込み展開表示、モジュール構成図の表示変更な
どの付随的な表示変更処理を行なう。
【0200】次にgoボタンの処理について説明する。
【0201】goボタンの処理のフローを図30に示す
。まず、ステップ310で、実行制御プログラム8に指
令を発し、最後に実行した実行単位の次から実行を開始
する。ただし、この場合は次のステップで実行を中断せ
ず、あらかじめ指定してあるブレーク・ポイント(プロ
グラム実行の中断点)に達するか、途中でエラーが発生
するか、さもなければプログラムの最後まで自動的に実
行する(ステップ311、312参照)。このとき、「
実行履歴取得フラッグ」がONになっているか、あるい
は「実行履歴取得フラッグ」が限定取得モードで、次に
実行する実行単位の「実行履歴取得」のスロットがON
になっているときは、上記nextコマンドの処理の場
合と同様に、実行履歴取得プログラム9を利用して、各
実行単位の実行処理ごとに、実行履歴取得関連の各種処
理を合わせて行う。
。まず、ステップ310で、実行制御プログラム8に指
令を発し、最後に実行した実行単位の次から実行を開始
する。ただし、この場合は次のステップで実行を中断せ
ず、あらかじめ指定してあるブレーク・ポイント(プロ
グラム実行の中断点)に達するか、途中でエラーが発生
するか、さもなければプログラムの最後まで自動的に実
行する(ステップ311、312参照)。このとき、「
実行履歴取得フラッグ」がONになっているか、あるい
は「実行履歴取得フラッグ」が限定取得モードで、次に
実行する実行単位の「実行履歴取得」のスロットがON
になっているときは、上記nextコマンドの処理の場
合と同様に、実行履歴取得プログラム9を利用して、各
実行単位の実行処理ごとに、実行履歴取得関連の各種処
理を合わせて行う。
【0202】自動実行中、ブレーク・ポイントに達した
とき、または途中でエラーが発生したとき(ステップ3
12)、それまでに蓄積している実行履歴データととも
に、ブレーク・ポイント地点またはエラー発生地点を明
示したモジュールのソース・プログラム、およびそのモ
ジュールを明示したモジュール構成図を表示する(ステ
ップ313)。なお、実行履歴データを保存していない
ときは、単に、ブレーク・ポイント地点またはエラー発
生地点を明示したモジュールのソース・プログラム、お
よびそのモジュールを明示したモジュール構成図を表示
する。この後、ステップ311の実行ループを脱出する
(ステップ314)。
とき、または途中でエラーが発生したとき(ステップ3
12)、それまでに蓄積している実行履歴データととも
に、ブレーク・ポイント地点またはエラー発生地点を明
示したモジュールのソース・プログラム、およびそのモ
ジュールを明示したモジュール構成図を表示する(ステ
ップ313)。なお、実行履歴データを保存していない
ときは、単に、ブレーク・ポイント地点またはエラー発
生地点を明示したモジュールのソース・プログラム、お
よびそのモジュールを明示したモジュール構成図を表示
する。この後、ステップ311の実行ループを脱出する
(ステップ314)。
【0203】なお、上記説明では、”「最後に実行した
実行単位」の次から実行を開始する”としたが、これは
必然的なものではなく、「現在注目している実行単位」
の次から実行を開始してもよい。この場合、「現在注目
している実行単位」から「最後に実行した実行単位」に
至るまでプログラムの実行を行わないで、それまでに蓄
積している実行履歴を単にトレースする方法と、それま
での実行履歴をキャンセルし、新たな実行を行う方法と
がある。前者の場合は、直接実行を行わないので、一般
に「最後に実行した実行単位」に至るまでは処理が速く
なる。ただしこの場合でも、途中のブレーク・ポイント
の有無のチェック等の処理は行う。後者は、プログラム
の再実行前に関連プログラムやデータ等を変更したとき
、それまで蓄積している実行履歴が無効となる可能性が
ある場合に有効である。
実行単位」の次から実行を開始する”としたが、これは
必然的なものではなく、「現在注目している実行単位」
の次から実行を開始してもよい。この場合、「現在注目
している実行単位」から「最後に実行した実行単位」に
至るまでプログラムの実行を行わないで、それまでに蓄
積している実行履歴を単にトレースする方法と、それま
での実行履歴をキャンセルし、新たな実行を行う方法と
がある。前者の場合は、直接実行を行わないので、一般
に「最後に実行した実行単位」に至るまでは処理が速く
なる。ただしこの場合でも、途中のブレーク・ポイント
の有無のチェック等の処理は行う。後者は、プログラム
の再実行前に関連プログラムやデータ等を変更したとき
、それまで蓄積している実行履歴が無効となる可能性が
ある場合に有効である。
【0204】次にprevボタンの処理について説明す
る。
る。
【0205】nextボタンの処理と逆方向の処理であ
る。モジュール構成図およびソース・プログラムの動作
表示を1ステップ前の状態に戻す。具体的には、「現在
注目している実行単位」に関連する動作表示を消去し、
「現在注目している実行単位」のセルの「前」スロット
をたどり、「現在注目している実行単位」を一つ前のセ
ルにする。この時繰り返しの表示や関数の埋め込み展開
表示、またモジュール構成図の表示なども、必要ならば
適宜修正する。
る。モジュール構成図およびソース・プログラムの動作
表示を1ステップ前の状態に戻す。具体的には、「現在
注目している実行単位」に関連する動作表示を消去し、
「現在注目している実行単位」のセルの「前」スロット
をたどり、「現在注目している実行単位」を一つ前のセ
ルにする。この時繰り返しの表示や関数の埋め込み展開
表示、またモジュール構成図の表示なども、必要ならば
適宜修正する。
【0206】なお、実行履歴データを保存していない場
合は、prevボタンをクリックされても何もしない。
合は、prevボタンをクリックされても何もしない。
【0207】次にlastボタンの処理について説明す
る。
る。
【0208】「最後に実行した実行単位」を参照して、
モジュール構成図およびソース・プログラムの動作表示
を最後に実行した状態に戻す。既に最後に実行した状態
にあれば、何もしない。
モジュール構成図およびソース・プログラムの動作表示
を最後に実行した状態に戻す。既に最後に実行した状態
にあれば、何もしない。
【0209】次に、実行履歴検索表示処理について説明
する。
する。
【0210】その時マウス・カーソルによる対象指定が
なされていれば、実行履歴検索プログラム10に依頼し
て、指定対象に応じた実行履歴データを、図式表現プロ
グラム3またはモジュール構成図7から検索し表示する
。具体的には、そのときの被指定対象がモジュール構成
図上の一つのモジュールであるとき、指定されているモ
ジュールのソース・プログラム上に実行履歴を重畳した
ものを表示する。なお、このとき、積み重ね表示もしく
は延長表示により同一のモジュールが複数表示されてい
る場合は、指定されているモジュールの位置に対応する
実行履歴を表示する。
なされていれば、実行履歴検索プログラム10に依頼し
て、指定対象に応じた実行履歴データを、図式表現プロ
グラム3またはモジュール構成図7から検索し表示する
。具体的には、そのときの被指定対象がモジュール構成
図上の一つのモジュールであるとき、指定されているモ
ジュールのソース・プログラム上に実行履歴を重畳した
ものを表示する。なお、このとき、積み重ね表示もしく
は延長表示により同一のモジュールが複数表示されてい
る場合は、指定されているモジュールの位置に対応する
実行履歴を表示する。
【0211】被指定対象が、ソース・プログラム上の対
象の場合は次のようにする。
象の場合は次のようにする。
【0212】まず、被指定対象が繰り返しまたは再帰に
より積み重ね表示されているものの一つであるとき、そ
の対象(繰り返しまたは再帰の図式表現)を積み重ねの
最上位に出して対象全部が見られるようにする。
より積み重ね表示されているものの一つであるとき、そ
の対象(繰り返しまたは再帰の図式表現)を積み重ねの
最上位に出して対象全部が見られるようにする。
【0213】被指定対象が変数を表わす文字列のときは
、その値をその近傍に表示する。関数を表わす箱または
関数の出力(戻り値)を表わす矢印のときは、出力の矢
印の位置に関数の値を表示する。なお、この操作が有効
なのは、「終了時動作表示消去フラッグ」がONの場合
である。同フラッグがOFFの場合は、実行履歴がソー
ス・プログラム上に全て残されて表示されているので、
この操作をしても無意味である。
、その値をその近傍に表示する。関数を表わす箱または
関数の出力(戻り値)を表わす矢印のときは、出力の矢
印の位置に関数の値を表示する。なお、この操作が有効
なのは、「終了時動作表示消去フラッグ」がONの場合
である。同フラッグがOFFの場合は、実行履歴がソー
ス・プログラム上に全て残されて表示されているので、
この操作をしても無意味である。
【0214】ところで、プログラムの実行状態をソース
・プログラム等に重畳表示する場合、あまり大きなデー
タ(大きな表示領域を必要とするデータ)は、ベースと
なっているソース・プログラムの見やすさを阻害し、プ
ログラムの実行状態の理解を却って妨げる恐れがある。 このような場合は、一つのデータの表示領域を制限する
、あるいは大きな表示領域を必要とするデータはとりあ
えずアイコン等で表示しておき、必要に応じてデータ全
体を見ることができるようにしておくという対策が考え
られる。また、アイコンも何も表示せず、実行単位を表
わす図形またはその近傍(例えば図5で言えば、各関数
の出力を表わす矢印)をマウスでクリックしたときに、
対応する実行状態を表示するということでもよい。
・プログラム等に重畳表示する場合、あまり大きなデー
タ(大きな表示領域を必要とするデータ)は、ベースと
なっているソース・プログラムの見やすさを阻害し、プ
ログラムの実行状態の理解を却って妨げる恐れがある。 このような場合は、一つのデータの表示領域を制限する
、あるいは大きな表示領域を必要とするデータはとりあ
えずアイコン等で表示しておき、必要に応じてデータ全
体を見ることができるようにしておくという対策が考え
られる。また、アイコンも何も表示せず、実行単位を表
わす図形またはその近傍(例えば図5で言えば、各関数
の出力を表わす矢印)をマウスでクリックしたときに、
対応する実行状態を表示するということでもよい。
【0215】これまでの説明では、全て図式で表現した
ソース・プログラムを用いてきたが、本発明は図式で表
現されたプログラムに限定されるわけではなく、従来の
文字表現によるプログラムにもまったく同様に適用可能
である。文字表現のプログラムに適用した例を、図31
、図32および図33に示す。図31は、図5の表示例
を文字表現プログラムに適用した例、図32は図9の、
図33は図12の表示例に対応する例である。なお、図
32および図33中の上向き矢印(図の260、270
)は、実行中(次に実行する)の実行単位を示している
。
ソース・プログラムを用いてきたが、本発明は図式で表
現されたプログラムに限定されるわけではなく、従来の
文字表現によるプログラムにもまったく同様に適用可能
である。文字表現のプログラムに適用した例を、図31
、図32および図33に示す。図31は、図5の表示例
を文字表現プログラムに適用した例、図32は図9の、
図33は図12の表示例に対応する例である。なお、図
32および図33中の上向き矢印(図の260、270
)は、実行中(次に実行する)の実行単位を示している
。
【0216】また、実施例で用いてきた図式表現法によ
るプログラム(先願(特願平−2−056360)に記
載の表現法に従ったもの)だけでなく、他の方法による
図式表現プログラムにも適用可能である。
るプログラム(先願(特願平−2−056360)に記
載の表現法に従ったもの)だけでなく、他の方法による
図式表現プログラムにも適用可能である。
【0217】図34(a)は、図8で示した階乗関数(
factorial)のプログラムをプログラミング言
語Cによって表現したものである。同図(b)はこれを
公知のPADによって表現したものである。ただし、P
ADの表現では、もとのプグラムにある関数呼び出し定
義部分(同図(a)の1行目)、および変数の宣言部分
(同図(a)の2行目と4行目)は省略している。
factorial)のプログラムをプログラミング言
語Cによって表現したものである。同図(b)はこれを
公知のPADによって表現したものである。ただし、P
ADの表現では、もとのプグラムにある関数呼び出し定
義部分(同図(a)の1行目)、および変数の宣言部分
(同図(a)の2行目と4行目)は省略している。
【0218】図35は、図34(b)のPADによるプ
ログラム上でその動作を表示した例である。図9の場合
と同様に、引数nに値10を与え、関数factori
alを呼び出して、iを1から5まで変化させて実行し
た途中結果を示している。変数値の重畳表示および繰り
返しの積み重ね表示により、プログラムの実行状況がよ
くわかる。なお、本図は280の箱の中に示した部分ま
で実行し、次に281の箱の中を実行しようとする状況
を示している。次に実行するのが箱281であることを
示すために、箱281にはハッチングを施している。
ログラム上でその動作を表示した例である。図9の場合
と同様に、引数nに値10を与え、関数factori
alを呼び出して、iを1から5まで変化させて実行し
た途中結果を示している。変数値の重畳表示および繰り
返しの積み重ね表示により、プログラムの実行状況がよ
くわかる。なお、本図は280の箱の中に示した部分ま
で実行し、次に281の箱の中を実行しようとする状況
を示している。次に実行するのが箱281であることを
示すために、箱281にはハッチングを施している。
【0219】これまでの説明に用いた表示例では、モジ
ュール構成図、ソース・プログラムとも基本的に2次元
平面上に描くものとしてきた(繰り返しおよび再帰呼び
出しの積み重ね表示は疑似3次元表示とも言えるが)。 これを、3次元グラフィック表示可能なディスプレイ装
置を用いて3次元空間上の平面に描くことにすれば、繰
り返しおよび再帰呼び出しの積み重ね表示なども真に立
体的に表示することが出来、視覚的イメージを通したプ
ログラム動作理解をさらに増進させることが出来る。
ュール構成図、ソース・プログラムとも基本的に2次元
平面上に描くものとしてきた(繰り返しおよび再帰呼び
出しの積み重ね表示は疑似3次元表示とも言えるが)。 これを、3次元グラフィック表示可能なディスプレイ装
置を用いて3次元空間上の平面に描くことにすれば、繰
り返しおよび再帰呼び出しの積み重ね表示なども真に立
体的に表示することが出来、視覚的イメージを通したプ
ログラム動作理解をさらに増進させることが出来る。
【0220】なお、以上の説明では、もっぱらLISP
言語による例を用いてきたが、本発明はLISP言語な
らびにその図式表現に限定されることはなく、その他の
言語、例えばFORTRAN、PL/I、C、PASC
AL、ADAなどの手続き型言語ならびにその図式表現
、さらにPrologや、ルール記述による知識処理言
語などの動作表示にも適用可能である。
言語による例を用いてきたが、本発明はLISP言語な
らびにその図式表現に限定されることはなく、その他の
言語、例えばFORTRAN、PL/I、C、PASC
AL、ADAなどの手続き型言語ならびにその図式表現
、さらにPrologや、ルール記述による知識処理言
語などの動作表示にも適用可能である。
【0221】また、識別表示のための表示属性は、線の
太さやハッチングに限定されるわけではなく、線の場合
は線の色、形状(破線、一点鎖線等)、二次元図形の場
合は、図形の形状(矩形でなく、円、楕円、角が丸い矩
形など)、縁の形状(縁の線の形状あるいは縁の近くだ
け色を付けるなど)、閉図形の内側を色で塗りつぶすな
ど、さまざまな方法を取ることができる。
太さやハッチングに限定されるわけではなく、線の場合
は線の色、形状(破線、一点鎖線等)、二次元図形の場
合は、図形の形状(矩形でなく、円、楕円、角が丸い矩
形など)、縁の形状(縁の線の形状あるいは縁の近くだ
け色を付けるなど)、閉図形の内側を色で塗りつぶすな
ど、さまざまな方法を取ることができる。
【0222】
【発明の効果】以上説明したように、本発明によれば、
ソース・プログラムないしモジュール構成図上でプログ
ラムの実行動作を監視することが可能になる。特に、繰
り返しまたは再帰呼び出しを含むプログラムにおいては
積み重ね表示によりその実行経過の構造に応じた表示を
行うので、ユーザはプログラムの動作を視覚的なイメー
ジとして把握することができ、プログラムの動作を容易
に認識できるようになる。また、条件分岐、またLIS
P言語のmap関数などの複数要素に同一処理を行う関
数等に対してもわかりやすい動作表示方法を提供するの
で、プログラムの動作理解を大いに助けることが出来る
。
ソース・プログラムないしモジュール構成図上でプログ
ラムの実行動作を監視することが可能になる。特に、繰
り返しまたは再帰呼び出しを含むプログラムにおいては
積み重ね表示によりその実行経過の構造に応じた表示を
行うので、ユーザはプログラムの動作を視覚的なイメー
ジとして把握することができ、プログラムの動作を容易
に認識できるようになる。また、条件分岐、またLIS
P言語のmap関数などの複数要素に同一処理を行う関
数等に対してもわかりやすい動作表示方法を提供するの
で、プログラムの動作理解を大いに助けることが出来る
。
【0223】さらに、実行履歴の保存検索、ならびに検
索結果のソース・プログラムないしモジュール構成図上
での重畳表示方法を提供することにより、実行履歴の容
易な検索、わかりやすい提示手段を与えることが出来る
。特に、繰り返しないし再帰呼び出しを含むプログラム
においても、繰り返しまたは再帰呼び出しの一単位ごと
の視覚的な検索手段を提供しているので、実行履歴の検
索表示を容易に行うことができるようになった。
索結果のソース・プログラムないしモジュール構成図上
での重畳表示方法を提供することにより、実行履歴の容
易な検索、わかりやすい提示手段を与えることが出来る
。特に、繰り返しないし再帰呼び出しを含むプログラム
においても、繰り返しまたは再帰呼び出しの一単位ごと
の視覚的な検索手段を提供しているので、実行履歴の検
索表示を容易に行うことができるようになった。
【0224】なお、本発明は、文字表現によるプログラ
ムでもそれなりの効果をあげることは出来るが、これま
でプログラム動作表示例として示した図からも、図式で
表現したプログラムにおいてこそ、大きな効果があるこ
とが理解されよう。
ムでもそれなりの効果をあげることは出来るが、これま
でプログラム動作表示例として示した図からも、図式で
表現したプログラムにおいてこそ、大きな効果があるこ
とが理解されよう。
【図1】本発明によるプログラム動作表示を示す画面の
例を示した図である。
例を示した図である。
【図2】本発明を実施するためのシステム構成を示す図
である。
である。
【図3】図1のコマンドメニュー25の詳細を示す図で
ある。
ある。
【図4】本発明よるプログラム動作表示の基本動作説明
のためのプログラム例を示す図である。
のためのプログラム例を示す図である。
【図5】図4(b)のプログラム上での動作表示例を示
す図である。
す図である。
【図6】一つの実行単位の処理終了時、関連のない動作
表示を消去した場合の表示例を示す図である。
表示を消去した場合の表示例を示す図である。
【図7】実行中および実行済みの実行単位の識別表示例
を示した図である。
を示した図である。
【図8】繰り返しを含むプログラム例を示した図である
。
。
【図9】繰り返しを含むプログラム(図8)の動作表示
例を示した図である。
例を示した図である。
【図10】条件分岐の動作表示例を示した図である。
【図11】関数mapcarを含むプログラム例を示し
た図である。
た図である。
【図12】関数mapcarを含むプログラム(図11
)の動作表示例を示した図である。
)の動作表示例を示した図である。
【図13】動的埋め込み展開表示例を示した図である。
【図14】モジュール構成図による動作表示例を示した
図である。
図である。
【図15】モジュール構成図、ソース・プログラムを利
用した実行履歴検索の例を示した図である。
用した実行履歴検索の例を示した図である。
【図16】モジュール構成図、ソース・プログラムを利
用した実行履歴検索の他の例を示した図である。
用した実行履歴検索の他の例を示した図である。
【図17】モジュール構成図、ソース・プログラムを利
用した実行履歴検索のさらに他の例を示した図である。
用した実行履歴検索のさらに他の例を示した図である。
【図18】大きな繰り返し回数のときの積み重ね表示と
実行履歴検索の例を示した図である。
実行履歴検索の例を示した図である。
【図19】関数factorialの再帰的定義を示し
た図である。
た図である。
【図20】再帰関数を含むプログラムの実行履歴検索の
例を示した図である。
例を示した図である。
【図21】システム変数リストを示した図である。
【図22】入力解釈・全体制御プログラムの処理フロー
の一部を示した図である。
の一部を示した図である。
【図23】入力解釈・全体制御プログラムの処理フロー
の他の部分を示した図である。
の他の部分を示した図である。
【図24】モジュール構成図の内部表現データの例を示
した図である。
した図である。
【図25】ソース・プログラムの図式表現の内部表現デ
ータの例を示す図である。
ータの例を示す図である。
【図26】nextボタンの処理フローを示す図である
。
。
【図27】繰り返しの形式doの積み重ね表示の内部表
現データの例を示す図である。
現データの例を示す図である。
【図28】動的埋め込み展開表示の内部表現データの例
を示す図である。
を示す図である。
【図29】積み重ね表示されたモジュール構成図の内部
表現データの例を示す図である。
表現データの例を示す図である。
【図30】goボタンの処理フローを示す図である。
【図31】本発明によるプログラム動作表示方法を、文
字で表現したプログラムに適用した例を示す図である。
字で表現したプログラムに適用した例を示す図である。
【図32】本発明によるプログラム動作表示方法を、文
字で表現したプログラムに適用した例を示す図である。
字で表現したプログラムに適用した例を示す図である。
【図33】本発明によるプログラム動作表示方法を、文
字で表現したプログラムに適用した例を示す図である。
字で表現したプログラムに適用した例を示す図である。
【図34】言語によるプログラム例を示す図である。
【図35】公知のPADによる図式表現プログラムに適
用した本発明によるプログラム動作表示方法の例を示す
図である。
用した本発明によるプログラム動作表示方法の例を示す
図である。
1…文字表現によるソース・プログラム、2…文字表現
から図式表現への変換プログラム、3…図式表現プログ
ラム、4…表示制御プログラム、5…ディスプレイ装置
、6…モジュール構成図生成プログラム、7…モジュー
ル構成図、8…実行制御プログラム、9…実行履歴取得
プログラム、10…実行履歴検索プログラム、11…入
力解釈・全体制御プログラム、12…キーボード、13
…マウス、20…対話入力ウィンドウ、21…モジュー
ル構成図表示ウィンドウ、22…ソース・プログラム表
示ウィンドウ、23…各種制御ボタン、24…マウス・
カーソル、25…コマンドメニュー、160…実行履歴
取得フラッグ、161…終了時動作表示消去フラッグ、
162…実行状態識別表示フラッグ、163…埋め込み
展開表示フラッグ、164…再帰表示モード・フラッグ
、165…「最後に実行した実行単位」を記憶する変数
、166…「現在注目している実行単位」を記憶する変
数
から図式表現への変換プログラム、3…図式表現プログ
ラム、4…表示制御プログラム、5…ディスプレイ装置
、6…モジュール構成図生成プログラム、7…モジュー
ル構成図、8…実行制御プログラム、9…実行履歴取得
プログラム、10…実行履歴検索プログラム、11…入
力解釈・全体制御プログラム、12…キーボード、13
…マウス、20…対話入力ウィンドウ、21…モジュー
ル構成図表示ウィンドウ、22…ソース・プログラム表
示ウィンドウ、23…各種制御ボタン、24…マウス・
カーソル、25…コマンドメニュー、160…実行履歴
取得フラッグ、161…終了時動作表示消去フラッグ、
162…実行状態識別表示フラッグ、163…埋め込み
展開表示フラッグ、164…再帰表示モード・フラッグ
、165…「最後に実行した実行単位」を記憶する変数
、166…「現在注目している実行単位」を記憶する変
数
Claims (27)
- 【請求項1】ソース・プログラムを画面上に表示し、該
表示したソース・プログラムを構成する関数・式・実行
文等のプログラムの実行単位の表示位置をそれぞれ記憶
し、該プログラムの実行に合わせて、該記憶した実行単
位の表示位置を参照して現在の実行単位を逐次識別表示
し、また、該実行単位に関わる引数・変数および関数の
戻り値等の処理結果の値を該実行単位の近傍に逐次表示
することを特徴とするプログラム動作表示方法。 - 【請求項2】ソース・プログラムを画面上に表示し、該
表示したプログラムを構成する関数・式・実行文等のプ
ログラムの実行単位の表示位置をそれぞれ記憶し、該プ
ログラムの実行状況を画面に表示した該プログラムに重
畳させて表示するプログラム動作表示方法において、プ
ログラムが繰り返しまたは再帰呼び出しの実行文を含む
とき、新たに繰り返しまたは再帰呼び出しの一単位が開
始されるごとに該部分プログラムを同位置に順に積み上
げて表示することを特徴とするプログラム動作表示方法
。 - 【請求項3】ソース・プログラムを画面上に表示し、該
表示したプログラムを構成する関数・式・実行文等のプ
ログラムの実行単位の表示位置をそれぞれ記憶し、該プ
ログラムの実行状況を画面に表示した該プログラムに重
畳させて表示するプログラム動作表示方法において、プ
ログラムが条件分岐機能を有する実行文を含むとき、該
実行文に設定されている分岐条件の実行結果にしたがい
、次に実行する実行単位を識別表示することを特徴とす
るプログラム動作表示方法。 - 【請求項4】ソース・プログラムを画面上に表示し、該
表示したプログラムを構成する関数・式・実行文等のプ
ログラムの実行単位の表示位置をそれぞれ記憶し、該プ
ログラムの実行状況を画面に表示した該プログラムに重
畳させて表示するプログラム動作表示方法において、プ
ログラムが、配列・リスト等の複数の要素を含むデータ
を入力引数とし、各構成要素ごとに同一の処理を繰り返
し行う関数・サブルーチン呼び出しを含むとき、入力引
数を各構成要素の並びとして該関数またはサブルーチン
の引数の近傍に表示し、そのうちの現在処理対象となっ
ている該引数の要素を識別表示し、該要素の処理結果を
該関数またはサブルーチンの処理結果の近傍に該引数と
対応させて各要素の処理終了ごとに順に表示することを
特徴とするプログラム動作表示方法。 - 【請求項5】ソース・プログラムを画面上に表示し、該
表示したプログラムを構成する関数・式・実行文等のプ
ログラムの実行単位の表示位置をそれぞれ記憶し、該プ
ログラムの実行状況を画面に表示した該プログラムに重
畳させて表示するプログラム動作表示方法において、該
プログラムが含む関数呼び出し、サブルーチン呼び出し
およびマクロ呼び出しが実行されるごとに、該関数呼び
出し、サブルーチン呼び出しまたはマクロ呼び出しを、
その定義内容に展開して表示することを特徴とするプロ
グラム動作表示方法。 - 【請求項6】ソース・プログラムを画面上に表示し、該
表示したプログラムを構成する関数・式・実行文等のプ
ログラムの実行単位の表示位置をそれぞれ記憶し、該プ
ログラムの実行状況を画面に表示した該プログラムに重
畳させて表示するプログラム動作表示方法において、現
在実行中の実行単位と、既に実行済みの実行単位と、関
数呼び出し、サブルーチン呼び出しまたはマクロ呼出し
等によって実行保留になっている実行単位と、未実行の
実行単位とを、それぞれ異なる表示属性によって識別表
示することを特徴とするプログラム動作表示方法。 - 【請求項7】実行単位の処理が終了するごとに、表示中
の実行単位に関わる引数・変数および関数の戻り値等の
処理結果の値の表示、または積み重ねて表示している繰
り返しないし再帰呼び出しの表示を消去すること、同じ
く展開表示している関数、サブルーチン、マクロの定義
をもとの呼び出し形式の表示に戻して表示すること、実
行単位が実行中、実行済み、実行保留であることを示す
表示をもとの未実行状態の表示に戻すこと、あるいは分
岐条件が真または偽の状態を表わす表示をもとの未実行
状態の表示に戻すことを特徴とする請求項1から6のプ
ログラム動作表示方法。 - 【請求項8】該実行単位の表示位置を表わすデータに付
随させて、制御の流れならびに引数・変数もしくは関数
の戻り値等のプログラムの実行状態を逐次記憶し、キー
ボード等の入力装置から入力されたユーザの指示により
、実行状態ならびに画面の表示を一つ前の状態に戻すこ
とを特徴とする請求項1から7のプログラム動作表示方
法。 - 【請求項9】複数モジュールからなるプログラムの各モ
ジュール間の呼び出し関係を木構造状に表現したモジュ
ール構成図を表示し、該表示したモジュール構成図を構
成するモジュール表示データの表示位置をそれぞれ記憶
し、現在実行中のモジュールを該モジュール構成図上で
識別表示するプログラム動作表示方法において、構成モ
ジュール中に自分自身またはより上位のモジュールを再
帰的に呼び出すモジュールがあるとき、呼び出されてい
るモジュールから下位の部分モジュール構成図を同位置
に順に積み上げて表示することを特徴とするプログラム
動作表示方法。 - 【請求項10】複数モジュールからなるプログラムの各
モジュール間の呼び出し関係を木構造状に表現したモジ
ュール構成図を表示し、該表示したモジュール構成図を
構成するモジュール表示データの表示位置をそれぞれ記
憶し、現在実行中のモジュールを該モジュール構成図上
で識別表示するプログラム動作表示方法において、構成
モジュール中に同一の下位モジュールを複数回呼び出す
モジュールがあるとき、該下位モジュールの異なる呼び
出しごとに別のモジュールとしてモジュール構成図を動
的に拡張して表示することを特徴とするプログラム動作
表示方法。 - 【請求項11】請求項10のプログラム動作表示方法に
おいて、複数回呼び出される該下位モジュールが、該下
位モジュールの上位モジュールの繰り返し記述中の同一
モジュール呼び出し記述により呼び出されるモジュール
であるとき、呼び出されているモジュールから下位の部
分モジュール構成図を同位置に順に積み上げて表示する
ことを特徴とするプログラム動作表示方法。 - 【請求項12】拡張表示している部分モジュール構成図
、または積み上げ表示している部分モジュール構成図を
、該部分モジュール構成図内のモジュールの処理が終了
するごとに消去することを特徴とする請求項9、10ま
たは11のプログラム動作表示方法。 - 【請求項13】複数モジュールからなるプログラムの各
モジュール間の呼び出し関係を木構造状に表現したモジ
ュール構成図と、現在実行の対象となっているモジュー
ルのソース・プログラムを画面上に同時に表示し、該モ
ジュール構成図上の各モジュールの実行状態と該ソース
・プログラムの実行状態を逐次識別表示するプログラム
動作表示方法において、各ステップごとの実行状態と、
プログラムを構成する実行単位の表示位置およびモジュ
ール構成図を構成する各モジュール表示の表示位置との
対応関係を逐次記憶し、キーボード等の入力装置から入
力されたユーザの指示により、実行状態ならびに画面の
表示を一つ前の状態に戻すことを特徴とするプログラム
動作表示方法。 - 【請求項14】ソース・プログラムを画面上に表示し、
該表示したソース・プログラムを構成する関数・式・実
行文等のプログラムの実行単位の表示位置をそれぞれ記
憶し、該プログラムの実行に合わせて、該実行単位の表
示位置を表わすデータに付随させて、制御の流れならび
に引数・変数もしくは関数の戻り値等のプログラムの実
行状態を逐次記憶し、画面上に表示したソース・プログ
ラム上でマウス等の位置入力装置により一つの実行単位
を指定し、該指定した実行単位の引数・変数もしくは関
数の戻り値等の値を、該記憶している実行単位のデータ
から検索し、該実行単位の近傍に表示することを特徴と
するプログラム動作表示方法。 - 【請求項15】請求項14のプログラム動作表示方法に
おいて、該プログラムが繰り返しまたは再帰呼び出しの
実行文を含み、該繰り返しの各単位または再帰呼び出し
の各単位ごとに関連する引数・変数および関数の戻り値
等の処理結果の値を、該実行文から構成される部分プロ
グラム上に逐次表示するとともに、新たに繰り返しまた
は再帰呼び出しの一単位が開始されるごとに該部分プロ
グラムを同位置に順に積み上げて表示しているとき、積
み上げ表示した繰り返しの各単位の一つをマウス等の位
置入力装置により指定することにより、該単位に関連す
る引数・変数および関数の戻り値等の処理結果を、該繰
り返し単位または再帰呼び出し単位を表わす部分プログ
ラムに重畳させて、積み上げ表示の最上位に表示するこ
とを特徴とするプログラム動作表示方法。 - 【請求項16】画面上に表示したソース・プログラム上
で、マウス等の位置入力装置により一つの実行単位を指
定し、該指定した実行単位の引数・変数もしくは関数の
戻り値等の実行状態、あるいは指定した繰り返しまたは
再帰呼び出しに関わる実行単位の引数・変数もしくは関
数の戻り値等の実行状態のみを逐次記憶することを特徴
とする請求項8、14または15のプログラム動作表示
方法。 - 【請求項17】複数モジュールからなるプログラムの各
モジュール間の呼び出し関係を木構造状に表現したモジ
ュール構成図を表示し、該表示したモジュール構成図を
構成するモジュール表示データの表示位置をそれぞれ記
憶し、また、各モジュールのソース・プログラムを構成
する関数・式・実行文等のプログラムの実行単位を画面
上に表示するときの表示位置をそれぞれ記憶し、該プロ
グラムの実行に合わせて、モジュール構成図の各モジュ
ール表示ならびにソース・プログラムの各実行単位の表
示位置を表わすデータに付随させて、制御の流れならび
に引数・変数もしくは関数の戻り値等のプログラムの実
行状態を逐次記憶し、該モジュール構成図のモジュール
の一つをマウス等の位置入力装置により指定することに
より、該当するモジュールに関連する引数・変数および
関数の戻り値等の処理結果を、該モジュールのソース・
プログラムに重畳させて表示することを特徴とするプロ
グラム動作表示方法。 - 【請求項18】請求項17によるプログラム動作表示方
法において、該モジュール構成図は請求項9、10また
は11によるモジュール構成図であることを特徴とする
プログラム動作表示方法。 - 【請求項19】請求項17によるプログラム動作表示方
法において、ソース・プログラムにより表示する該動作
表示は、請求項1、2、3、4または6によるプログラ
ム動作表示を含むことを特徴とするプログラム動作表示
方法。 - 【請求項20】複数モジュールからなるプログラムの各
モジュール間の呼び出し関係を木構造状に表現したモジ
ュール構成図を表示し、該表示したモジュール構成図を
構成するモジュール表示データの表示位置をそれぞれ記
憶し、該プログラムの実行に合わせて、モジュール構成
図の各モジュールの表示位置を表わすデータに付随させ
て、各モジュール実行時の引数ならびに戻り値を逐次記
憶し、該モジュール構成図のモジュールの一つをマウス
等の位置入力装置により指定することにより、該当する
モジュールに関連する引数・変数および関数の戻り値を
表示することを特徴とするプログラム動作表示方法。 - 【請求項21】複数モジュールからなるプログラムの各
モジュール間の呼び出し関係を木構造状に表現したモジ
ュール構成図を構成するモジュール表示データを画面に
表示したときの表示位置をそれぞれ記憶し、また、各モ
ジュールのソース・プログラムを構成する関数・式・実
行文等のプログラムの実行単位を画面上に表示するとき
の表示位置をそれぞれ記憶し、該プログラムの実行に合
わせて、モジュール構成図の各モジュール表示ならびに
ソース・プログラムの各実行単位の表示位置を表わすデ
ータに付随させて、制御の流れならびに引数・変数もし
くは関数の戻り値等のプログラムの実行状態を逐次記憶
し、該プログラムのエラー発生時もしくはあらかじめ設
定したプログラム中断点に達したときに、エラーが発生
した実行単位もしくは中断点に対応する実行単位を識別
表示したソース・プログラムを表示し、該ソース・プロ
グラム上に、該モジュールもしくは該実行単位に関わる
引数・変数および関数等の処理結果の値を該モジュール
もしくは該実行単位の近傍に表示することを特徴とする
プログラム動作表示方法。 - 【請求項22】請求項21によるプログラム動作表示方
法において、表示する該モジュール構成図は請求項9、
10または11によるモジュール構成図を含むことを特
徴とするプログラム動作表示方法。 - 【請求項23】請求項21によるプログラム動作表示方
法において、ソース・プログラムにより表示する該動作
表示は、請求項1、2、3、4または6によるプログラ
ム動作表示を含むことを特徴とするプログラム動作表示
方法。 - 【請求項24】画面上に表示するソース・プログラムは
、図形形式のプログラムであることを特徴とする請求項
1から8および請求項13から23までのプログラム動
作表示方法。 - 【請求項25】該識別表示する次に実行する実行単位は
、該実行単位に連なる線分を太線表示することを特徴と
する請求項3のプログラム動作表示方法。 - 【請求項26】請求項2、9または11のプログラム動
作表示方法において、積み上げ表示を行う該部分プログ
ラムまたは部分モジュール構成図を、繰り返しまたは再
帰呼び出しの単位ごとに、少しずつずらして表示するこ
とを特徴とするプログラム動作表示方法。 - 【請求項27】請求項2、9または11のプログラム動
作表示方法において、積み上げ表示を行う該部分プログ
ラムまたは部分モジュール構成図を、繰り返しまたは再
帰呼び出しの回数に比例した高さを持つ立体により表示
することを特徴とするプログラム動作表示方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3110131A JPH04337843A (ja) | 1991-05-15 | 1991-05-15 | プログラム動作表示方法 |
US07/882,471 US5375125A (en) | 1991-05-15 | 1992-05-13 | Method of displaying program execution for a computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3110131A JPH04337843A (ja) | 1991-05-15 | 1991-05-15 | プログラム動作表示方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04337843A true JPH04337843A (ja) | 1992-11-25 |
Family
ID=14527814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3110131A Pending JPH04337843A (ja) | 1991-05-15 | 1991-05-15 | プログラム動作表示方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5375125A (ja) |
JP (1) | JPH04337843A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160532A (ja) * | 1993-12-10 | 1995-06-23 | Nec Corp | トレース自動表示方式 |
JPH07302215A (ja) * | 1993-01-27 | 1995-11-14 | Internatl Business Mach Corp <Ibm> | プログラム実行アナライザのためのユーザ・インターフェース方法 |
JP2003162426A (ja) * | 2001-11-28 | 2003-06-06 | Hitachi Ltd | 複数cpuの協調デバッグ回路を備えるコンピュータシステム及びデバッグ方法 |
JP2003241998A (ja) * | 2002-02-14 | 2003-08-29 | Toshiba Corp | 制御構造抽出方法、ログ整形方法とそのためのプログラム |
JP2006146731A (ja) * | 2004-11-24 | 2006-06-08 | Ricoh Co Ltd | プログラム、記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置 |
JP2008052603A (ja) * | 2006-08-25 | 2008-03-06 | Canon Inc | 表編集装置及び表編集方法 |
JP2010122785A (ja) * | 2008-11-18 | 2010-06-03 | Japan Research Institute Ltd | 情報処理装置、およびプログラム |
JP2016514318A (ja) * | 2013-03-13 | 2016-05-19 | インテル・コーポレーション | 性能及び正確性のためのマルチスレッドソフトウェアプログラムの記録された実行の視覚化 |
WO2019159397A1 (ja) * | 2018-02-15 | 2019-08-22 | 三菱電機株式会社 | ソフトウェア可視化装置、ソフトウェア可視化方法およびソフトウェア可視化プログラム |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9211368D0 (en) * | 1992-05-29 | 1992-07-15 | British Telecomm | Software fault location |
JPH06110739A (ja) * | 1992-09-25 | 1994-04-22 | Nitto Kohki Co Ltd | コンピュータシステム |
WO1995006283A1 (en) * | 1993-08-24 | 1995-03-02 | Downs Roger C | Topography processor system |
EP0690378A1 (en) * | 1994-06-30 | 1996-01-03 | Tandem Computers Incorporated | Tool and method for diagnosing and correcting errors in a computer programm |
US5596714A (en) * | 1994-07-11 | 1997-01-21 | Pure Atria Corporation | Method for simultaneously testing multiple graphic user interface programs |
US6216143B1 (en) * | 1994-12-05 | 2001-04-10 | International Business Machines Corporation | Apparatus and method for generating animated color coded software traces |
US5649085A (en) * | 1994-12-09 | 1997-07-15 | International Business Machines Corporation | Method and system for storing and displaying system operation traces with asynchronous event-pairs |
US5872909A (en) * | 1995-01-24 | 1999-02-16 | Wind River Systems, Inc. | Logic analyzer for software |
JP2723068B2 (ja) * | 1995-02-20 | 1998-03-09 | 日本電気株式会社 | ジョブ再実行方式 |
US5652899A (en) * | 1995-03-03 | 1997-07-29 | International Business Machines Corporation | Software understanding aid for generating and displaying simiplified code flow paths with respect to target code statements |
US5862382A (en) * | 1995-05-08 | 1999-01-19 | Kabushiki Kaisha Toshiba | Program analysis system and program analysis method |
US5760788A (en) * | 1995-07-28 | 1998-06-02 | Microsoft Corporation | Graphical programming system and method for enabling a person to learn text-based programming |
JP3400193B2 (ja) * | 1995-07-31 | 2003-04-28 | 富士通株式会社 | ウィンドウ関係の識別アイコン付木構造一覧表示方法及び装置 |
WO1997009661A1 (de) * | 1995-09-05 | 1997-03-13 | Siemens Aktiengesellschaft | Verfahren zum erzeugen und abspeichern eines aus befehlen bestehenden anwenderprogramms für eine speicherprogrammierbare steuerung und betriebsverfahren für eine speicherprogrammierbare steuerung |
JP3109421B2 (ja) * | 1995-09-08 | 2000-11-13 | 富士ゼロックス株式会社 | 図表処理装置 |
US6026362A (en) * | 1995-09-11 | 2000-02-15 | Compaq Computer Corporation | Tool and method for diagnosing and correcting errors in a computer program |
US6016474A (en) * | 1995-09-11 | 2000-01-18 | Compaq Computer Corporation | Tool and method for diagnosing and correcting errors in a computer program |
US5748878A (en) * | 1995-09-11 | 1998-05-05 | Applied Microsystems, Inc. | Method and apparatus for analyzing software executed in embedded systems |
US5745386A (en) * | 1995-09-25 | 1998-04-28 | International Business Machines Corporation | Timing diagram method for inputting logic design parameters to build a testcase for the logic diagram |
US6006190A (en) * | 1997-04-28 | 1999-12-21 | Tartaroukos Llc | Computer implemented method and a computer system for enforcing software licenses |
KR100248376B1 (ko) | 1997-10-28 | 2000-03-15 | 정선종 | 동적-비주얼 통합 병렬 디버깅 장치 및 디버깅 방법 |
US6077312A (en) * | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6378124B1 (en) | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread synchronization control points |
US6973417B1 (en) | 1999-11-05 | 2005-12-06 | Metrowerks Corporation | Method and system for simulating execution of a target program in a simulated target system |
US20030131146A1 (en) * | 2002-01-09 | 2003-07-10 | International Business Machines Corporation | Interactive monitoring and control of computer script commands in a network environment |
JP4727984B2 (ja) * | 2002-06-04 | 2011-07-20 | インフィニオン テクノロジーズ アーゲー | 漏洩防止性を有するプログラム分割システム、プログラム分割方法、プログラム分割コンピュータプログラムプロダクト |
US8069439B2 (en) * | 2006-03-30 | 2011-11-29 | Microsoft Corporation | Framework for modeling continuations in workflows |
US8819641B1 (en) * | 2006-04-27 | 2014-08-26 | Epic Games, Inc. | Program state reversing software development tool |
US8429613B2 (en) | 2006-10-31 | 2013-04-23 | Microsoft Corporation | Stepping and application state viewing between points |
US7966309B2 (en) | 2007-01-17 | 2011-06-21 | Google Inc. | Providing relevance-ordered categories of information |
US8122050B2 (en) * | 2008-04-16 | 2012-02-21 | International Business Machines Corporation | Query processing visualization system and method of visualizing query processing |
US8589867B2 (en) | 2010-06-18 | 2013-11-19 | Microsoft Corporation | Compiler-generated invocation stubs for data parallel programming model |
US20110314256A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Data Parallel Programming Model |
US9836707B2 (en) * | 2010-08-03 | 2017-12-05 | Sap Se | Visual pathfinder for product structure recursions |
US9003371B2 (en) * | 2010-12-30 | 2015-04-07 | International Business Machines Corporation | Recursive method call representation in a plot view of method execution performance |
US20130191809A1 (en) * | 2012-01-25 | 2013-07-25 | Microsoft Corporation | Graphical representation of an order of operations |
US9595205B2 (en) * | 2012-12-18 | 2017-03-14 | Neuron Fuel, Inc. | Systems and methods for goal-based programming instruction |
US9129063B2 (en) * | 2013-05-14 | 2015-09-08 | Oracle International Corporation | Visualizing a computer program execution history |
JP6334862B2 (ja) * | 2013-07-22 | 2018-05-30 | 株式会社東芝 | プログラム情報表示システム、プログラム情報表示方法、プログラム、および、処理装置 |
KR101779646B1 (ko) | 2014-04-15 | 2017-09-19 | 엘에스산전 주식회사 | 쓰레드별 연산 감시 기능이 구비된 전력 계통 감시 및 제어 시스템 |
TWI537035B (zh) | 2014-10-31 | 2016-06-11 | 宏正自動科技股份有限公司 | 遊戲歷程記錄裝置、遊戲歷程記錄方法及遊戲歷程互動方法 |
JP6696821B2 (ja) * | 2016-04-26 | 2020-05-20 | Dmg森精機株式会社 | 工作機械 |
US10541042B2 (en) | 2018-04-23 | 2020-01-21 | Microsoft Technology Licensing, Llc | Level-crossing memory trace inspection queries |
US10592396B2 (en) * | 2018-04-23 | 2020-03-17 | Microsoft Technology Licensing, Llc | Memory validity states in time-travel debugging |
CN117951037B (zh) * | 2024-03-27 | 2024-06-18 | 武汉派呦科技有限公司 | 程序运行状态指示系统及实体代码积木块 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0614320B2 (ja) * | 1984-10-17 | 1994-02-23 | 株式会社日立製作所 | 図式プログラム・テスト方法 |
US5146559A (en) * | 1986-09-29 | 1992-09-08 | Hitachi, Ltd. | System for recognizing program constitution within a distributed processing system by collecting constitution messages generated by different processors |
US5165036A (en) * | 1989-01-31 | 1992-11-17 | Sharp Kabushiki Kaisha | Parallel processing development system with debugging device includes facilities for schematically displaying execution state of data driven type processor |
JPH02210556A (ja) * | 1989-02-10 | 1990-08-21 | Fujitsu Ltd | プログラム実行状態の視覚化装置 |
JPH02272645A (ja) * | 1989-04-14 | 1990-11-07 | Hitachi Ltd | プログラム・デバツグ支援方法 |
US5255385A (en) * | 1990-02-26 | 1993-10-19 | Hitachi, Ltd. | Method of testing program, and compiler and program testing tool for the method |
-
1991
- 1991-05-15 JP JP3110131A patent/JPH04337843A/ja active Pending
-
1992
- 1992-05-13 US US07/882,471 patent/US5375125A/en not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07302215A (ja) * | 1993-01-27 | 1995-11-14 | Internatl Business Mach Corp <Ibm> | プログラム実行アナライザのためのユーザ・インターフェース方法 |
JPH07160532A (ja) * | 1993-12-10 | 1995-06-23 | Nec Corp | トレース自動表示方式 |
JP2003162426A (ja) * | 2001-11-28 | 2003-06-06 | Hitachi Ltd | 複数cpuの協調デバッグ回路を備えるコンピュータシステム及びデバッグ方法 |
JP2003241998A (ja) * | 2002-02-14 | 2003-08-29 | Toshiba Corp | 制御構造抽出方法、ログ整形方法とそのためのプログラム |
JP2006146731A (ja) * | 2004-11-24 | 2006-06-08 | Ricoh Co Ltd | プログラム、記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置 |
JP2008052603A (ja) * | 2006-08-25 | 2008-03-06 | Canon Inc | 表編集装置及び表編集方法 |
US8402363B2 (en) | 2006-08-25 | 2013-03-19 | Canon Kabushiki Kaisha | Table editing apparatus and method thereof |
JP2010122785A (ja) * | 2008-11-18 | 2010-06-03 | Japan Research Institute Ltd | 情報処理装置、およびプログラム |
JP2016514318A (ja) * | 2013-03-13 | 2016-05-19 | インテル・コーポレーション | 性能及び正確性のためのマルチスレッドソフトウェアプログラムの記録された実行の視覚化 |
WO2019159397A1 (ja) * | 2018-02-15 | 2019-08-22 | 三菱電機株式会社 | ソフトウェア可視化装置、ソフトウェア可視化方法およびソフトウェア可視化プログラム |
JPWO2019159397A1 (ja) * | 2018-02-15 | 2020-10-22 | 三菱電機株式会社 | ソフトウェア可視化装置、ソフトウェア可視化方法およびソフトウェア可視化プログラム |
Also Published As
Publication number | Publication date |
---|---|
US5375125A (en) | 1994-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH04337843A (ja) | プログラム動作表示方法 | |
US6003143A (en) | Tool and method for diagnosing and correcting errors in a computer program | |
Reiss | Interacting with the FIELD environment | |
JP4448881B2 (ja) | コンピュータプログラムを発生する方法及びシステム | |
North et al. | Applications of graph visualization | |
US6016474A (en) | Tool and method for diagnosing and correcting errors in a computer program | |
Kreuseler et al. | A history mechanism for visual data mining | |
US4914568A (en) | Graphical system for modelling a process and associated method | |
JP4058118B2 (ja) | プログラム生成システム及び方法 | |
EP0785510B1 (en) | Program debugging system for debugging a program having a graphical user interface | |
US7587668B2 (en) | Using existing content to generate active content wizard executables for execution of tasks | |
CA2211478C (en) | Systems, methods and apparatus for generating and controlling display of medical images | |
CA2211373C (en) | Learn mode script generation in a medical imaging system | |
JPH08137646A (ja) | ダイアログ・ボックスの表示方法及びシステム | |
CA2211369C (en) | Cell overlap detection and correction in a medical imaging system | |
US5781905A (en) | Program generating method combining data item part with database manipulation part | |
JP3625084B2 (ja) | ソフトウエア部品の再利用システム | |
US5398313A (en) | Method for visual programming with aid of animation | |
Olsen Jr et al. | Research directions for user interface software tools | |
JP4675639B2 (ja) | データ処理システム、アプリケーションプログラムのカスタマイズパラメータを表示する方法およびコンピュータプログラム製品 | |
Bovey | A debugger for a graphical workstation | |
JPH03260742A (ja) | プログラムのトレース表示方法 | |
JP2585311B2 (ja) | プログラム作成方法 | |
JPH10247142A (ja) | プロセス制御プログラムのプログラミングシステムおよびプログラミング方法 | |
Zhao et al. | Live programming environment for deep learning with instant and editable neural network visualization |