JPS633347A - ル−プを含むプログラムの実行パス抽出方式 - Google Patents
ル−プを含むプログラムの実行パス抽出方式Info
- Publication number
- JPS633347A JPS633347A JP61145463A JP14546386A JPS633347A JP S633347 A JPS633347 A JP S633347A JP 61145463 A JP61145463 A JP 61145463A JP 14546386 A JP14546386 A JP 14546386A JP S633347 A JPS633347 A JP S633347A
- Authority
- JP
- Japan
- Prior art keywords
- program
- statement
- execution
- entry
- executed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はループを含むプログラムの実行パス抽出方式に
関する。
関する。
作成したプログラムが正常に動作するか否か等を調べる
方法の一つとして、そのプログラムを動作させたときの
実行パスを抽出し、抽出した実行パスからプログラムの
実行箇所を識別する方法が考えられる。
方法の一つとして、そのプログラムを動作させたときの
実行パスを抽出し、抽出した実行パスからプログラムの
実行箇所を識別する方法が考えられる。
従来、上述のようなプログラムの実行パスを抽出する方
式としては、プログラムの入口からプログラムの出口に
至る実行経路を実行パスとして抽出するものが知られて
いる。
式としては、プログラムの入口からプログラムの出口に
至る実行経路を実行パスとして抽出するものが知られて
いる。
しかし、上記従来の方式では、IF文と0070文とで
構成されるループを含まないプログラムの実行パスは抽
出することができたが、そのようなループを含むプログ
ラムの実行パスは無限側の実行パスを抽出せざるを得な
くなり、実際問題として実行パスの抽出ができないとい
う欠点があった。
構成されるループを含まないプログラムの実行パスは抽
出することができたが、そのようなループを含むプログ
ラムの実行パスは無限側の実行パスを抽出せざるを得な
くなり、実際問題として実行パスの抽出ができないとい
う欠点があった。
本発明はこのような従来の欠点を解決したもので、その
目的は、ループを含むプログラムであってもプログラム
の全ての実行文を最低1回通過するような実行パスを抽
出する方式を提供することにある。
目的は、ループを含むプログラムであってもプログラム
の全ての実行文を最低1回通過するような実行パスを抽
出する方式を提供することにある。
本発明は、ループを含むプログラムにおいて、プログラ
ムの入口から既に実行された文を再び実行しようとする
ことによりプログラムのループを検出し、プログラムの
入口からプログラムの個々のループの検出までの実行経
路およびプログラムの入口からループを介することなく
プログラムの出口に至るまでの全ての実行経路を実行パ
スとして抽出すれば有限個の実行パスとなる点に鑑みて
為されたものであり、本発明の実行パス抽出方式プログ
ラムの文の実行順序およびプログラムのある文から次に
実行される文に至る経路の実行の有無に関する情報とが
格納されるプログラム実行順序テーブルと、 実行した文の文番号を実行順に保持するプログラムバス
テーブルと、 前記プログラムバステーブルに保持された文番号の個数
を保持するプログラムバステーブルカウンタと、 前記プログラムバステーブルに保持されている文番号で
示される文の実行回数を保持するプログラム実行回数テ
ーブルと、 プログラムの入口の文の文番号を保持するプログラム入
口文番号インジケータと、 プログラムの出口の文の文番号を保持するプログラム出
口文番号インジケータと、 前記プログラム実行順序テーブルに従ってプログラムの
入口から実行経路を追跡し、プログラムの入口から既に
実行された文を再び実行しようとすることによりプログ
ラムのループを検出し、プログラムの入口からプログラ
ムの個々のループの検出までの実行経路およびプログラ
ムの入口からループを介することなくプログラムの出口
に至るまでの全ての実行経路を文の実行順序に並べ、文
番号の列で表現された実行パスを抽出する手段とで構成
される。
ムの入口から既に実行された文を再び実行しようとする
ことによりプログラムのループを検出し、プログラムの
入口からプログラムの個々のループの検出までの実行経
路およびプログラムの入口からループを介することなく
プログラムの出口に至るまでの全ての実行経路を実行パ
スとして抽出すれば有限個の実行パスとなる点に鑑みて
為されたものであり、本発明の実行パス抽出方式プログ
ラムの文の実行順序およびプログラムのある文から次に
実行される文に至る経路の実行の有無に関する情報とが
格納されるプログラム実行順序テーブルと、 実行した文の文番号を実行順に保持するプログラムバス
テーブルと、 前記プログラムバステーブルに保持された文番号の個数
を保持するプログラムバステーブルカウンタと、 前記プログラムバステーブルに保持されている文番号で
示される文の実行回数を保持するプログラム実行回数テ
ーブルと、 プログラムの入口の文の文番号を保持するプログラム入
口文番号インジケータと、 プログラムの出口の文の文番号を保持するプログラム出
口文番号インジケータと、 前記プログラム実行順序テーブルに従ってプログラムの
入口から実行経路を追跡し、プログラムの入口から既に
実行された文を再び実行しようとすることによりプログ
ラムのループを検出し、プログラムの入口からプログラ
ムの個々のループの検出までの実行経路およびプログラ
ムの入口からループを介することなくプログラムの出口
に至るまでの全ての実行経路を文の実行順序に並べ、文
番号の列で表現された実行パスを抽出する手段とで構成
される。
実行経路の追跡は、プログラム入口文番号インジケータ
に設定されたプログラム入口文から開始されて順次実行
された文の番号がプログラムバステーブルに格納され、
プログラム実行回数テーブルに格納した最後の文番号の
実行回数が「2」となったことでループの検出が行なわ
れ、そのときプログラムバステーブルに格納された文番
号列が、プログラムの入口からプログラムのあるループ
の検出時点までの実行経路を示す一つの実行パスとして
抽出される。また、プログラムバステーブルの最後に格
納された文番号がプログラム出口文番号インジケータに
設定されたプログラム出口文番号と等しくなったときに
プログラムバステーブルに格納された文番号列が、プロ
グラムの入口からループを介することなくプログラムの
出口に至った時点までの実行パスとして抽出される。
に設定されたプログラム入口文から開始されて順次実行
された文の番号がプログラムバステーブルに格納され、
プログラム実行回数テーブルに格納した最後の文番号の
実行回数が「2」となったことでループの検出が行なわ
れ、そのときプログラムバステーブルに格納された文番
号列が、プログラムの入口からプログラムのあるループ
の検出時点までの実行経路を示す一つの実行パスとして
抽出される。また、プログラムバステーブルの最後に格
納された文番号がプログラム出口文番号インジケータに
設定されたプログラム出口文番号と等しくなったときに
プログラムバステーブルに格納された文番号列が、プロ
グラムの入口からループを介することなくプログラムの
出口に至った時点までの実行パスとして抽出される。
第1図は本発明を適用した情報処理装置のブロック図で
あり、10は中央処理装置、11は主記憶装置である。
あり、10は中央処理装置、11は主記憶装置である。
主記憶装置11には、これから実行パスを抽出しようと
するプログラム12と、実行パスの抽出処理を行なう実
行パス抽出手段13と、プログラム実行順序テーブル1
4と、プログラムパスチープルカウンタ15と、プログ
ラムバステーブル16と、プログラム実行回数テーブル
17と、プログラム入口文番号インジケータ18と、プ
ログラム出口文番号インジケータ19とが格納されてい
る。
するプログラム12と、実行パスの抽出処理を行なう実
行パス抽出手段13と、プログラム実行順序テーブル1
4と、プログラムパスチープルカウンタ15と、プログ
ラムバステーブル16と、プログラム実行回数テーブル
17と、プログラム入口文番号インジケータ18と、プ
ログラム出口文番号インジケータ19とが格納されてい
る。
上記プログラム実行順序テーブル14は、プログラム1
2に含まれる文の実行順序とプログラム12のある文か
ら次に実行される文に至る経路の実行の有無に関する情
報とを保持するテーブルであり、プログラムバステーブ
ル16は、プログラム12において実行された文の文番
号を実行順にそのエントリ16−1〜16−nに保持す
るテーブルである。また、プログラムバステーブルカウ
ンタ15は、プログラムバステーブル16に現在幾つの
文番号が保持されているかの情報を保持するカウンタで
あり、プログラム実行回数テーブル17は、プログラム
バステーブル16に保持されている各文番号で示される
文の実行回数をそのエントリ17−1〜17−nに保持
するテーブルである。更に、プログラム入口文番号イン
ジケータ18は、プログラム12の入口の文の文番号を
保持する手段、プログラム出口文番号インジケータ19
は、プログラム12の出口の文の文番号を保持する手段
である。
2に含まれる文の実行順序とプログラム12のある文か
ら次に実行される文に至る経路の実行の有無に関する情
報とを保持するテーブルであり、プログラムバステーブ
ル16は、プログラム12において実行された文の文番
号を実行順にそのエントリ16−1〜16−nに保持す
るテーブルである。また、プログラムバステーブルカウ
ンタ15は、プログラムバステーブル16に現在幾つの
文番号が保持されているかの情報を保持するカウンタで
あり、プログラム実行回数テーブル17は、プログラム
バステーブル16に保持されている各文番号で示される
文の実行回数をそのエントリ17−1〜17−nに保持
するテーブルである。更に、プログラム入口文番号イン
ジケータ18は、プログラム12の入口の文の文番号を
保持する手段、プログラム出口文番号インジケータ19
は、プログラム12の出口の文の文番号を保持する手段
である。
プログラム12の実行パスを抽出するに際しては、先ず
プログラム実行順序テーブル14.プログラムバステー
ブルカウンタ15.プログラムバステーブル16.プロ
グラム実行回数テーブル17.プログラム入口文番号イ
ンジケータ18.プログラム出口文番号インジケータ1
9の内容を初期状態に設定する。
プログラム実行順序テーブル14.プログラムバステー
ブルカウンタ15.プログラムバステーブル16.プロ
グラム実行回数テーブル17.プログラム入口文番号イ
ンジケータ18.プログラム出口文番号インジケータ1
9の内容を初期状態に設定する。
ここで、プログラム実行順序テーブル14の初期状態は
、プログラム12の各文の実行順序を設定し且つプログ
ラム12のある文から次に実行される文に至る経路の実
行の有無情報を無しに設定することで行なわれ、他のテ
ーブルやカウンタ等の初期情報は内容をクリアして例え
ば“0゛とすることで行なわれる。このような初期設定
を終えると、実行パス抽出手段13を起動する。
、プログラム12の各文の実行順序を設定し且つプログ
ラム12のある文から次に実行される文に至る経路の実
行の有無情報を無しに設定することで行なわれ、他のテ
ーブルやカウンタ等の初期情報は内容をクリアして例え
ば“0゛とすることで行なわれる。このような初期設定
を終えると、実行パス抽出手段13を起動する。
第2図は実行パス抽出手段13が行なう処理の一例を示
す流れ図であり、5l−S4.3は各ステップを示す、
各ステップで行なわれる内容は次の通りである。
す流れ図であり、5l−S4.3は各ステップを示す、
各ステップで行なわれる内容は次の通りである。
(ステップSl)
プログラム12の入口の文の文番号をプログラム入口文
番号インジケータ18に設定する。これは、初期設定さ
れたプログラム実行順序テーブル14をサーチし、直前
に実行される文を持たない文番号をプログラム入口文番
号インジケータ18に設定することで可能である。
番号インジケータ18に設定する。これは、初期設定さ
れたプログラム実行順序テーブル14をサーチし、直前
に実行される文を持たない文番号をプログラム入口文番
号インジケータ18に設定することで可能である。
(ステップS2)
プログラム12の出口の文の文番号をプログラム出口文
番号インジケータ19に設定する。これは、初期設定さ
れたプログラム実行順序テーブル14をサーチし、次に
実行する文を持たない文番号をプログラム出口文番号イ
ンジケータ19に設定することで可能である。
番号インジケータ19に設定する。これは、初期設定さ
れたプログラム実行順序テーブル14をサーチし、次に
実行する文を持たない文番号をプログラム出口文番号イ
ンジケータ19に設定することで可能である。
(ステップS3)
プログラム入口文番号インジケータ18に設定されてい
る文の番号に対し登録操作を行なう。ここで登録操作と
は、(1)プログラムバステーブルカウンタ15の値を
1だけ増加すること、(2)そのプログラムバステーブ
ルカウンタ15の値mで示されるプログラムバステーブ
ル16のエントリ16−Illにそのプログラムバステ
ーブルカウンタ15の値と同一番号の文番号を設定する
こと、(3)この設定した文番号Xで示されるプログラ
ム実行回数テーブル17のエントリ17−xの値を1だ
け増加することをいう (以下同じ)。
る文の番号に対し登録操作を行なう。ここで登録操作と
は、(1)プログラムバステーブルカウンタ15の値を
1だけ増加すること、(2)そのプログラムバステーブ
ルカウンタ15の値mで示されるプログラムバステーブ
ル16のエントリ16−Illにそのプログラムバステ
ーブルカウンタ15の値と同一番号の文番号を設定する
こと、(3)この設定した文番号Xで示されるプログラ
ム実行回数テーブル17のエントリ17−xの値を1だ
け増加することをいう (以下同じ)。
(ステップS4)
プログラムバステーブルカウンタ15の値が「1」以上
か否かを判別し、「1」以上であればステップ84.1
からステップ84.3までを繰返し、そうでなければ終
了する。
か否かを判別し、「1」以上であればステップ84.1
からステップ84.3までを繰返し、そうでなければ終
了する。
(ステップ34.1)
プログラムバステーブル16の最後に保持されている文
の番号+16− (ラスト)の値)がプログラム出口文
番号インジケータ19の値(6)と−敗するか又はプロ
グラムバステーブル16の最後に保持されている文の番
号に対応するプログラム実行回数テーブル17の値t1
7− (16−ラスト)の値)が「2」であるか否かを
判別し、何れか一方が満足されたときはステップS4.
1.1からステップS4゜1.3.2までを行ない、そ
うでなければステ7プ84.2からステップ84.3ま
でを行なう。
の番号+16− (ラスト)の値)がプログラム出口文
番号インジケータ19の値(6)と−敗するか又はプロ
グラムバステーブル16の最後に保持されている文の番
号に対応するプログラム実行回数テーブル17の値t1
7− (16−ラスト)の値)が「2」であるか否かを
判別し、何れか一方が満足されたときはステップS4.
1.1からステップS4゜1.3.2までを行ない、そ
うでなければステ7プ84.2からステップ84.3ま
でを行なう。
(ステップS4.1.1)
プログラムバステーブル16に保持されている文の番号
を文の番号の保持順に抽出して並べたものを1本の実行
パスとして抽出する。
を文の番号の保持順に抽出して並べたものを1本の実行
パスとして抽出する。
(ステップS4.1.2)
プログラムバステーブル16の最後に保持されている文
の番号に対し削除操作を行なう。ここで削除操作とは、
(1)プログラムバステーブル16の最後に保持されて
いる文の番号iで示されるプログラム実行回数テーブル
17のエントリ17−1の値を「1」だけ減算する、(
2)プログラムバステーブルカウンタ15の値を「1」
だけ減算する、(3)プログラムバステーブル16の最
後に保持されている文の番号iを削除することをいう
(以下同じ)。
の番号に対し削除操作を行なう。ここで削除操作とは、
(1)プログラムバステーブル16の最後に保持されて
いる文の番号iで示されるプログラム実行回数テーブル
17のエントリ17−1の値を「1」だけ減算する、(
2)プログラムバステーブルカウンタ15の値を「1」
だけ減算する、(3)プログラムバステーブル16の最
後に保持されている文の番号iを削除することをいう
(以下同じ)。
(ステップS4.1.3)
プログラムバステーブルカウンタ15の値が「1」以上
で、且つ、プログラムバステーブル16の最後の文番号
の文+14 (16−ラスト))についてこれに続く全
ての文が実行されているか否か(◎は実行済、Oは未実
行を示す)をプログラム実行順序テーブル14の内容等
から判別し、この条件が満足したときステップS4.1
.3.1からステップS4.1゜3.2までを行ない、
そうでないときはステップS4へ戻る。
で、且つ、プログラムバステーブル16の最後の文番号
の文+14 (16−ラスト))についてこれに続く全
ての文が実行されているか否か(◎は実行済、Oは未実
行を示す)をプログラム実行順序テーブル14の内容等
から判別し、この条件が満足したときステップS4.1
.3.1からステップS4.1゜3.2までを行ない、
そうでないときはステップS4へ戻る。
(ステップS4.1.3.1)
プログラムバステーブル16の最後に保持されている文
番号の文について、プログラム実行順序テーブル14に
その次の文を実行済であることを示す情報を未実行に変
更する。
番号の文について、プログラム実行順序テーブル14に
その次の文を実行済であることを示す情報を未実行に変
更する。
(ステップS4.1.3.2)
プログラムバステーブル16の最後に保持されている文
の番号に対し削除操作を行なう。
の番号に対し削除操作を行なう。
(ステップ34.2)
プログラムバステーブル16の最後に保持されている文
番号の文の次に実行する未実行の文の番号をプログラム
実行順序テーブル14から選択し、その未実行の情報を
実行済に変更する。
番号の文の次に実行する未実行の文の番号をプログラム
実行順序テーブル14から選択し、その未実行の情報を
実行済に変更する。
(ステップ34.3)
ステップ84.2で選択された「次に実行される文の番
号」に対し、登録操作を行なう。
号」に対し、登録操作を行なう。
次に、プログラム12が例えば第3図に示すように、そ
れぞれ文番号■、■、■、■が付された4個の文からな
り、矢印の向きに従って動作する場合を例にとり、本実
施例の動作を説明する。
れぞれ文番号■、■、■、■が付された4個の文からな
り、矢印の向きに従って動作する場合を例にとり、本実
施例の動作を説明する。
先ず、実行パス抽出手段13を起動すみ前に、プログラ
ム実行順序テーブル14の内容を第4図に示すように初
期設定する。ここで、O印は、O印に対応する「文の番
号」で示される文の次に実行される文がその○印に対応
する「次に実行される文の番号」で示された文であるこ
とを示している。
ム実行順序テーブル14の内容を第4図に示すように初
期設定する。ここで、O印は、O印に対応する「文の番
号」で示される文の次に実行される文がその○印に対応
する「次に実行される文の番号」で示された文であるこ
とを示している。
また、プログラムバステーブルカウンタ15.プログラ
ムバステーブル16.プログラム実行回数テーブル17
の内容をクリアして例えば“0”に初期設定する。
ムバステーブル16.プログラム実行回数テーブル17
の内容をクリアして例えば“0”に初期設定する。
上記のような初期設定の後、実行パス抽出手段13を起
動すると、第2図に示した処理が例えば第5図の上部に
示すステップの順で実行され、プログラム実行順序テー
ブル14における○印(a、b。
動すると、第2図に示した処理が例えば第5図の上部に
示すステップの順で実行され、プログラム実行順序テー
ブル14における○印(a、b。
c、d)、プログラムパスチープルカウンタ15゜プロ
グラムバステーブル16の各エントリ、プログラム実行
回数テーブル17の各エントリ、プログラム入口文番号
インジケータ18.プログラム出口文番号インジケータ
19は下記のようにしてそれぞれ第5図に示すように変
更されていく。
グラムバステーブル16の各エントリ、プログラム実行
回数テーブル17の各エントリ、プログラム入口文番号
インジケータ18.プログラム出口文番号インジケータ
19は下記のようにしてそれぞれ第5図に示すように変
更されていく。
(ステップSl)
実行パス抽出手段13が実行を開始して、ステップSl
を行なうと、プログラム入口文番号インジケータ18に
プログラム実行順序テーブル14の○印が一つも付与さ
れていない「次に実行される文の番号」■が選択され、
これがプログラム入口文番号インジケータ18に設定さ
れる。
を行なうと、プログラム入口文番号インジケータ18に
プログラム実行順序テーブル14の○印が一つも付与さ
れていない「次に実行される文の番号」■が選択され、
これがプログラム入口文番号インジケータ18に設定さ
れる。
(ステップS2)
プログラム実行順序テーブル14のO印が一つも付与さ
れていない「文の番号」■が選択されてこれがプログラ
ム出口文番号インジケータ19に設定される。このとき
の状態を第4図に示す。
れていない「文の番号」■が選択されてこれがプログラ
ム出口文番号インジケータ19に設定される。このとき
の状態を第4図に示す。
(ステップS3)
プログラム入口文番号インジケータ18に設定されてい
る文番号に対し登録操作が行なわれ、プログラムバステ
ーブルカウンタ15の値は「0」からrlJへ変更され
、プログラムバステーブル16のエントリ16−1に文
番号■が設定され、プログラム実行回数テーブル17の
エントリ17−1の値がrOJから「1」へ増加される
。
る文番号に対し登録操作が行なわれ、プログラムバステ
ーブルカウンタ15の値は「0」からrlJへ変更され
、プログラムバステーブル16のエントリ16−1に文
番号■が設定され、プログラム実行回数テーブル17の
エントリ17−1の値がrOJから「1」へ増加される
。
(ステップ34)
プログラムバステーブルカウンタ15の値が「1」で、
1以上であることから次にステップ34.1が実行され
る。
1以上であることから次にステップ34.1が実行され
る。
(ステップ34.1)
プログラムバステーブル16の最後に保持されている文
番号は■でプログラム出口文番号インジケータ19の設
定値■と相違し、且つプログラムバステーブル16に最
後に保持された文番号■に対応するプログラム実行回数
テーブル17のエントリ17−1の値は「1」で「2」
ではないので、次にステップ84.2が実行される。
番号は■でプログラム出口文番号インジケータ19の設
定値■と相違し、且つプログラムバステーブル16に最
後に保持された文番号■に対応するプログラム実行回数
テーブル17のエントリ17−1の値は「1」で「2」
ではないので、次にステップ84.2が実行される。
(ステップ34.2)
プログラムバステーブル16の最後に保持されている文
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄のうち、Q印を持つ「次に実行される
文の番号」■が選択され、その○印が◎印に変更される
。
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄のうち、Q印を持つ「次に実行される
文の番号」■が選択され、その○印が◎印に変更される
。
(ステップ34.3)
ステップ34.2で選択された文番号■に対し登録操作
が行なわれ、プログラムバステーブルカウンタエ5の値
は「1」から「2」へ変更され、プログラムバステーブ
ル16のエントリ16−2に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−2の値が
「0」から「1」へ増加される。
が行なわれ、プログラムバステーブルカウンタエ5の値
は「1」から「2」へ変更され、プログラムバステーブ
ル16のエントリ16−2に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−2の値が
「0」から「1」へ増加される。
(ステップ34)
プログラムパスチープルカウンタ15の値が「2」で、
1以上であることから次にステップ84.1が実行され
る。
1以上であることから次にステップ84.1が実行され
る。
(ステップ34.1)
プログラムバステーブル16の最後に保持されている文
番号は■でプログラム出口文番号インジケータ190役
定値■と相違し、且つ、プログラム実行回数テーブル1
7のエントリ17−2の値は「1」で「2」ではないの
で、次にステップ84.2が実行される。
番号は■でプログラム出口文番号インジケータ190役
定値■と相違し、且つ、プログラム実行回数テーブル1
7のエントリ17−2の値は「1」で「2」ではないの
で、次にステップ84.2が実行される。
(ステップ34.2)
プログラムバステーブル16の最後に保持されている文
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄のうち、O印を持つ「次に実行される
文の番号」■が選択され、その○印が◎印に変更される
。
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄のうち、O印を持つ「次に実行される
文の番号」■が選択され、その○印が◎印に変更される
。
(ステップ34.3)
ステップ84.2で選択された文番号■に対し登録操作
が行なわれ、プログラムバステーブルカウンタ15の値
は「2」からr3Jへ変更され、プログラムバステーブ
ル16のエントリ16−3に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−3の値が
「0」から「1」へ増加される。
が行なわれ、プログラムバステーブルカウンタ15の値
は「2」からr3Jへ変更され、プログラムバステーブ
ル16のエントリ16−3に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−3の値が
「0」から「1」へ増加される。
(ステップS4)
プログラムパスチープルカウンタ15の値が「3」で、
1以上であることから次にステップ84.1が実行され
る。
1以上であることから次にステップ84.1が実行され
る。
(ステップ34.1)
プログラムバステーブル16の最後に保持されている文
番号は■でプログラム出口文番号インジケータエ9の設
定値■と相違し、且つ、プログラム実行回数テーブル1
7のエントリ17−3の値は「1」で「2」ではないの
で、次にステップ34.2が実行される。
番号は■でプログラム出口文番号インジケータエ9の設
定値■と相違し、且つ、プログラム実行回数テーブル1
7のエントリ17−3の値は「1」で「2」ではないの
で、次にステップ34.2が実行される。
(ステップs4.2)
プログラムバステーブル16の最後に保持されている文
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の碌のうち、○印を持つ「次に実行される
文の番号」■が選択され、そのO印が◎印に変更される
。
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の碌のうち、○印を持つ「次に実行される
文の番号」■が選択され、そのO印が◎印に変更される
。
(ステップ34.3)
ステップ34.2で選択された文番号■に対し登録操作
が行なわれ、プログラムバステーブルカウンタ15の値
は「3」から「4」へ変更され、プログラムバステーブ
ル16のエントリ16−2に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−2の値が
「1」から「2」へ増加される。
が行なわれ、プログラムバステーブルカウンタ15の値
は「3」から「4」へ変更され、プログラムバステーブ
ル16のエントリ16−2に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−2の値が
「1」から「2」へ増加される。
(ステップS4)
プログラムバステーブルカウンタ15の値が「3」で、
1以上であることから次にステップ34.1が実行され
る。
1以上であることから次にステップ34.1が実行され
る。
(ステップ54.1)
プログラムバステーブル16の最後に保持されている文
番号は■でプログラム出口文番号インジケータ19の設
定値■と相違するが、プログラム実行回数テーブル17
のエントリ17−2に「2」が格納されているので、次
にステップS4.1.1が実行される。
番号は■でプログラム出口文番号インジケータ19の設
定値■と相違するが、プログラム実行回数テーブル17
のエントリ17−2に「2」が格納されているので、次
にステップS4.1.1が実行される。
(ステップS4.1.1)
プログラムバステーブル16に保持されている文の番号
を、文の番号の保持類に抽出して並べたもの(■−■−
■−〇)を一つの実行パスとして抽出する。なお、この
ときのプログラム実行順序テーブル14.プログラムバ
スチープルカウンタ15゜プログラムバステーブル16
.プログラム実行回数テーブル17.プログラム入口文
番号インジケータ18、プログラム出口文番号インジケ
ータ19の状態を第6図に示す。
を、文の番号の保持類に抽出して並べたもの(■−■−
■−〇)を一つの実行パスとして抽出する。なお、この
ときのプログラム実行順序テーブル14.プログラムバ
スチープルカウンタ15゜プログラムバステーブル16
.プログラム実行回数テーブル17.プログラム入口文
番号インジケータ18、プログラム出口文番号インジケ
ータ19の状態を第6図に示す。
(ステップS4.1.2)
プログラムバステーブル16の最後に保持されている文
の番号■に対し削除操作を行なう。これにより、プログ
ラムバステーブルカウンタ15の値は「4」から「3」
へ変更され、プログラムバステーブル16のエントリ1
6−4から文番号■が削除され、。
の番号■に対し削除操作を行なう。これにより、プログ
ラムバステーブルカウンタ15の値は「4」から「3」
へ変更され、プログラムバステーブル16のエントリ1
6−4から文番号■が削除され、。
プログラム実行回数テーブル17のエントリ17=2の
値が「2」から「1」へ減少される。
値が「2」から「1」へ減少される。
(ステップS4.1.3)
プログラムバステーブルカウンタ15の値は「3」で2
以上であり、且つ、プログラムバステーブル16の最後
の文番号■に対応するプログラム実行順序テーブル14
の「文の番号」■の欄がすべて◎印なので、ステップS
4.1.3.1が実行される。
以上であり、且つ、プログラムバステーブル16の最後
の文番号■に対応するプログラム実行順序テーブル14
の「文の番号」■の欄がすべて◎印なので、ステップS
4.1.3.1が実行される。
(ステップS4.1.3.1)
プログラムバステーブル16の最後に保持されている文
の番号■に対応するプログラム実行順序テーブル14の
「文の番号」■の欄の◎印を○印に変更する。
の番号■に対応するプログラム実行順序テーブル14の
「文の番号」■の欄の◎印を○印に変更する。
(ステップS4.1.3.2)
プログラムバステーブル16の最後に保持されている文
の番号■に対し削除操作を行なう、これにより、プログ
ラムバステーブルカウンタ15の値は「3」から「2」
へ変更され、プログラムバステーブル16のエントリ1
6−3から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−3の値が「1」から「0」
へ減少される。
の番号■に対し削除操作を行なう、これにより、プログ
ラムバステーブルカウンタ15の値は「3」から「2」
へ変更され、プログラムバステーブル16のエントリ1
6−3から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−3の値が「1」から「0」
へ減少される。
(ステップS4.1.3)
プログラムバステーブルカウンタ15の値は「2」で2
以上であるが、プログラムバステーブル16の最後の文
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄がすべて◎印でないので、ステップS
4が実行される。
以上であるが、プログラムバステーブル16の最後の文
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄がすべて◎印でないので、ステップS
4が実行される。
(ステップS4)
プログラムバステーブルカウンタ15の値が「2」で、
1以上であることから次にステップ84.1が実行され
る。
1以上であることから次にステップ84.1が実行され
る。
(ステップ34.1)
プログラムバステーブル16の最後に保持されている文
番号は■でプログラム出口文番号インジケータ19の設
定値■と相違し、且つ、プログラム実行回数テーブル1
7のエントリ17−2の値は「1」で「2」ではないの
で、次にステップS4.2が実行される。
番号は■でプログラム出口文番号インジケータ19の設
定値■と相違し、且つ、プログラム実行回数テーブル1
7のエントリ17−2の値は「1」で「2」ではないの
で、次にステップS4.2が実行される。
(ステップ34.2)
プログラムバステーブル16の最後に保持されている文
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄のうち、O印を持つ「次に実行される
文の番号」■が選択され、そのQ印が◎印に変更される
。
番号■に対応するプログラム実行順序テーブル14の「
文の番号」■の欄のうち、O印を持つ「次に実行される
文の番号」■が選択され、そのQ印が◎印に変更される
。
(ステップ34.3)
ステップ84.2で選択された文番号■に対し登録操作
が行なわれ、プログラムバステーブルカウンタ15の値
は「2」から「3]へ変更され、プログラムバステーブ
ル16のエントリ16−3に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−4の値が
「0」から「l」へ増加される。
が行なわれ、プログラムバステーブルカウンタ15の値
は「2」から「3]へ変更され、プログラムバステーブ
ル16のエントリ16−3に文番号■が設定され、プロ
グラム実行回数テーブル17のエントリ17−4の値が
「0」から「l」へ増加される。
(ステップS4)
プログラムバステーブルカウンタ15の値が「3」で、
1以上であることから次にステップS4,1が実行され
る。
1以上であることから次にステップS4,1が実行され
る。
(ステップ34.1)
プログラムバステーブル16の最後に保持されている文
番号は■でプログラム出口文番号インジケータ19の設
定値■と一致するので、次にステップS4.1.1が実
行される。
番号は■でプログラム出口文番号インジケータ19の設
定値■と一致するので、次にステップS4.1.1が実
行される。
(ステンブS4.1.1)
プログラムバステーブル16に保持されている文の番号
を、文の番号の保持順に抽出して並べたちの(■−■−
■)を一つの実行パスとして抽出する。
を、文の番号の保持順に抽出して並べたちの(■−■−
■)を一つの実行パスとして抽出する。
(ステップS4.1.2)
プログラムバステーブル16の最後に保持されている文
の番号■に対し削除操作を行なう。これにより、プログ
ラムパスチープルカウンタ15の値は「3」から「2」
へ変更され、プログラムバステーブル16のエントリ1
6〜3から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−4の値がrlJからrOJ
へ減少される。
の番号■に対し削除操作を行なう。これにより、プログ
ラムパスチープルカウンタ15の値は「3」から「2」
へ変更され、プログラムバステーブル16のエントリ1
6〜3から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−4の値がrlJからrOJ
へ減少される。
(ステンブS4.1゜3)
プログラムパスチープルカウンタ15の値は「2」で1
以上であり、且つ、プログラムバステーブル16の最後
の文番号■に対応するプログラム実行順序テーブル14
の「文の番号」■の欄がすべて◎印なので、ステップS
4.1.3.1が実行される。
以上であり、且つ、プログラムバステーブル16の最後
の文番号■に対応するプログラム実行順序テーブル14
の「文の番号」■の欄がすべて◎印なので、ステップS
4.1.3.1が実行される。
(ステップS4.1.3.1)
プログラムバステーブル16の最後に保持されている文
の番号■に対応するプログラム実行順序テーブル14の
「文の番号」■の欄の◎印を○印に変更する。
の番号■に対応するプログラム実行順序テーブル14の
「文の番号」■の欄の◎印を○印に変更する。
(ステップS4.1.3.2)
プログラムバステーブル16の最後に保持されている文
の番号■に対し削除操作を行なう、これにより、プログ
ラムバステーブルカウンタ15の値は「2」から「1」
へ変更され、プログラムバステーブル16のエントリ1
6−2から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−2の値がrlJから「OJ
へ減少される。
の番号■に対し削除操作を行なう、これにより、プログ
ラムバステーブルカウンタ15の値は「2」から「1」
へ変更され、プログラムバステーブル16のエントリ1
6−2から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−2の値がrlJから「OJ
へ減少される。
(ステップS4.1.3)
プログラムバステーブルカウンタ15の値は「1」で1
以上であり、且つ、プログラムバステーブル16の最後
の文番号■に対応するプログラム実行順序テーブル14
の「文の番号]■の欄がすべて◎印であるので、S4.
1.3.1が実行される。
以上であり、且つ、プログラムバステーブル16の最後
の文番号■に対応するプログラム実行順序テーブル14
の「文の番号]■の欄がすべて◎印であるので、S4.
1.3.1が実行される。
(ステップS4.L3.1)
プログラムバステーブル16の最後に保持されている文
の番号■に対応するプログラム実行順序テーブル14の
「文の番号」■の欄の◎印をO印に変更する。
の番号■に対応するプログラム実行順序テーブル14の
「文の番号」■の欄の◎印をO印に変更する。
(ステップS4.1.3.2)
プログラムバステーブル16の最後に保持されている文
の番号■に対し削除操作を行なう。これにより、プログ
ラムバステーブルカウンタ15の値は「1」から「0」
へ変更され、プログラムバステーブル16のエントリ1
6−1から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−1の値が「1」から「0」
へ減少される。
の番号■に対し削除操作を行なう。これにより、プログ
ラムバステーブルカウンタ15の値は「1」から「0」
へ変更され、プログラムバステーブル16のエントリ1
6−1から文番号■が削除され、プログラム実行回数テ
ーブル17のエントリ17−1の値が「1」から「0」
へ減少される。
(ステップS4.1.3)
プログラムパスチープルカウンタ15の値は「0」で1
以上でないので、S4が実行される。
以上でないので、S4が実行される。
(ステップ34)
プログラムパスチープルカウンタ15の値が「0」で、
1以上でないことから、実行パス抽出手段13の処理は
終了する。
1以上でないことから、実行パス抽出手段13の処理は
終了する。
以上のようにして、第3図の流れ図から■−■−■−■
及び■−■−■の2本の実行パスが抽出され、ループを
含むプログラムの実行パスを抽出できる。
及び■−■−■の2本の実行パスが抽出され、ループを
含むプログラムの実行パスを抽出できる。
以上説明したように、本発明によれば、プログラム0人
口から既に実行された文を再び実行しようとすることに
よりプログラムのループを検出し、プログラムの入口か
らプログラムの個々のループの検出までの実行経路およ
びプログラムの人口からループを介することなくプログ
ラムの出口に至るまでの全ての実行経路を実行パスとし
て抽出するものであるから、ループを含むプログラムで
あっても実行パスが有限個となり実行パスを抽出するこ
とができる。
口から既に実行された文を再び実行しようとすることに
よりプログラムのループを検出し、プログラムの入口か
らプログラムの個々のループの検出までの実行経路およ
びプログラムの人口からループを介することなくプログ
ラムの出口に至るまでの全ての実行経路を実行パスとし
て抽出するものであるから、ループを含むプログラムで
あっても実行パスが有限個となり実行パスを抽出するこ
とができる。
本発明は、実行済の実行パスの抽出、実行済の実行パス
の実行回数の集計によるプログラムの動作状況の把握等
、プログラムテストの分野に広く応用することが可能で
ある。
の実行回数の集計によるプログラムの動作状況の把握等
、プログラムテストの分野に広く応用することが可能で
ある。
第1図は本発明を適用した情報処理装置のブロック図、
第2図は実行パス抽出手段の処理例を示す流れ図、
第3図は実行パス抽出対象プログラムの一例を示す流れ
図、 第4図は第3図に対応するプログラム実行順序テーブル
14.プログラムパスチープルカウンタ15゜プログラ
ムバステーブル16.プログラム実行回数テーブル17
.プログラム入口文番号インジケータ18、プログラム
出口文番号インジケータ19の初期状態を示す実施例の
説明図、 第5図は第3図に対応するプログラム実行順序テーブル
14.プログラムバステーブルカウンタ15゜プログラ
ムバステーブル16.プログラム実行回数テーブル17
.プログラム入口文番号インジケータ18、プログラム
出口文番号インジケータ19の内容の変化例を示す本発
明の詳細な説明図および、第6図は第3図のプログラム
を■−■−■−〇の順に実行経路を追跡し、ループを検
出した時点におけるプログラム実行順序テーブル14.
プログラムパスチープルカウンタ15.プログラムテス
ト。 −プル16.プログラム実行回数テーブル17.プログ
ラム入口文番号インジケータ18.プログラム出口文番
号インジケータ19の状態を示す実施例の説明図である
。 図において、10は中央処理装置、11は主記憶装置、
12は実行パス抽出対象のプログラム、13は実行パス
抽出手段、14はプログラム実行順序テーブル、15は
プログラムパスチープルカウンタ、16はプログラムバ
ステーブル、17はプログラム実行回数テーブル、18
はプログラム入口文番号インジケータ、19はプログラ
ム出口文番号インジケータである。 実屓吟すのブロック図 殆1 図 実行パス抽出対象プログラムの −f!Jをテす流れ圏 第30 実於夕jの説明図 第 47 突於タリの説明図 第 6 z
図、 第4図は第3図に対応するプログラム実行順序テーブル
14.プログラムパスチープルカウンタ15゜プログラ
ムバステーブル16.プログラム実行回数テーブル17
.プログラム入口文番号インジケータ18、プログラム
出口文番号インジケータ19の初期状態を示す実施例の
説明図、 第5図は第3図に対応するプログラム実行順序テーブル
14.プログラムバステーブルカウンタ15゜プログラ
ムバステーブル16.プログラム実行回数テーブル17
.プログラム入口文番号インジケータ18、プログラム
出口文番号インジケータ19の内容の変化例を示す本発
明の詳細な説明図および、第6図は第3図のプログラム
を■−■−■−〇の順に実行経路を追跡し、ループを検
出した時点におけるプログラム実行順序テーブル14.
プログラムパスチープルカウンタ15.プログラムテス
ト。 −プル16.プログラム実行回数テーブル17.プログ
ラム入口文番号インジケータ18.プログラム出口文番
号インジケータ19の状態を示す実施例の説明図である
。 図において、10は中央処理装置、11は主記憶装置、
12は実行パス抽出対象のプログラム、13は実行パス
抽出手段、14はプログラム実行順序テーブル、15は
プログラムパスチープルカウンタ、16はプログラムバ
ステーブル、17はプログラム実行回数テーブル、18
はプログラム入口文番号インジケータ、19はプログラ
ム出口文番号インジケータである。 実屓吟すのブロック図 殆1 図 実行パス抽出対象プログラムの −f!Jをテす流れ圏 第30 実於夕jの説明図 第 47 突於タリの説明図 第 6 z
Claims (1)
- 【特許請求の範囲】 プログラムの文の実行順序およびプログラムのある文か
ら次に実行される文に至る経路の実行の有無に関する情
報が格納されるプログラム実行順序テーブルと、 実行した文の文番号を実行順に保持するプログラムバス
テーブルと、 前記プログラムバステーブルに保持された文番号の個数
を保持するプログラムバステーブルカウンタと、 前記プログラムバステーブルに保持されている文番号で
示される文の実行回数を保持するプログラム実行回数テ
ーブルと、 プログラムの入口の文の文番号を保持するプログラム入
口文番号インジケータと、 プログラムの出口の文の文番号を保持するプログラム出
口文番号インジケータと、 前記プログラム実行順序テーブルに従ってプログラムの
入口から実行経路を追跡し、プログラムの入口から既に
実行された文を再び実行しようとすることによりプログ
ラムのループを検出し、プログラムの入口からプログラ
ムの個々のループの検出までの実行経路およびプログラ
ムの入口からループを介することなくプログラムの出口
に至るまでの全ての実行経路を文の実行順に並べ、文番
号の列で表現された実行パスを抽出する手段とを具備し
、全ての実行文を最低1回通過させるようにしたことを
特徴とするループを含むプログラムの実行パス抽出方式
。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP61145463A JPS633347A (ja) | 1986-06-21 | 1986-06-21 | ル−プを含むプログラムの実行パス抽出方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP61145463A JPS633347A (ja) | 1986-06-21 | 1986-06-21 | ル−プを含むプログラムの実行パス抽出方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS633347A true JPS633347A (ja) | 1988-01-08 |
| JPH0447341B2 JPH0447341B2 (ja) | 1992-08-03 |
Family
ID=15385819
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP61145463A Granted JPS633347A (ja) | 1986-06-21 | 1986-06-21 | ル−プを含むプログラムの実行パス抽出方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS633347A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0283748A (ja) * | 1988-09-21 | 1990-03-23 | Hitachi Ltd | マイクロプログラム検証方法および装置 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57101953A (en) * | 1980-12-17 | 1982-06-24 | Hitachi Ltd | Program execution trace system |
| JPS607551A (ja) * | 1983-06-27 | 1985-01-16 | Fujitsu Ltd | プログラムブロツクトレ−ス方式 |
| JPS6177943A (ja) * | 1984-09-26 | 1986-04-21 | Hitachi Electronics Eng Co Ltd | プログラム通過アドレストレ−ス装置 |
-
1986
- 1986-06-21 JP JP61145463A patent/JPS633347A/ja active Granted
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57101953A (en) * | 1980-12-17 | 1982-06-24 | Hitachi Ltd | Program execution trace system |
| JPS607551A (ja) * | 1983-06-27 | 1985-01-16 | Fujitsu Ltd | プログラムブロツクトレ−ス方式 |
| JPS6177943A (ja) * | 1984-09-26 | 1986-04-21 | Hitachi Electronics Eng Co Ltd | プログラム通過アドレストレ−ス装置 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0283748A (ja) * | 1988-09-21 | 1990-03-23 | Hitachi Ltd | マイクロプログラム検証方法および装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0447341B2 (ja) | 1992-08-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5845064A (en) | Method for testing and verification of a CPU using a reference model | |
| KR920010475A (ko) | 병렬처리 장치 및 그의 병렬처리 방법 | |
| JPH02216545A (ja) | 実行履歴記憶装置 | |
| US4525803A (en) | Method for controlling the comparison to be effected between reference logical entities and logical entities issuing from a file | |
| JPS633347A (ja) | ル−プを含むプログラムの実行パス抽出方式 | |
| JP3109572B2 (ja) | 障害復旧装置、障害復旧方法および障害復旧用プログラムを記憶した記憶媒体 | |
| CN107391375A (zh) | 执行c25汇编语言时获取语句和分支覆盖率的方法 | |
| US20030018957A1 (en) | Debugger monitor with anticipatory highlights | |
| CN109313603B (zh) | 诊断数据采集 | |
| JP2731047B2 (ja) | プログラムのオペランドチェック方式 | |
| JPS6222153A (ja) | マイクロプロセツサの動作解析方法と装置 | |
| JPS62216047A (ja) | リグレツシヨン防止用テストケ−スの決定方式 | |
| JPH03131960A (ja) | 文字処理方法およびその装置 | |
| SU424149A1 (ru) | Устройство для управления повторениемкоманд | |
| JPS6326411B2 (ja) | ||
| JP2812289B2 (ja) | デバッグ装置およびそのデバッグ方法 | |
| JP3252510B2 (ja) | プログラム解析処理方法 | |
| JPH10214204A (ja) | デバッガー | |
| JPS6053892B2 (ja) | 処理装置 | |
| JPS6042968B2 (ja) | 情報処理装置 | |
| JPS6059448A (ja) | 表処理方法 | |
| JPH04134535A (ja) | マルチタスクプログラムの例外情報採取機構 | |
| JPS60204045A (ja) | プログラム実行区間検出方式 | |
| JPH03282835A (ja) | トランザクショントレース情報採取方式 | |
| JP2001265619A (ja) | データトレース方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |