JPH03268034A - プログラム実行監視方法 - Google Patents

プログラム実行監視方法

Info

Publication number
JPH03268034A
JPH03268034A JP2067027A JP6702790A JPH03268034A JP H03268034 A JPH03268034 A JP H03268034A JP 2067027 A JP2067027 A JP 2067027A JP 6702790 A JP6702790 A JP 6702790A JP H03268034 A JPH03268034 A JP H03268034A
Authority
JP
Japan
Prior art keywords
instruction
program
trap
original
branch
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
JP2067027A
Other languages
English (en)
Inventor
Tadao Hashimoto
忠雄 橋本
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 JP2067027A priority Critical patent/JPH03268034A/ja
Publication of JPH03268034A publication Critical patent/JPH03268034A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、次に実行する分岐系命令を逐次トラップ命令
で置換しながら実行するプログラム実行監視方法に関す
る。
〔従来の技術] 従来、実行形式プログラムの実行経過を監視する方法と
しては、例えば、(a)特開昭63−231640号公
報に記載されているように、命令トレース、分岐トレー
ス等のハードウェア機構を利用して監視する方法と、(
b)特開昭63−217431号公報に記載されている
ように、監視対象プログラムの起動前にその監視対象範
囲(監視すべきプログラムの全域ないし一部領域)を解
析して、−括して必要な箇所の命令をトラップ命令に置
換する方法とがある。上記置換が必要な箇所は、通常「
監視点」と呼ばれ、一般には、制御の移行が生じる分岐
系命令が対象となる。
上記(a)の公報に記載された方法では、不正分岐命令
を実行することにより、プログラムシーケンスが乱れた
とき、CP Uを分岐命令トレースモードおよび命令ア
ドレス一致モードに移行し、分岐命令実行時および予め
指定されたアドレスに制御が移ったときに発生する割込
みの時点で、CPUの状態を退避して、分岐命令アドレ
スと予め指定されたアドレスを比較し、シーケンスを乱
した命令を検出している。
また、上記(b)の公報に記載された方法では、対象と
なるプログラムのマツプ情報から、そのプログラムのパ
ターンの一部に割込み命令を埋め込むことにより、プロ
グラムの実行中に割込みを発生させ、分岐させてデバッ
グ機構を起動させる。
〔発明が解決しようとする課題〕
上記(a)の方法では、特殊なハードウェア機構を用い
るため、監視対象プログラムの実行監視のために計算機
が占有されてしまう。
また、上記(b)の方法は、さらに2つの方法、っまり
■ソースプログラムを解析することにより、その手続き
部(ロジック)と実行形式プログラムとを対応付けて置
換すべき位置群を把握する方法と、■実行形式プログラ
ムを直接解析して、置換位置群を把握する方法とに分け
られる。しかじな力5ら、上記■の方法では、ソースプ
ログラムの解析側よびロジックと実行形式プログラムの
対応付けという多量な準備が予め必要となること、また
、上記■の方法では、実行形式プログラムでは、命令コ
ードとデータ(定数等)が混在しているため、命令コー
ド域、定数域の開始と終了の識別が困難であって、トラ
ップ命令置換位置が正確に把握できない。
本発明の目的は、これら従来の課題を解決し、プログラ
ム実行監視のために計算機が占有されることなく、予め
準備処理を行う必要もなく、監視プログラム本来の実行
環境上で実行できる逐次コド置換によるプログラム実行
監視方法を提供することにある。
〔課題を解決するための手段〕
上記目的を達成するため、本発明のプログラム実行監視
方法は、監視対象プログラム中の監視開始点の命令をス
ーパバイザコール命令か、不当命令例外を発生させる不
当命令を含むトラップ命令で置換し、元の命令を退避し
7た後、上記監視対l象プログラムを起動させ、上記ト
ラップ命令による割込みを受けて、退避した元の命令を
元の位置に復帰し、トラップ発行元プログラムの実行再
開アドレスをその位置にし、実行再開アドレス以降で最
初に実行される分岐命令を検出して、該分岐命令をトラ
ップ命令で置換して元の命令として退避し、実行再開ア
ドレスからトラップ発行元プログラムを実行することに
特徴がある。
〔作  用〕
本発明においては、前記(a)の方法のように、ハード
ウェア機構を用いて計算機を占有することなく、また前
記(b)の方法のように、多量な準備処理は不要であり
、トラップ命令置換位置の解析を確実に行うことができ
、一般の実行形式プログラムの実行状態を簡単に監視す
ることができる。
また、プログラムのダイナミックステップ数算出、実行
トレース等のプログラム実行監視を必要とする広い分野
に容易に応用が可能である。さらに、−殻内な実行形式
プログラムに対して、ハードウェアを占有することなく
、正確にダイナミックスチップ数の算出、およびプログ
ラム実行トレーlスを実現することができる。
〔実施例j 以下1本発明の実施例を、図面により詳細に説明する。
第1図は、本発明の一実施例を示すプログラム実行監視
のための処理装置のブロック構成図である。
第1図において、1はプログラムステップをダイナミッ
クに計数するダイナミックステップカウンタ、2は初期
設定処理モジュール、3は監視対象プログラム起動・終
了処理モジュール、4はトラップ命令受付処理モジュー
ル、5は結果出力処理モジュール、11は元の命令退避
域、12はステップ数累積カウンタ、13は元の命令ア
ドレス退避域、14は監視開始点アドレス退避域、15
は監視終了点アドレス退避域、2oは監視対象プロ゛グ
ラム、25はロードプログラム格納ファイル、26は出
力装置(プリンタ等)、201は監視対象プログラム2
0の先頭命令、202〜204は、監視対象プログラム
20中の分岐命令、209は監視対象プログラム2oの
最終命令である。また、監視対象プログラム起動・終了
処理モジュール3内の301は監視対象プログラム呼出
し命令、302は監視対象プログラム呼出し命令の直後
のN○P命令である。
本実施例においては、監視対象プログラム20の起動の
先頭、および監視開始点を、説明を簡略にするため、い
ずれも監視対象プログラム20の先頭にした。また、監
視終了点も、監視対象プログラム20の実行終了時点に
した。しかし、実際には、どの点を監視開始点、監視終
了点にしても差し支えない。
この処理装置の動作概要を述べる。
処理装置は、プログラムの制御の移行を逐次監視するた
めに、(1)監視対象プログラム中の監視開始点の命令
をスーパバイザコール(SVC)命令あるいは不当命令
例外を発生させるための不当命令等のトラップ命令で置
換して、元の命令を退避し、監視対象プログラムを起動
する。
(ii)トラップ命令による割込みを受けて、退避した
元の命令を元の位置に復元し、トラップ発生元プログラ
ムの実行再開アドレスをこの位置とし、この元の命令(
実行再開アドレス)以降で最初に実行される分岐系命令
(制御の流れを直接変更する命令)を検出し、トラップ
命令で置換して元の命令として退避する。(■)実行再
開アドレスからトラップ発生元プログラムを実行する。
以−Fの(i)〜(iii)が基本動作要素である。
上記(1)は、監視対象プログラムの監視開始点へのト
ラップ命令の設定処理である。また、トラップ命令とし
ては、特別なSVC番号を持つSvC命令、または不当
命令等のいずれかを使用し、また最短の命令長のものを
使用すると効率的である。さらに、元の命令とトラップ
命令との命令長の差があるときには、この差に対してト
ラップ命令の後にこの差分に相当する数のNOP命令を
追加する。そして、監視対象プログラムを起動する。
上記(h)では、トラップ命令による割込みを受け、退
避した命令を元の位置に復元し、復元し:た位置をトラ
ップ発生元プログラムの実行再開アドレスとして、この
元の命令(実行再開アドレス)以降で最初に実行される
分岐命令を検出し、これをトラップ命令で置換して元の
命令として退避する。
上記(iii)において、実行再開アドレスからトラッ
プ発生元プログラムを実行することは、実行再開アドレ
スからトラップ発生元プログラムに制御を移すことであ
る。
なお、上記(ii)において、元の命令、つまり実行再
開アドレス以降最初に実行される分岐命令は、次のよう
にして決定される。
命令コード、および分岐条件の成否、さらに分岐先の解
析により、(イ)元の命令が分岐命令以外の場合には、
この命令以降(元の命令を含まず)で最も前にある分岐
命令、(ロ)無条件分岐命令の場合には、この命令の分
岐先以降(分岐先の命令を含む)で最も前にある分岐命
令、(ハ)条件付き分岐命令の場合には、分岐条件の成
否を判別して、条件不成立のときには(イ)の、また条
件成立のときには(ロ)の分岐命令、とする。
以下、上述の条件により決定された分岐命令を「元の命
令(または、実行再開アドレス)以降最前の分岐命令」
あるいは単に「最前の分岐命令」と呼ぶ。また、上記決
定方法を、「元の命令(あるいは実行再開アドレス)以
降最前の分岐命令決定方法」、または「最前の分岐命令
決定方法」、あるいは単に「解析方法A」とも呼ぶ。
次に、命令コードを解析する方法として、さらに下記の
ような方法がある。
分岐命令の検出のみならず、S V C番号を有するS
VC命令を含めた広義の分岐命令を検出すること、命令
の直後に復帰しないSVC命令について、そのSVC番
号とこのSvCからの復帰先としてこのSvC命令直後
からのオフセット値とを対応させること、トラップ発生
後の復帰先をこの対応処理により把握すること、1つの
SvC命令の復帰先がそのSvC処理結果に基づき複数
の可能性を有するSVC命令について、そのSVC番号
と複数の復帰先のSVC命令直後からのオフセットまた
はアドレスのリストを対応させること、この複数の復帰
先の各々について、それ以降で最初の分岐命令を解析方
法A(分岐命令として広義の分岐命令を対象とする)に
より検出し、トラップ命令で置換して、各々元の命令を
退避すること、現在実行中のロードモジュールとは別の
ロードモジュールとこれへの制御の移行とを、同時に実
行するSVC命令(ロードモジュールへの移行のSVC
命令)について、そのSVC処理の一環としてロードし
たロードモジュールの入口点をトラップ命令で置換し、
元の命令を退避して、実行開始アドレスをこの元の命令
とすること、等の処理である。
元の命令とこの命令以降最前の分岐命令間の命令コード
を解析し、これをステップ数累積カウンタに加算する処
理と、監視対象プログラムの実行終了後にこのカウンタ
の値を出力する処理も含まれる。
ここで、元の命令とこの命令以降最前の分岐命令間の命
令コードの解析方法を、「解析方法Bjと呼ぶ。正確に
は、元の命令以降最前の分岐命j令に至る実行経路上の
命令群(上記分岐命令は含まない)の命令コードの解析
であって、最前の分岐命令検出については、解析方法A
の結果を利用して以下の処理を行う。
(a)元の命令が分岐命令以外の場合には、元の命令以
降(元の命令を含む)最前の分岐命令の直前の命令まで
(直前の命令を含む)の命令群の命令コードを解析する
(b)元の命令が分岐命令の場合には、元の命令および
分岐先の命令以降(分岐先の命令を含む)最前の分岐命
令の直前命令までの命令群の命令コードを解析する。
(C)元の命令が条件付き分岐命令の場合には、分岐条
件の成否を判定して、条件不成立の場合には上記(a)
と同じ処理を、条件成立の場合には上記(b)と同じ処
理を行う。
第1図において、ダイナミックステップカウンタ1の初
期設定処理モジュール2は、ロードプログラム格納ファ
イル25から監視対象プログラム20をロードし、元の
命令退避域11、ステ・ンプ数累積カウンタ12をそれ
ぞれゼロに、また敵視開始点アドレス退避域14に監視
対象プログラム20の先頭命令201のアドレスを、監
視終了点アドレス退避域15に、監視対象プログラム呼
出し命令301の直後のNOP命令302のアドレスを
、それぞれ初期設定した後、監視開始アドレス退避域1
4の内容に基づいて、監視開始点である監視対象プログ
ラム20の先頭命令201をトラップ命令で置換すると
ともに、先頭命令201を元の命令として元の命令退避
域11に退避する。
上記トラップ命令は、ここではこのトラップ専用に割り
当てた特定のスーパバイザコール(SVC)番号nを持
つSVC命令を使用する。元の命令とトラップ命令との
命令長の差(例えば、6バイトと2バイトの差)がある
ときには、この差に対してトラップ命令の後にこの差分
に相当する数のNOP命令を追加する。なお、NOP命
令とは、何の効果も生じない命令のことであり、ここで
は分岐を生じない分岐命令である。そして、先頭命令2
01のアドレスを元の命令アドレス退避域↓3に退避す
る。
その後、監視対象プログラム起動・終了処理モジュール
3は、監視対象プログラム20を起動する。監視対象プ
ログラム起動・終了処理モジュール3中の監視対象プロ
グラム呼出し命令301の直後には、監視対象プログラ
ム20から監視対象プログラム起動・終了処理モジュー
ル3への復帰を把握するために、分岐を生じない分岐命
令(つまり、NOP命令)302が続いて実行される。
監視対象プログラム20の実行中にトラップ命令(最初
は、先頭命令201に対応するトラップ命令)が実行さ
れると、オペレーティングシステム(O8)の制御プロ
グラムを介しトラップ命令受付処理モジュール4に制御
が渡される。トラップ命令受付処理モジュール4は、特
定のSvC番号nを持つSVCに対する処理ルーチンで
ある。
トラップ命令受付処理モジュール4では、先ず(イ)元
の命令アドレス退避域13の示す位置に元の命令退避域
11の内容を復元し、監視対象プログラム20の実行再
開アドレスを元の命令アドレス退避域13の値とする。
そして、前述の解析方法Aにより最前の分岐命令202
を検出する。
(ロ)元の命令201とそれ以降で最前の分岐命令20
2との間の命令コードを解析して(前述の解析方法B)
、ダイナミックステップ数を算出し、ステップ数累積カ
ウンタ12に加算する。
(ハ)その後、上記(イ)で検出した最前(つまり、次
)の分岐命令202をトラップ命令で置換するとともに
、元の命令退避域11に、またこの元の命令202のア
ドレスを元の命令アドレス退避域13に、それぞれ退避
する。
(ニ)監視対象プログラム20へ制御を戻す。すなわち
、監視対象プログラム20は、実行再開アドレス(20
1命令)から実行を再開する。
(ホ)このようにして、これ以降、監視対象プログラム
20でのトラップ命令の発行(トラップ発生)、トラッ
プ命令受付処理モジュール4での元の命令復元、次の分
岐命令の退避とトラップ命令での置換、ステップカウン
ト累積および復元した元の命令から監視対象プログラム
20の実行の繰り返し動作により、ダイナミックステッ
プ数を算出する。
(へ)その後、監視対象プログラム20の最終命令20
9の位置でのトラップ命令割込み発生でも、トラップ命
令受付処理4の処理は変わらない。ただし、その結果と
して、最前の分岐命令(次のトラップ命令置換位置)が
聖夜対象プログラム起動・終了処理モジュール3中の監
視対象プログラム呼出し命令301の直後の命令である
NOP命令302となる。なお、監視対象プログラム2
0の最終命令は、プログラム20の起動元である監視対
象プログラム起動・終了処理モジュール3への復帰命令
、つまり分岐命令である。
(ト)上記NOP命令302の位置でのトラップ発生で
は、トラップ発生元アドレスと監視終了点アドレス退避
域15の内容とを比較することにより、この位置のトラ
ップ命令であることを判定し、元の命令を復元して命令
302を実行再開アドレスとして最後のダイナミックス
テップ数の累積(209命令の1命令のみ)を行い、命
令302に戻る。
(チ)その後、ダイナミックステップカウンタ1は結果
出力処理モジュール5を用いて、ステップ数累積カウン
タ12の内容を最終のダイナミックステップ数として出
力装置26に出力する。
なお、ステップカウント関係の構成要素(第1図のステ
ップ数累積カウンタ12)とステップカウント関係の処
理とプログラム実行監視に対する基本制御方式とか、本
実施例の全体の要素である。
また、本実施例では、ダイナミックステップとして、単
に命令数のみをカウントしているか、各命令コードまた
は命令種別毎に分けて収集し、出力することも可能であ
る。この場合には、ステップ数累積カウンタ12をその
カウントすべき項目毎に用意する必要があるのは勿論の
ことである。
第2図は、第1図におけるトラップ命令受付処理モジュ
ールの処理フローチャートである。
ステップ40〜48のうち、ステップ45および47が
ステップカウント関連の処理である。
トラップ命令受付処理モジュール4 (SVC番号nの
処理ルーチン)では、先ず元の命令アドレス退避域13
中のアドレス(元の命令位置)に元め命令を元の命令退
避域11から復元しくステップ41)、トラップ発生元
(通常は、監視対象プログラム20、および最後のみ監
視対象プログラム起動・終了処理モジュール3)の実行
再開アドレスを元の命令アドレス退避域]3中のアドレ
スとする。すなわち、SvC発行元プログラムの次命令
アドレス(N I A)を復元した元の命令の位置とす
る。通常、SVCルーチンからの復帰は、SVC命令の
次の命令へ制御が戻るか、この復帰先を変更する処理は
、従来より行われているものである(ステップ42)。
次に、前述の解析方法Aにより、元の命令以降最前の分
岐命令を検出する(ステップ43)。次に、元の命令ア
ドレスが監視対象プログラム呼出しの直後の命令アドレ
スであるか、すなわち監視終了点アドレス退避域15の
内容と等しいか否かを判定する(ステップ44)。判定
の結果、NOであれば、監視対象プログラム20の中か
らのトラップ発生であり、ダイナミックステップカウン
ト処理として、前述の解析方法Bにより元の命令とこの
命令以降最前の分岐命令間の命令コードを解析して、ダ
イナミックステップ数を計算し、その値をステップ数累
積カウンタ12に加算する(ステップ45)。その後、
最前の分岐命令を元の命令として元の命令退避域11に
、またこの元の命令のアドレスを元の命令アドレス退避
域13に、それぞれ退避して、元の命令をトラップ命令
で置換しくここで、命令長の差があれば、NOP命令を
追加)(ステップ46)、そしてSvC処理を終了する
(ステップ48)。その結果、監視対象プログラム20
の元の命令に制御が移る。
一方、処理ステップ44の判定の結果、YESであれば
、元の命令(トラップ発生元)が監視対象プログラム呼
出しの直後、つまり監視終了点であるとき、終了処理と
して元の命令(監視対象プログラム起動・終了処理モジ
ュール3への復帰命令1ステツプ)をステップ数累積カ
ウンタ12に加算して(ステップ47)、SvC処理を
終了する(ステップ48)。その結果、監視対象プログ
ラム呼出し元である監視対象プログラム起動・終了処理
モジュール3の監視対象プログラム呼出し香令直後のN
OP命令302に制御が戻る。
第3図は、第2図における処理ステップ43の詳細動作
フローチャートである。
第2図のステップ43、つまり元の命令以降最前の分岐
命令検出処理は、前述の解析方法Aの処理である。
分岐命令か否かは、命令コードにより、また分岐先は分
岐命令のオペランドにより決定する。また、分岐条件の
成否については命令の種別により異なるか、命令の条件
コード指定域の指定と計算機のプログラム状態語(PS
W)中の条件コードとの比較、または命令オペランドに
よる指定の内容と命令により決まる演算の模似結果との
比較等により決まる。
先ず、元の命令は分岐命令であるか否かを判定しくステ
ップ51)、NOであれば、元の命令以降、最前にある
分岐命令を検出する。この場合、元の命令は含まない(
ステップ52)。検出すれば、解析方法Aの処理は終了
する(ステップ56)。
一方、ステップ51の判定の結果、YES”$あれば、
元の命令は条件付き分岐命令であるか否かを判定しくス
テップ53)、条件付き分岐命令であり、かつ条件成立
であれば、分岐先以降、最前の分岐命令を検出する。こ
の場合、分岐先を含む(ステップ55)。また、条件付
き分岐命令であり、かつ条件不成立であれば、元の命令
以降、最前の分岐命令を検出する。この場合、元の命令
は含まない(ステップ52)。また、ステップ53で、
元の命令が条件付き分岐命令でないときには、分岐先以
降、最前の分岐命令を検出する(ステップ55)。
第4図は第2図におけるステップ45の詳細動作フロー
チャートである。
処理ステップ45は、解析すべき命令群の検出処理であ
る解析方法Bを含めた通常時のダイナミックステップ数
の算出、加算処理の処理である。
先ず、元の命令は分岐命令であるか否かを判定しくステ
ップ61)、その結果、NOであれば、元の命令以降、
最前の分岐命令までのステップ数(元の命令を含み、最
前の分岐命令を含まず)を1ダイナミツクステツプ数と
して算出する〔ステップ62〕。また、判定の結果、Y
ESであれば、元の命令は条件付き分岐命令であるか否
かを判定しくステップ64)、条件付き分岐命令であり
、かつその条件が成立した場合には、分岐先以降、最前
の分岐命令までのステップ数(分岐先を含み、最前の分
岐命令を含まず)+1(元の命令)をダイナミックステ
ップ数として算出する(ステップ66)。
条件不成立のときには、ステップ62を行い、条件付き
分岐命令でないときには、ステップ66を行う。次に、
算出したダイナミックステップ数をステップ数累積カウ
ンタに加算して(ステップ63)、処理を終了する(ス
テップ67)。
第5図は、本発明の他の実施例を示すプログラム実行監
視システムのブロック構成図である。
第5図の構成では、分岐トレーサIA、トラップ命令受
付処理モジュール4A、およびトレース情報編集域12
Aが変更になっただけであり、その他は第1図の構成と
同じである。ここで、監・視対象プログラム20の監視
開始位置および終了1位置は、第1図と同じとする。
分岐トレーサIAの初期設定処理モジュール2は、ロー
ドプログラム格納ファイル25から監視対象プログラム
20をロードし、元の命令退避域11、トレース情報編
集域12Aをそれぞれゼロに、また監視開始点アドレス
退避域14へ監視対象プログラム20の先頭命令201
のアドレスを、監視終了点アドレス退避域15へ監視対
象プログラム呼出し命令301の直後のNOP命令30
2のアドレスを、それぞれ初期設定する。次に、監視開
始点アドレス退避域14の内容に基づいて監視対象プロ
グラム2oの先頭命令201をトラップ命令(このトラ
ップ専用に割当てられた特定のSVC番号nを持つSv
C命令を使用)で置換するとともに、元の命令を元の命
令退避域11に退避する。元の命令とトラップ命令との
命令長に差がある場合には、NOP命令を追加する。そ
して、先頭命令201のアドレスを元の命令アドレス退
避域13に退避する。その後、監視対象プログラム起動
・終了処理モジュール3は、監視対象プログラム20を
起動する。同じく、監視対象プログラム起動・終了処理
モジュール3中の監視対象プログラム呼出し命令301
の直後には、監視対象プログラム20から監視対象プロ
グラム起動・終了処理モジュール3への復帰を把握する
ため、分岐を生じない分岐命令(NOP命令)302を
設定する。監視対象プログラム20の実行中に、上記ト
ラップ命令(最初は、先頭命令201に対応する)が実
行されると、O8を介してトラップ命令受付処理モジュ
ール4Aに制御が渡される。トラップ命令受付処理モジ
ュール4Aでは、特定のS■C番号nを持つSvCに対
する処理ルーチンである。
トラップ命令受付処理モジュール4Aでは、(イ)元の
命令アドレス退避域13の示す位置に元の命令退避域1
1の内容を復元し、監視対象プログラム20の実行再開
アドレスを元の命令アドレス退避域13の値とする。前
述の解析方法Aにより最前の分岐命令202を検出する
(ロ)次に、元の命令アドレス退避域13およが元の命
令退避域11の内容をトレース情報編集域12Aに編集
する。元の命令が分岐命令であれば、その分岐先を解析
しく条件付き分岐命令の場合には、その分岐条件の成否
の判定を含む)、トレース情報編集域12Aに追加編集
する。その結果、出力処理モジュール5を用いて、出力
装置26に出力する。
(ハ)その後、最前の(つまり、次の)分岐命令202
をトラップ命令で置換するとともに、元の命令退避域1
1に、またこの元の命令202のアドレスを元の命令ア
ドレス退避域13に、それぞれ退避し、監視対象プログ
ラム20に制御を戻す。監視対象プログラム20は、実
行再開アドレスから実行を再開する。
(ニ)この後、監視対象プログラム20でのトラップ命
令発行(トラップ発生)、トラップ命令受付処理モジュ
ール4Aでの元の命令復元、次の分岐命令退避とトラッ
プ命令での置換、トレース情報編集および出力、復元し
た元の命令から監視対象プログラム20の実行という繰
り返しにより、監視対象プログラム20の実行をトレー
スする。
(ホ)その後、監視対象プログラム20の最終命令(監
視対象プログラム20の起動元である監視対象プログラ
ム起動・終了処理モジュール3への復帰命令、つまり分
岐命令)209の位置におけるトラップ命令割込み発生
で、元の命令を復元し、その実行により監視対象プログ
ラム起動・終了処理モジュール3に復帰する。
(へ)その後、監視対象プログラム呼出し命令直後の命
令302のトラップ発生で最後のトレース情報を出力し
、元の命令302を復元して監視対象プログラム起動・
終了処理モジュール3に復帰し、処理を終了する。
第6図は、第5図におけるトラップ命令受付処理モジュ
ールの処理フローチャートである。
この処理のうち、ステップ45Aがトレース情報出力関
連の処理であり、他の処理は第2図と同じである。ただ
し、第2図の処理ステップ47のステップ数累積カウン
タに加算する処理はない。
トラップ命令受付処理モジュール4Aでは、割込みを受
付けると、先ず、元の命令を復元しくステップ41)、
この位置をトラップ発生元の実行再開アドレス(次命令
アドレスN I A)とする(ステップ42)。次に、
元の命令以降最前の分岐命令を検出しくステップ43)
、この最前の分岐命令が監視プログラム呼出し元か否か
を判定する(ステップ44)。その後、トレース情報独
自の処理として、この判定がNoであれば、命令アドレ
ス退避域13および元の命令退避域11の内容をトレー
ス情報編集域12Aのトレースアドレス退避域12A1
およびトレース命令表示域12A2へそれぞれ編集する
。そして、元の命令が分岐命令か否かを判定して(なお
、監視対象プログラム20の先頭の場合には分岐命令で
ない時がある)、分岐命令の場合には分岐先を解析し、
トレース情報編集域12Aの分岐先アドレス表示域12
A3に編集する。そして、結果出力処理モジュール5を
用いて、出力装置26に出力する(ステップ45A)。
最前の分岐命令を元の命令として元Φ命令退避域11に
、またこの元の命令のアドレスを元の命令アドレス退避
域13に、それぞれ退避して、元の命令をトラップ命令
で置換する(命令長の差があれば、NOP命令を追加)
(ステップ46)。これにより、SVC処理を終了する
(ステップ48)。その結果、トラップ発生元プログラ
ムの元の命令に制御が移る。
なお、ステップ44での判定結果がYESであれば、単
にSvC処理を終了する(ステップ48)。
その結果、監視対象プログラム20の呼出し元直後の命
令302に戻り、トレース処理を終了する。
上記分岐命令の解析処理で、条件付き分岐命令の場合に
は、分岐条件の成否の解析を行い、分岐成否の判定も行
う。分岐不成立の場合、つまり制御の流れが変化せずに
、後続の命令が実行される場合には、分岐先アドレスを
次の命令に継続の意味で特別の表示を行うか、あるいは
トレース情報を出力しないようにする。つまり、分岐成
立の場合にのみ、トレース情報を出力して、出力情報量
を低減させることもできる。
第7図は、第5図におけるトレース情報編集域の詳細図
である。
トレース情報編集域12Aは、第7図に示すように、ト
レースアドレス表示域12A1と、トレース命令表示域
12A2と、分岐先アドレス表示域12A3とから形成
される。
このように、前述および本実施例においては、−殻内な
実行形式プログラムの実行経過を監視する際に、プログ
ラム実行監視のために計算機を占有されることがなく、
タイムシェアリングシステム(TSS)のような通常の
プログラム処理環境で実施することができる。特に、ト
ラップ命令に特定のSVC番号を持つSvC命令を使用
することにより、基本制御プログラムを含めて広範囲の
プログラムに適用することが可能である。また、本発明
の実施例では、監視対象プログラムの実行に先行して移
動する発生機能(元の命令をトラップ命令で置換したト
ラップ命令実行によるトラップ発生)を監視対象プログ
ラムに与えて、監視対象プログラムの制御の流れに従い
、逐次監視する方法を用いるので、コンパイラやアセン
ブラ等の+AIJツールにより予め監視対象プログラム
全体に監視点を埋め込む等の加工準備処理(すなわち、
監視対象プログラムがこの監視点を通過する時にトラッ
プが発生して、監視対象プログラムの実行監視ができる
)は不要である。また、監視プログラム本来の実行環境
自体で実行させて、その実行を監視できるという利点も
ある。
〔発明の効果〕
以上説明したように、本発明によれば、−殻内な実行形
式プログラムに対して、ハードウェアを占有することな
く、またユーザが特別な事前準備を行う必要もなく、正
確にダイナミックステップ数の算出とプログラム実行ト
レースを実行することができるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例を示すプログラム実行監視シ
ステムのブロック図、第2図は第1図におけるトラップ
命令受付処理モジュールの処理フローチャート、第3図
は第2図における処理ステツブ43(解析方法A)の詳
細フローチャート、第4図は第2図における処理ステッ
プ45(解析方法Bを含む)の詳細フローチャート、第
5図は本発明の他の実施例を示すプログラム実行監視シ
ステムのブロック図、第6図は第5図におけるトラップ
命令処理モジュールのフローチャート、第7図は第5図
におけるトレース情報編集域12Aの詳細図である。 1:ダイナミックステップカウンタ、IA:分岐トレー
サ、2:初期設定処理モジュール、3:監視対象プログ
ラム起動・終了処理モジュール、4ニドラツプ命令受付
処理モジユール、5:結果出力処理モジュール、11:
元の命令退避域、12ニステツプ数累積カウンタ、12
Aニドレ一ス情報編集域、12A1ニドレ一スアドレス
表示域、12A2 : トレース命令表示域、12A3
 :分岐先アドレス表示域、13:実行再開アドレス退
避域、14:監視開始点アドレス退避域、15+監視終
了点アドレス退避域、20:監視対象プログラム、25
:ロードプログラム格納ファイル、26 :i力装置(
プリンタ)、3o1:監視対象プログラム起動・終了処
理モジュール3中の監視対象プログラム呼出し命令、3
o2:監視対象プログラム呼出し命令301直後のNO
P命令。 第 図 第 3 図 第 図 第 図 第 図

Claims (1)

    【特許請求の範囲】
  1. 1、監視対象プログラム中の監視開始点の命令をスーパ
    バイザコール命令か、不当命令例外を発生させる不当命
    令を含むトラップ命令で置換し、元の命令を退避した後
    、上記監視対象プログラムを起動させ、上記トラップ命
    令による割込みを受けて、退避した元の命令を元の位置
    に復帰し、トラップ発行元プログラムの実行再開アドレ
    スを上記位置にし、実行再開アドレス以降で最初に実行
    される分岐命令を検出して、該分岐命令をトラップ命令
    で置換して元の命令として退避し、実行再開アドレスか
    らトラップ発行元プログラムを実行することを特徴とす
    る逐次コード置換によるプログラム実行監視方法。
JP2067027A 1990-03-19 1990-03-19 プログラム実行監視方法 Pending JPH03268034A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2067027A JPH03268034A (ja) 1990-03-19 1990-03-19 プログラム実行監視方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2067027A JPH03268034A (ja) 1990-03-19 1990-03-19 プログラム実行監視方法

Publications (1)

Publication Number Publication Date
JPH03268034A true JPH03268034A (ja) 1991-11-28

Family

ID=13332995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2067027A Pending JPH03268034A (ja) 1990-03-19 1990-03-19 プログラム実行監視方法

Country Status (1)

Country Link
JP (1) JPH03268034A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100108816A (ko) * 2009-03-30 2010-10-08 삼성전자주식회사 프로그램의 동적 분석 방법 및 그 장치
WO2021192485A1 (ja) * 2020-03-27 2021-09-30 パナソニックIpマネジメント株式会社 異常検出方法、異常検出プログラム、異常検出装置、書き換え方法、書き換えプログラム及び書き換え装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100108816A (ko) * 2009-03-30 2010-10-08 삼성전자주식회사 프로그램의 동적 분석 방법 및 그 장치
JP2010238228A (ja) * 2009-03-30 2010-10-21 Samsung Electronics Co Ltd プログラムの動的分析方法及びその装置
US8769504B2 (en) 2009-03-30 2014-07-01 Samsung Electronics Co., Ltd. Method and apparatus for dynamically instrumenting a program
WO2021192485A1 (ja) * 2020-03-27 2021-09-30 パナソニックIpマネジメント株式会社 異常検出方法、異常検出プログラム、異常検出装置、書き換え方法、書き換えプログラム及び書き換え装置
JP2021157594A (ja) * 2020-03-27 2021-10-07 パナソニックIpマネジメント株式会社 異常検出方法、異常検出プログラム、異常検出装置、書き換え方法、書き換えプログラム及び書き換え装置
US11947408B2 (en) 2020-03-27 2024-04-02 Panasonic Intellectual Property Management Co., Ltd. Anomaly detection method, anomaly detection recording medium, anomaly detection device, rewriting method, and rewriting device

Similar Documents

Publication Publication Date Title
US5142679A (en) Method and apparatus for collecting execution status data of structured program
CN103559123B (zh) 基于VxWorks操作系统的函数调用栈分析方法及装置
EP0225603B1 (en) Distributed processing system and method
EP0098172B1 (en) Register control processing system
JP3090641B2 (ja) 並列データ処理システムおよびその制御方法
JPH03268034A (ja) プログラム実行監視方法
US20040034852A1 (en) Simulation method and simulation system of instruction scheduling
US20050050524A1 (en) Generating software test information
JPH0934754A (ja) プログラムの性能測定装置と方法
JP3120434B2 (ja) プログラム動作解析方法
Marti Compilation techniques for a control-flow concurrent LISP system
JP2735523B2 (ja) プロシージャ・ステップ処理方法
JPS63289654A (ja) プログラム分岐命令モニタ方式
JPH0247728A (ja) フォルト処理管理方式
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
JPH05324402A (ja) プログラムのテスト状態計測方式
JPH0816431A (ja) 利用者プログラムのデバッグ処理システム
JPH03189775A (ja) データ駆動型計算機
JPH0997182A (ja) プログラム変換装置およびデバッグ装置
JPH01267731A (ja) セグメントオーバレイプログラムの作成方式
JP2007257385A (ja) ダイナミックリンクライブラリの競合検出方法及びこれを用いた計算機システム
JPH11242613A (ja) マイクロプロセッサ
JPH06187217A (ja) データベースと通常ファイルとの同期化処理方式
JPH0488426A (ja) プログラム網羅率測定装置
JPH0272438A (ja) デバッグ方式