JPH07121403A - プログラムのカバレージモニタを備えた計算機 - Google Patents

プログラムのカバレージモニタを備えた計算機

Info

Publication number
JPH07121403A
JPH07121403A JP5263347A JP26334793A JPH07121403A JP H07121403 A JPH07121403 A JP H07121403A JP 5263347 A JP5263347 A JP 5263347A JP 26334793 A JP26334793 A JP 26334793A JP H07121403 A JPH07121403 A JP H07121403A
Authority
JP
Japan
Prior art keywords
branch
interrupt
program
instruction
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5263347A
Other languages
English (en)
Inventor
Shigeo Takasaki
繁夫 高崎
Masahide Sato
雅英 佐藤
Kimitoshi Yamada
公稔 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP5263347A priority Critical patent/JPH07121403A/ja
Publication of JPH07121403A publication Critical patent/JPH07121403A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【構成】テスト対象プログラムの開始時にビットマップ
作成手段102により命令語列のビットマップ103を
作成し、プログラムの実行で発生する分岐成功割り込み
を取り込み、直前の分岐命令先アドレス104から分岐
命令アドレスまでのパスに当たるビットマップを更新す
る手段108でビットマップ103上にパスの通過を記
録し、通過した分岐命令については分岐成功割り込みを
抑止する分岐命令更新手段109でカバレージ情報収集
に伴うオーバーヘッドを削減する。 【効果】被測定プログラムのソース文を修正することな
く、カバレージ情報の収集が可能となり、長時間の測定
に伴うオーバーヘッドを削減することができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムパスの充分
性評価に用いるための実行状況を監視・記録する方法に
係り、特に、この監視・記録処理時間を短縮する方法に
関する。
【0002】
【従来の技術】プログラムテストでは効率的なテストケ
ースの作成と共に、テストケースの実行に伴うパスの網
羅性(カバレージ)を表す定量的な指標が必要である。
この指標としてはC0 やC1 カバレージ値が一般に使わ
れている。C0 カバレージは総ステップ数に対する実行
ステップ数比であり、またC1 カバレージは総パス数に
対する実行パス数比であり、特に、C1 はパス数で評価
するためC0 に比較し正当な評価となる。
【0003】カバレージ値を取得するカバレージモニタ
として従来は、被測定のプログラムに対し、プリプロセ
ッサを使って各パスの入り口にパス通過ビットをセット
する文を挿入し、被測定プログラムの実行終了後には、
その通過ビットを集計、カバレージ率の計算と共にソー
ス文との対応付けを行っていた。
【0004】この処理例を図2,図3に示す。図2はa
=bの時に処理Aを実行し、a≠bかつc=dの時に処
理Bを実行し、a≠bかつc≠dの時に処理Cを実行す
るプログラムである。このプログラムをカバレージ収集
のプリプロセッサに通すことにより、破線のステップ2
01〜204が挿入され、コンパイルされる。次に本プ
ログラムの実行開始時には、カバレージモニタの持つビ
ットマップ(BITMAP)テーブル(図3)内のエントリが割
り当てられる。ここでフィールド301はBITMAP
テーブルの容量であり、フィールド302はエントリの
長さを保持する。そして各測定プログラム毎のエントリ
303内の各ビットがプログラム内のパスに対応付けら
れており、プログラムを実行することでパス通過サイン
がBITMAPテーブル上に残されることになる。
【0005】
【発明が解決しようとする課題】このようなカバレージ
モニタ方式では、被測定プログラムをプリプロセッサを
通した再コンパイルが必要となり、ソースプログラムが
必要であること、またパス通過サインがBITMAPテ
ーブル上に記録された後も、同じパスを通過すればその
ステップが再度実行され、分岐比率の高い大規模プログ
ラムではパス通過処理のオーバーヘッドが大きく加算さ
れる。
【0006】
【課題を解決するための手段】本発明は上記課題を解決
するために、現在の多くの計算機システムに備えている
分岐成功割り込み機構を用いて、このカバレージの収集
を行い、さらに通過したパスについては分岐成功割り込
みを抑止することで、カバレージ収集に伴うオーバーヘ
ッドを削減しようとするものである。
【0007】その詳細な手段は、被測定プログラムの実
行前に命令語に一対一に対応したビットから構成される
ビットマップテーブルを作成するビットマップ作成手段
と、分岐命令の条件が成立して分岐成功割り込みが発生
した時にカバレージモニタ処理に制御を渡し、前記カバ
レージモニタ処理では、分岐先アドレスを格納する手段
と、‘分岐から分岐まで’の実行した命令語に当たるビ
ットマップを更新する手段からなる。ここで‘分岐か
ら’とは直前の分岐成功割り込みのターゲット(分岐
先)アドレスを意味し、‘分岐まで’とは現在の分岐命
令の命令アドレスを意味する。
【0008】ビットマップ作成手段では実行形式(ロー
ドモジュール)内の各サブルーチン(関数)の入口点ア
ドレスのリストより関数のサイズを計算し、命令語数を
得ることができる。
【0009】これはユニックス(UNIX)オペレーテ
ィングシステムではnmコマンドで得ることができ、さ
らにRISC(縮小命令セットコンピュータ)アーキテ
クチャで使われている固定長命令形式で関数のアドレス
範囲(テキストサイズ)から簡単に計算できる。
【0010】さらに各分岐命令には分岐割り込みを起こ
すか否かのマスクビットを備え、分岐成功割り込みが発
生した時に、前記割り込みの分岐先アドレスを調べ、分
岐先が前記関数の範囲内で、入り口点から分岐先までの
パスがすでに通過しているという条件が成立した場合、
前記分岐命令のマスクをオフにする手段と、分岐割り込
み制御部に前記マスクの判定ステップを加えることによ
り、同じパスを通過するために起こる分岐成功の繰り返
し割り込みを抑止するものである。
【0011】
【作用】被測定プログラムの実行で分岐条件が成功する
と分岐成功割り込みが発生し、カーネルの割り込み制御
部を通じてカバレージモニタに制御が渡り、分岐命令ア
ドレスと直前の分岐割り込み時に格納しておいた分岐先
アドレスまたは初期時点ではプログラムの入り口点アド
レスから、分岐から分岐までのアドレス範囲が得られ、
アドレス範囲分のビットマップテーブル内の対応箇所を
更新するビットマップ更新手段により、実行パスが記録
される。
【0012】さらに分岐先アドレスの条件が成立した場
合には分岐命令のマスク更新で、次の分岐条件成立時に
は割り込みが発生しなくなる。これにより被測定プログ
ラムの実行を長時間実行させることで通過パス数が増
え、分岐先アドレスの条件は緩和され、カバレージのた
めのオーバーヘッドは小さくなる。
【0013】
【実施例】図1は本発明のブロック図である。被測定プ
ログラムの命令語列(テキスト部)101はビットマップ
作成手段102により、命令語数分のビットマップテー
ブル103として作成される。その初期値は0である。
更に分岐先アドレス域104には測定プログラムの入り口
点アドレスを保持しておく。プログラムの実行時には被
測定プログラムの命令がフェッチされ、命令実行ユニッ
ト105で実行される。本命令が分岐命令でかつ分岐条
件が成立し、分岐成功割り込みがイネーブルであるとき
には、分岐割り込みの制御機構106により分岐成功割
り込みがカーネルプログラム内の割り込み制御部107
に報告される。このイネーブル表示はマシンの状態制御
レジスタ(PSW:Program Status Word )や制御レジ
スタ(Control Register)で管理される。そして割り込
み制御部はカバレージモニタのビットマップ更新手段1
08に制御を渡す。
【0014】ビットマップ更新手段108では、格納し
ておいた分岐先アドレス104と割り込み時の分岐命令
アドレスからビットマップテーブル103を更新し、更
に分岐先アドレス104の更新を行う。その後、分岐命
令更新手段109により被測定プログラム内の分岐命令
110のマスクフィールドを更新する。
【0015】この処理を図4ないし図8により詳述す
る。図4はプログラム例であり図2の処理と同等であ
る。この処理のコンパイル後の命令列を図5に示す。各
処理と命令語の対応は以下の通りである。
【0016】判定処理401:命令語501〜503 代入処理403:命令語504 判定処理402:命令語508〜510 代入処理404:命令語511 代入処理405:命令語506 残りの命令語505,507,512は出口を一箇所に
するための分岐命令である。
【0017】また各分岐命令内に示したn(513)は
分岐成功割り込みを発生させるか否かのマスク情報を表
す。このマスクは1ビットであれはオン/オフのスイッ
チとなるが複数ビットを用意すれば回数で管理すること
も可能になる。この場合、分岐命令の更新手段109に
おいて管理を行う。
【0018】これらの命令語数分のビットマップ103
がビットマップ作成手段102により確保され初期化さ
れる。エントリ104は分岐先アドレスを格納する格納
域でビットマップと同時に各関数毎に確保され、初期値
として入り口点アドレスが入る。
【0019】次に、このビットマップテーブルの更新手
段108と分岐命令更新手段109を図6および図7で
説明する。
【0020】ビットマップ更新処理では直前の分岐先ア
ドレスαを取り出す(処理601)。次に分岐命令の命
令アドレスβを取り出し(処理602)、分岐から分岐
までの命令数を計算する(処理603)。4バイトの固
定長命令である時には、命令数(k)=(β−α)÷4
+1 である。
【0021】そしてこの命令数分のマスクを処理607
で作成するが、論理演算を行う命令によるが一般にワー
ド(4バイト)単位で行うために4バイト(32ビッ
ト)単位に丸め操作を行う(処理604〜606)。こ
の作成したマスクとビットマップ上のα番地に相当する
ビット位置からの値とで論理ORを取ることで実行した
命令に通過サインを付けることができる(処理60
9)。
【0022】そして32命令を越える場合には処理61
0,611,608を実行してビットマップのビット位
置を進め、新しいマスク値を設定し論理ORを取る処理
を繰り返す。
【0023】分岐命令までのビットマップの更新を終え
ると分岐命令のターゲット(分岐先)アドレスを取り出す
(処理612)。アドレスがこの関数の範囲内かを判定
し(処理613)、範囲外であれば入り口点アドレスを
分岐先アドレスとしてセーブし(処理615)、範囲内
であれば該アドレスをセーブする(処理614)。ビッ
トマップテーブル103はあくまでも一つの関数内の情
報であり、別関数に分岐またはリターンする場合には初
期値に戻すことが必要である。そして分岐先アドレスが
範囲外の場合にはそのままリターンし分岐命令の修飾は
行わない。これはその分岐命令のマスクをクリアしてし
まうと分岐先の関数のビットマップ管理ができなくなる
からである。
【0024】同じ関数内であれば処理614で分岐先ア
ドレスをセーブ後、分岐先までのビットマップ情報を調
べ(処理616)、すべてパスとして通過している場合
に分岐命令のマスクをクリアし、分岐成功割り込みを起
こさないようにする(処理617)。この処理ではマス
ク情報クリアとしているが、マスク情報を複数ビットで
構成することである一定数通過したらマスクをクリアす
るという回数管理も行うことができる。
【0025】さらにプロセッサ内の分岐割り込み制御機
構(図1の106)では従来、分岐命令で分岐条件が成
立し、かつ分岐割り込みがイネーブルであった時に割り
込みを発生させていたが、新たに分岐命令内のフィール
ドを判定するステップが加わる。これについては省略す
る。
【0026】これらの処理におけるビットマップテーブ
ルの変化を図8に示す。これは図4の処理で(1)a=
bの処理と、続いて(2)a≠bかつc=dの処理を想
定している。まず(1)のケースでプログラム(関数)
を実行すると命令列101は途中で分岐は起こさず最後
のリターン(命令語505)で分岐が発生する。この時
の元の分岐先アドレスは初期値の入り口点(命令語50
1)アドレスであるため、501から505の5命令分
のマスク701が作成される。そして、そのマスクと元
のビットマップ103の命令語501に相当するビット
位置からの値とで論理ORを取ることによりビットマッ
プは702に更新される。そして分岐先アドレスは関数
の外にでるため初期値にセットされる。命令語505の
分岐マスク情報nは外部分岐のためクリアされない。
【0027】続いて、本関数に(2)のケースで制御が
渡って来た時には、a≠bのケースであるため、まず命
令語503の条件が成立し、分岐成功割り込みが発生す
る。ビットマップ更新処理では分岐命令のアドレス50
3と分岐先アドレス501よりマスク703を作成し、
ビットマップと論理ORを取るが、すでに通過したパス
なのでビットマップは変わらない。そして分岐命令の分
岐アドレスが内部アドレス(E1)であり、その入り口
点アドレスからE1アドレスの間には通過していないパ
ス(E2)があるため、E1に分岐する命令503のマ
スクはクリアされない。E1に分岐した後、c=dの条
件によりm=2の処理511が行われ、510の分岐命
令(無条件分岐)で分岐成功割り込みを起こす。そして
通過マス704で論理ORを取り、ビットマスク705
になる。命令語512の分岐命令の分岐先アドレスは関
数の範囲内であり、かつアドレスまでの命令はすべて通
過しているため分岐命令512の分岐マスクはクリアさ
れる。
【0028】もし先の命令語503の分岐時にこの分岐
マスクをクリアしてしまうと、次にa≠bかつc≠dが
入ってきた時、分岐命令510の割り込み時に通過して
いないE2パスが通過したものとして扱われ、誤ったビ
ットマップの結果となる。一度でもE2パスを通過すれ
ば次の命令503の分岐成功時に分岐命令の分岐マスク
はクリアされる。
【0029】この分岐マスクは被測定プログラムを長時
間動作させることにより、徐々にクリアされて行き、最
終的には(全パスを通過したと仮定して)、関数外の分
岐割り込み動作のみ残ることになる。
【0030】このようにして収集したカバレージ情報
は、別途用意されたビットマップ情報の編集・表示手段
111により外部表示装置112に出力されることにな
る。
【0031】
【発明の効果】被測定プログラムのカバレージ収集にお
いて分岐成功割り込み機構を利用し、更に該割り込み処
理の延長でカバレージ処理を加えることにより、従来ソ
ースコード・ベースで行っていたカバレージ情報収集を
実行形式(ロードモジュール)ベースで採取し、被測定
プログラムの再コンパイルをする必要が無くなり、更に
分岐命令内に分岐割り込みを起こすか否かのマスク情報
と同情報を操作するステップを上記分岐成功割り込み機
構に設けることで、カバレージ収集のためのオーバーヘ
ッドを徐々に削減することができる。
【図面の簡単な説明】
【図1】本発明のカバレージモニタのブロック図。
【図2】従来のカバレージ収集方法を説明した処理フロ
ーチャート。
【図3】情報を蓄えるためのビットマップテーブルの説
明図。
【図4】本発明の実施例で用いる被測定プログラムの処
理フローチャート。
【図5】図4の処理フローにより生成される機械語の命
令列とビットマップ説明図。
【図6】本発明の中心となるカバレージ方法の処理フロ
ーチャート。
【図7】本発明の中心となるカバレージ方法の処理フロ
ーチャート。
【図8】カバレージ情報の遷移の説明図。
【符号の説明】
101…命令列、110…命令語、103…ビットマッ
プテーブル、104…分岐先アドレス格納域、106…
分岐割り込み制御機構、108…ビットマップ更新手
段、109…分岐命令更新手段。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】分岐命令の分岐条件が成立した時に割り込
    みを起こす分岐成功割り込み機構を備え、プログラムの
    実行パスを収集しパスの網羅性(カバレージ)を評価す
    る手段を有する計算機において、 測定対象のプログラムの実行開始時には、前記プログラ
    ムの命令語分に相当するビットマップを作成する手段
    と、前記プログラムの実行において分岐成功割り込みの
    発生時には、分岐命令の分岐先アドレスを記憶する手段
    と、直前に記憶しておいた分岐先アドレスと現在の割り
    込みアドレス間の範囲に当たる前記ビットマップ内の位
    置を更新する手段を有することを特徴とするプログラム
    のカバレージモニタを備えた計算機。
  2. 【請求項2】請求項1において、分岐成功割り込みを起
    こすか否かを指示する割り込み指示子(マスクフィール
    ド)を分岐命令語内に備え、分岐条件の成立と前記マス
    クフィールドの値により分岐成功割り込みを発生させる
    手段と、前記分岐割り込み処理で前記分岐割り込み指示
    子を更新する手段を有するプログラムのカバレージモニ
    タを備えた計算機。
JP5263347A 1993-10-21 1993-10-21 プログラムのカバレージモニタを備えた計算機 Pending JPH07121403A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5263347A JPH07121403A (ja) 1993-10-21 1993-10-21 プログラムのカバレージモニタを備えた計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5263347A JPH07121403A (ja) 1993-10-21 1993-10-21 プログラムのカバレージモニタを備えた計算機

Publications (1)

Publication Number Publication Date
JPH07121403A true JPH07121403A (ja) 1995-05-12

Family

ID=17388214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5263347A Pending JPH07121403A (ja) 1993-10-21 1993-10-21 プログラムのカバレージモニタを備えた計算機

Country Status (1)

Country Link
JP (1) JPH07121403A (ja)

Similar Documents

Publication Publication Date Title
US7266844B2 (en) Heuristic detection of polymorphic computer viruses based on redundancy in viral code
US5615357A (en) System and method for verifying processor performance
US5557774A (en) Method for making test environmental programs
US7571427B2 (en) Methods for comparing versions of a program
JP3195839B2 (ja) 発電所の施設の運転を監視する方法
US5987250A (en) Transparent instrumentation for computer program behavior analysis
US5418954A (en) Method for preparing and dynamically loading context files
EP3144814B1 (en) Method and apparatus for generating a profile of a target program
US6519768B1 (en) Instruction translation method
JP3205406B2 (ja) 参照対象変数決定処理方法および翻訳処理システム
JPH11224186A (ja) ソフトウェア解析装置及びソフトウェア解析方法
US6684391B1 (en) Method for operating a computer system, byte code verifier and computer system
US7844627B2 (en) Program analysis method and apparatus
JP3011115B2 (ja) デバッグシステム
JP3073889B2 (ja) データ転送方法
JPH0510692B2 (ja)
JPS6042968B2 (ja) 情報処理装置
JP2765911B2 (ja) データ駆動型制御方法およびコンパイル装置
JP3012618B1 (ja) 被検査プログラムのデバグ方法とそのデバグ方式
JP3428253B2 (ja) シーケンサ
JPH0117175B2 (ja)
JPH05324402A (ja) プログラムのテスト状態計測方式
JPS60114909A (ja) 論理演算装置
JPH04101242A (ja) 障害原因コード別グラフ作成方式
JPH06208470A (ja) 目的コード最適化装置