JPH02294845A - プログラムトレース装置 - Google Patents

プログラムトレース装置

Info

Publication number
JPH02294845A
JPH02294845A JP1116659A JP11665989A JPH02294845A JP H02294845 A JPH02294845 A JP H02294845A JP 1116659 A JP1116659 A JP 1116659A JP 11665989 A JP11665989 A JP 11665989A JP H02294845 A JPH02294845 A JP H02294845A
Authority
JP
Japan
Prior art keywords
output
subroutine
trace
trace data
program
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
Application number
JP1116659A
Other languages
English (en)
Other versions
JP2795676B2 (ja
Inventor
Yotaro Kitadate
北館 陽太郎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP1116659A priority Critical patent/JP2795676B2/ja
Publication of JPH02294845A publication Critical patent/JPH02294845A/ja
Application granted granted Critical
Publication of JP2795676B2 publication Critical patent/JP2795676B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 プログラムの実行経過を調べるために必要となるトレー
スデータを採取する情報処理システムにおけるトレース
データ出力処理方法に関しプログラムトレース処理にあ
たって,特に被トレースプログラムが途中で停止する場
合に,その原因の調査に適した無駄のないトレースデー
タの出力を可能にすることを目的とし, トレース処理開始後,被トレースプログラム内で,ある
サブルーチンへの呼び出しが起こり.かつトレース終了
時点までに,そのサブルーチンからの復帰が起こった場
合.その呼び出し時点から復帰時点までに採取されたト
レースデータの出力を抑止し,またはその間に採取され
たトレースデータの部分を削除し.被トレースプログラ
ムにおけるサブルーチン呼び出しの深さに応したトレー
スデータの出力を行うように構成する。
〔産業上の利用分野〕
本発明は,プログラムの実行経過を調べるために必要と
なるトレースデータを採取する情報処理システムにおけ
るトレースデータ出力処理方法に関する。
プログラムトレース処理は.プログラムの実行順序に関
する情報や,実行の途中で起こった事象を出力するので
.プログラムの実行結果が期待どおりでないとき,ある
いはプログラムの実行性能が目標に達しないときなどに
,その原因を調べるのに脊効な方法である。
このトレースデータの出力では.効率的な調査のため1
また資源の節約のために,無駄のない出力を可能とする
技術が望まれる。
〔従来の技術〕
トレース処理では.例えばプログラムの中でサブルーチ
ン呼び出しが起こった時点で,呼び出されたサブルーチ
ン名を出力したり.サブルーチンから復帰した時点で,
復帰元と復帰先のサブルーチン名を出力したり.cpu
が1命令を実行するたびに,その命令のアドレスと命令
コードとを出力したり.プログラムがオペレーティング
・システム(OS)に処理を依頌するたびに,その依頼
内容を出力したりすることを行う。これ以外にも目的に
応じてさまざまな情報をトレースデータとして出力する
ことができるようになっている。
また,出力情報の種類のうち,1つまたは複数の種類を
出力するように,使用者が指定できるものも多く用いら
れている。
これにより,トレースデータの利用目的に応して,必要
な種類のデータのみを出力し,トレースデータの量を圧
縮することが,ある程度,可能になっている。
例えば,命令ごとにトレースする場合に,全命令を出力
させず,命令の実行順序がアドレスの順にならない原因
となる分岐命令の実行のみをトレ−スしたり,ソースプ
ログラムの翻訳コードのうち.ソースプログラムの1行
の先頭命令のみをトレースしたり,オペレーティング・
システムへの処理依頼のみをトレースしたり.サブルー
チン呼び出しおよび復帰のみをトレースしたり,または
これらのうちのいくつかを組み合わせてトレースしたり
することにより8 トレースデータの出力量を少な《す
ることが可能である。
〔発明が解決しようとする課題〕
しかし,以上のような従来のトレースデータの種類を指
定することによるトレースデータ量の削減では.指定し
たトレースデータの種類に含まれるすべてのトレースデ
ータが出力されるため1例えばプログラムの停止原因を
調べるときには.あまり適当ではない。
その理由は,例えばメインルーチンが多数のサブルーチ
ンを呼び,各サブルーチンも他のサブルーチンを繰り返
し何段にもわたって呼ぶような場合,すべてのサブルー
チン呼び出しのトレースデータを出力すると,調査には
不要なデータが多世に含まれることになり,資源が無駄
になるだけでなく,その中から原因の調査に有効なデー
タを選別するための使用者の負担が非常に大きくなるか
らである。
さらに.プログラムの動作異常を調べるような場合には
,最後に停止したときに.そこへ至るまでの実行経路,
すなわちメインルーチンの中のどこから呼び出され,各
サブルーチンのどこから呼び出されてきたかを知る必要
があるために,単なる時間的順序による最近の一部のト
レースデータだけでは,調査資料として不十分である。
本発明は上記問題点の解決を図り,プログラムトレース
処理にあたって,特に被トレースプログラムが途中で停
止する場合に,その原因の調査に適した無駄のないトレ
ースデータの出力を可能にすることを目的としている。
〔課題を解決するための手段〕
第1図は本発明の原理説明図である。
第1図において.10は命令を読み出して実行するCP
U (中央処理装置).1lはプログラム等を格納する
主記憶装置,12はオペレーティング・システム(OS
),13はトレースプログラム,14はトレース対象と
なる被トレースプログラム,1scfトレース制御に用
いるスタソクテーブル.16は磁気ディスク装置等の外
部記憶装置,17はトレースデータを出力する出力ファ
イルを表す。
被トレースプログラム14についてトレースを行う場合
.トレースプログラム13は,OS12に依頼して,被
トレースプログラムI4を1命令実行させ.1つ前の命
令コードや,次に実行する命令のアドレスを,OS12
から受け取る。
トレースプログラム13は.OS12からcpU実行権
を受け取ると,OS12からの通知情報により,ある範
囲の事象が発生したかどうかを調べ.発生していれば,
OS12に依顧して,その事象に関するトレースデータ
を採取し.出力ファイル17にトレースデータを出力す
る.トレースプログラム13は.被トレースプログラム
14のサブルーチン呼び出しおよびサブルーチンからの
復帰を検出する処理機能を持つ。例えば,ジャンプサブ
ルーチン命令,リターンサブルーチン命令というような
特定の命令コードを判別することにより,サブルーチン
呼び出し,復帰を検出することができる。
サブルーチン呼び出しを検出すると.出力ファイル17
における最近の出力位置を示すファイルポインタを.ス
タソクテーブル15に退避し,方5サブルーチンからの
復帰を検出すると2スタックテーブルI5に退避してい
たファイルポインタを復元する,これにより,以後出力
されるデータは復元されたファイルポインタの位置以降
に出力される。
すなわち,本発明では.トレース処理開始後被トレース
プログラム14内で.あるサブルーチンへの呼び出しが
起こり.かつトレース終了時点までに,そのサブルーチ
ンからの復帰が起こった場合.その呼び出し時点から復
帰時点までに採取されたトレースデータの出力を抑止し
,またはその間に採取されたトレースデータの部分を削
除し,被トレースプログラム14におけるサブルーチン
呼び出しの深さに応じたトレースデータが,外部記憶装
置16上の出力ファイル17に蓄積されるようにする。
〔作用〕
例えばトレース処理の開始時に.出力ファイル17に対
するファイルポインタは.先頭のPOを指すように初期
化される。被トレースプログラム14におけるメインル
ーチンMAINの動作中において,トレースデータT1
が採取されると,ファイルポインタは,P1を指すよう
に更新される。
メインルーチンMAINが.サブルーチンSUB1を呼
び出すと.ファイルポインタptがスタックテーブルI
5に退避される。ここで,トレースデータT2が採取さ
れると.ファイルポインタP1の位置にトレースデータ
T2が出力され.その最終位置P2に,ファイルポイン
タが更新される。サブルーチンSUBIからメインルー
チンMAINに復帰すると.スタックテーブル15がら
のファイルポインタの復元により,ファイルポインタの
値は,PIと同じ値を持っP3となる。
次に,メインルーチンMAINからサブルーチンSUB
2の呼び出しを行うと,ファイルポインタP3の退避を
行う。ここで.出力されたトレースデータT3は.出力
ファイル17におけるP3の位置から書き出されること
になる。ファイルポインタはP4に更新される。
さらに,サブルーチンSUB2からサブルーチンSUB
3の呼び出しを行うと.ファイルポインタP4は退避さ
れ9サブルーチンSUB3におけるトレースデータT4
は.ファイルポインタP4の位置から書き出される。
以上の例から分かるように.呼び出したサブルーチンか
らの復帰が行われると,呼び出しから復帰までの間のト
レースデータの出力を実質的に削除した状態にし,次の
トレースデータの出力は.前のサブルーチンにおけるト
レースデータに上書きするようにする。
したがって,被トレースプログラムl4におけるサブル
ーチン呼び出しの深さに応じたトレースデータの出力だ
けが,出力ファイル17内に残るようになる。
〔実施例〕
第2図は本発明の実施例で用いるスタックテーブルの例
,第3図は本発明の実施例で用いる作業用データ格納域
の例,第4図は本発明の実施例に関連するファイルポイ
ンタ説明図,第5図は本発明の実施例で用いるアドレス
区間テーブルの例.第6図は本発明の実施例に係るトレ
ースプログラムの処理フローを示す。
第1図に示すトレースプログラム13は,トレースデー
タの出力先等の管理のために,主記tg装Ill上にス
タックテーブルl5を設けて管理する。スタックテーブ
ル15は,例えば第2図に示すような構成になっている
このスタックテーブル15は,被トレースプログラムl
4がサブルーチンを呼び出し,または復帰するごとに,
アクセス個所が上下に1つずつ変化し.いわゆるスタッ
クとして使用される.このスタノク番号は.サブルーチ
ン呼び出しの濶さに対応している。
第2図に示すように,スクノクテーブルl5は呼び出し
元サブルーチン名,呼び出し元の命令アドレス.そのレ
ベルでどのファイル位置からトレースデータを出力した
かを示すトレース出力開始ポインタからなる要素を並べ
た配列である。
トレースプログラムl3が使用する作業用データを格納
するために.第3図に示すように,主記憶装置1l上に
.現在スタソク番号の格納域30ファイルポインタの格
納域31,走行中サブルーチン名の格納域32,旧命令
アドレスの格納域33を設ける。
「現在スタック番号」は,スタノクテーブル15中の参
照個所を示し,それはまた.トレース開始時のサブルー
チン(通常の場合,メインルーチン)からの現在実行中
のサブルーチンの呼び出しまでの潔さを示す。この「現
在スタック番号」は,各呼び出しごとに+1され,各復
帰ごとに−1される。
「ファイルポインタ」は,外部記憶装置16に確保され
たトレースデータ出力用の出力ファイル17の卸域内を
示すポインタであって.ファイル先頭からの相対位置を
示す情報である。
「走行中サブルーチン名」は.現在実行されているサブ
ルーチンの名前である。
「旧命令アドレス」は,前に実行した命令のアドレスで
あって.サブルーチン呼び出し時に.スタソクテーブル
15の呼び出し元アドレスに設定するために用いられる
本実施例では,トレースプログラム13が出力ファイル
17にデータを出力するときに.次のようなシステム・
マクロ命令を用いる。
(1)ファイル・オープン命令 (2)  ファイルポインタ指示命令 (バラメタは,ファイルポインタなど)(3)出力命令 (パラメタは.データ長.バソファアドレスなど)(4
)  ファイル・クローズ命令 これらのシステム・マクロ命令は.周知の命令であるが
.特に.ファイルボインク指示命令および出力命令が関
連するファイルボインクについて第4図に従って説明す
る。
ファイル内の出力位置を示すファイルポインタは,トレ
ースプログラム13が管理するものと同じ値が,031
2の内部にも保管される。ファイル・オーブン直後のフ
ァイルポインタは.ファイルの先頭POを示す。出力命
令が実行されると,データが書き込まれた長さだけ.フ
ァイルポインタは加算され,次の書き込み位置Piに進
む。
ファイルポインタ指示命令が実行されると.このOS1
2内のファイルボインクが変更される。
出力命令の実行では.常にOS12内のファイルポイン
タが示す位置から後方に,データがのき出される. 本実施例では.サブルーチン名の管理のために,例えば
第5図に示すようなアドレス区間テーブルを用いる。
アドレス区間テーブルの要素は,被トレースプログラム
14を構成するメインルーチンまたはサブルーチンの名
前と,開始アドレス,終了アドレスからなる。開始アド
レスは,そのサブルーチンが占める範囲の最小アドレス
であり,終了アドレスは,最大アドレスである。
サブルーチン呼び出しが起こったときに,どのサブルー
チンが呼び出されたのかを.命令のアドレス情報とこの
アドレス区間テーブルとから求めることができる。
第6図は,第1図に示すトレースプログラム13の処理
フローを示している。
ここでは,トレースデータとして.サブルーチンの呼び
出しおよび復帰に関するデータの他に,OS12から通
知された特定の事象データを,出力するものとしている
。以下の説明における■〜[相]は.第6図に示す処理
■〜[相]に対応する.■ 被トレースプログラム14
のロードモジュールを参照し.第5図に示すアドレス区
間テープルを.主記憶装置11上に生成する。
■ OS12に依顛することにより.被トレースプログ
ラム14を主記憶装置11上にロードする。
■ ファイルポインタのゼロクリア,現在スタック番号
のゼロクリア,出力ファイルのオープンなど.各種の初
期化処理を行い,その後2 トレース処理を開始する。
■ 次実行命令アドレスを,第3図に示す旧命令アドレ
スの格納域33に保存する。そして,被トレースプログ
ラム14を1ステップ実行させることをOS12に依頬
し,その実行結果を待つ。被トレースプログラム14の
実行がすべて終了するか停止した場合には,処理[相]
へ移る。
■ 0512が,いわゆるシングルステップモードによ
り,被トレースプログラム14を実行させると,割り込
みが起きるので,OS12がらトレースプログラムに通
知がなされる。トレースプログラム13は,そのときの
旧実行命令コード,次実行命令アドレスを.OS12か
ら得■ また,OS12からの通知情報により9 トレ
ースの出力事象があるかどうかを判定する。出力事象が
ない場合.処理■へ移る。
■ 出力事象がある場合,OSl2からその事象に関す
るトレースデータを得る。
■ 事象データを出力ファイルl7に出力し,ファイル
ポインタをデータ長の分だけ進める。
■ 旧実行命令コードが,ジャンプサブルーチン命令で
あるかどうかなどにより.サブルーチン呼び出しがあっ
たかどうかを調べる。サブルーチン呼び出しでない場合
.処理■へ移る。
[相] サブルーチン呼び出しであった場合,次実行命
令アドレスをもとに,アドレス区間テーブルを調べ,被
呼び出しサブルーチン名を求める.■ サブルーチン呼
び出しを示すデータを出力ファイル17に出力し,ファ
イルポインタを進める. ■ 第2図に示すスタックテーブル15中の現在スタッ
ク番号の指す位置を次のように更新する.・走行中サブ
ルーチン名を,呼び出しサブルーチン名の格納域に設定
する。
・旧命令アドレスを.呼び出し元アドレスの格納域に設
定する。
・ファイルポインタを.トレース出力開始ポインタの格
納域に設定する。
■ 現在スタック番号を+1する。
■ 被呼び出しサブルーチン名を,走行中サブルーチン
名の格納域にセットし,処理■へ制御を戻し,同様に処
理を繰り返す。
[相] 旧実行命令コードが.リターンサブルーチン命
令であるかどうかなどにより,サブルーチン呼び出しか
らの復帰があったがどうかを調べる。
復帰でない場合.処理■へ制御を戻し.同様に処理を繰
り返す. [相] 現在スタンク番号を−1する。
O スタソクテーブル15中の現在スタソク番号の指す
位置のトレース出カ開始ポインタの値をパラメタとして
,ファイルポインタ指示命令を出す。すなわち,トレー
ス出力開始ポインタの値を.次のファイル出力位置に設
定する。その後.処理■へ制御を戻して,同様に処理を
繰り返す。
以上のように.トレースプログラム13は.被トレース
プログラム14におけるサブルーチン呼び出しのたびに
.それを示すトレースデータを出力し,またその直後の
ファイルポインタの値をスタックテーブル15にlして
,トレースを続け0512から通知されるトレースデー
タを1出力ファイル17に出力してい《。
サブルーチンからの復帰が起こると,復J%前のサブル
ーチンに関するトレース出力開始ポインタを.スタソク
テーブル15から読み出し,その値を指定して.ファイ
ルポインタ指示命令を発行する。以後.出力されるトレ
ースデータは,この位置から行われるので,上記復帰前
のサブルーチンの実行中に書き出されたトレースデータ
は,実際上,削除された形となる。
〔発明の効果〕
以上説明したように.本発明によれば.プログラムのト
レース終了時点までの1・レースデータには,途中で完
全に復帰したサブルーチンに関するトレースデータは含
まれず,しかもトレース開始時より,終了時までの直系
の呼び出し系列のトレースデータはすべて含まれるので
,トレース開始時からトレース終了時に至るまでの必要
な経路を容易に把握できるようになり,特にプログラム
が停止する場合の原因の調査などに非常に仔効である, また,完全に復帰したサブルーチン等における不要なト
レースデータが実質的に削除されることになるため,出
力ファイルなどの資源のfinが可能である。
【図面の簡単な説明】
第1図は本発明の原理説明図, 第2図は本発明の実施例で用いるスタノクテーブルの例 第3図は本発明の実施例で用いる作業用データ格納域の
例, 第4図は本発明の実施例に関連するファイルポインタ説
明図 第5図は本発明の実施例で用いるアドレス区間テーブル
の例5 第6図は本発明の実施例に係るトレースプログラムの処
理フローを示す。 図中,10はCPU.11は主記憶装置.12はOS,
13はトレースプログラム,14は被トレースプログラ
ム,15はスタソクテーブル,16は外部記憶装置.1
7は出力ファイルを表す。 特許出傅人 富士通株式会社 代 理 人  弁理士 小笠原吉義(外2名)第1図 スタンクテーブノレの例 第2図 作業用データ格納域の例 第3図 ファイルポインタ説明図 第4図 アドレス区間テーブルの例 第5図 トレースプログラム処理フロー 第 6 図(その1)

Claims (1)

  1. 【特許請求の範囲】 プログラムを格納するための主記憶装置(11)と、プ
    ログラム内の命令を読み出して実行するCPU(10)
    とを備え、CPUによって実行されるプログラムの実行
    状態を示す情報を順次採取して出力する情報処理システ
    ムにおけるトレースデータ出力処理方法において、 トレース処理開始後、被トレースプログラム内で、ある
    サブルーチンへの呼び出しが起こり、かつトレース終了
    時点までに、そのサブルーチンからの復帰が起こった場
    合、その呼び出し時点から復帰時点までに採取されたト
    レースデータの出力を抑止し、またはその間に採取され
    たトレースデータの部分を削除し、 被トレースプログラムにおけるサブルーチン呼び出しの
    深さに応じたトレースデータの出力を行うようにしたこ
    とを特徴とするトレースデータ出力処理方法。
JP1116659A 1989-05-10 1989-05-10 プログラムトレース装置 Expired - Fee Related JP2795676B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1116659A JP2795676B2 (ja) 1989-05-10 1989-05-10 プログラムトレース装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1116659A JP2795676B2 (ja) 1989-05-10 1989-05-10 プログラムトレース装置

Publications (2)

Publication Number Publication Date
JPH02294845A true JPH02294845A (ja) 1990-12-05
JP2795676B2 JP2795676B2 (ja) 1998-09-10

Family

ID=14692719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1116659A Expired - Fee Related JP2795676B2 (ja) 1989-05-10 1989-05-10 プログラムトレース装置

Country Status (1)

Country Link
JP (1) JP2795676B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233363A (ja) * 1992-02-24 1993-09-10 Fujitsu General Ltd エミュレータのトレース装置
JP2007249490A (ja) * 2006-03-15 2007-09-27 Fujitsu Ltd 障害ログ自動選択収集方法および装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62257560A (ja) * 1986-04-30 1987-11-10 Nec Corp 主記憶内容の退避方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62257560A (ja) * 1986-04-30 1987-11-10 Nec Corp 主記憶内容の退避方式

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233363A (ja) * 1992-02-24 1993-09-10 Fujitsu General Ltd エミュレータのトレース装置
JP2007249490A (ja) * 2006-03-15 2007-09-27 Fujitsu Ltd 障害ログ自動選択収集方法および装置

Also Published As

Publication number Publication date
JP2795676B2 (ja) 1998-09-10

Similar Documents

Publication Publication Date Title
US5274813A (en) Operation system having a migration function which moves saved data associated with an interrupted process to a different save area
US5471595A (en) Asynchronous interrupt inhibit method and apparatus for avoiding interrupt of an inseparable operation
US20010047472A1 (en) System and method for altering an operating system start-up sequence prior to operating system loading
JPH0628402A (ja) アクティブなデータ辞書を維持するためのデータ辞書マネージャ
EP0972256B1 (en) Computer file system providing looped file structure for post-occurrence data collection of asynchronous events
CN110427258A (zh) 基于云平台的资源调度控制方法及装置
US6647479B1 (en) Computer file system providing looped file structure for post-occurrence data collection of asynchronous events
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
GB2320343A (en) computer system with checkpoint facility
CN109388505B (zh) 一种基于Android的异步多任务顺序加载方法
JPH02294845A (ja) プログラムトレース装置
JP3538292B2 (ja) 実行時プログラム翻訳方法
US7191443B2 (en) Digital device, task management method and program therefor
JP2526728B2 (ja) ディスクキャッシュ自動利用方式
JP2576375B2 (ja) 編集中文書自動保存方式
KR20190069134A (ko) 응용 프로그램간 파일 공유 장치 및 방법
JP4149619B2 (ja) 優先度変換システム
JPS62194559A (ja) 仮想記憶システムにおけるプログラムのメモリスケジユ−ル方式
JPH0546452A (ja) コミツトメント制御システム
JPH06168079A (ja) データバックアップシステム
Gilmore Deimos user manual
GB2362246A (en) Computer system with checkpoint facility.
JPWO2004023308A1 (ja) データ抽出方法およびデータ抽出装置
JPH0820992B2 (ja) 制御ジャーナル出力装置
JPH07334377A (ja) 情報処理装置

Legal Events

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