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

プログラムトレース装置

Info

Publication number
JP2795676B2
JP2795676B2 JP1116659A JP11665989A JP2795676B2 JP 2795676 B2 JP2795676 B2 JP 2795676B2 JP 1116659 A JP1116659 A JP 1116659A JP 11665989 A JP11665989 A JP 11665989A JP 2795676 B2 JP2795676 B2 JP 2795676B2
Authority
JP
Japan
Prior art keywords
subroutine
trace
output
program
file
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.)
Expired - Fee Related
Application number
JP1116659A
Other languages
English (en)
Other versions
JPH02294845A (ja
Inventor
陽太郎 北館
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)

Description

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

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】プログラムの実行状態を示す情報であるト
    レースデータを順次採取して所定の領域に記憶するプロ
    グラムトレース装置であって, サブルーチン呼び出しの度に,該サブルーチンのトレー
    スデータを格納する場所を特定する情報を記憶する手段
    と, トレースデータを順次記憶する手段と, サブルーチンからの復帰の際に,該サブルーチンに関し
    て呼び出し時点から復帰時点までに採取されたトレース
    データについての出力を抑止または削除する手段とを有
    する ことを特徴とするプログラムトレース装置。
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 JPH02294845A (ja) 1990-12-05
JP2795676B2 true 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)

Families Citing this family (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 エミュレータのトレース装置
JP5040129B2 (ja) * 2006-03-15 2012-10-03 富士通株式会社 障害ログ自動選択収集方法および装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0740236B2 (ja) * 1986-04-30 1995-05-01 日本電気株式会社 主記憶内容の退避方式

Also Published As

Publication number Publication date
JPH02294845A (ja) 1990-12-05

Similar Documents

Publication Publication Date Title
JP2749528B2 (ja) エラー解析用のトレーサシステム
US9405777B2 (en) Registry emulation
US6922827B2 (en) Iterative software development environment with prioritized build rules
US8453121B2 (en) Managing the tracing of the execution of a computer program
US5701493A (en) Exception handling method and apparatus in data processing systems
EP1215577A3 (en) Fault management and recovery based on task-ID
US7596780B2 (en) System and method for virtual catching of an exception
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
US6735774B1 (en) Method and apparatus for system call management
JP2795676B2 (ja) プログラムトレース装置
JPS6362039A (ja) 計算機
US6185597B1 (en) Method and system for expanding a buried stack frame
EP0417916B1 (en) Procedure state descriptor system for digital data processors
US5241634A (en) Method of handling system calls to an operating system of a computer by system service routines stored as firmware
JPH0731617B2 (ja) プログラム暴走検知方法
JP2885907B2 (ja) オンライン中タスク処理時間分析方式
JPH03225535A (ja) プログラムトレース方式
JP2526728B2 (ja) ディスクキャッシュ自動利用方式
JP3097750B2 (ja) オンライン中の情報収集方式
JP2551075B2 (ja) オーバレイ構造プログラム実行方式
JPH0997182A (ja) プログラム変換装置およびデバッグ装置
JP3293821B2 (ja) 動的リンクシステム
JPH08153026A (ja) プログラム性能評価用データの測定方法およびそのための測定装置
JPH06187192A (ja) プログラム出力制御方法
JPH0827751B2 (ja) トランザクション資源動的更新方式

Legal Events

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