JP2010079343A - トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法 - Google Patents

トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法 Download PDF

Info

Publication number
JP2010079343A
JP2010079343A JP2008243609A JP2008243609A JP2010079343A JP 2010079343 A JP2010079343 A JP 2010079343A JP 2008243609 A JP2008243609 A JP 2008243609A JP 2008243609 A JP2008243609 A JP 2008243609A JP 2010079343 A JP2010079343 A JP 2010079343A
Authority
JP
Japan
Prior art keywords
trace
data
loop
buffer
analysis
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
JP2008243609A
Other languages
English (en)
Other versions
JP5024252B2 (ja
Inventor
Naoki Kataoka
直記 片岡
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008243609A priority Critical patent/JP5024252B2/ja
Publication of JP2010079343A publication Critical patent/JP2010079343A/ja
Application granted granted Critical
Publication of JP5024252B2 publication Critical patent/JP5024252B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 ループ実行中のトレースパターンは変化する。
【解決手段】 トレース採取装置は、被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリを備える。同装置は、被トレース処理内の第1のループの各回の実行により生成される各々のトレースデータ(第1の区間データ)を入力する解析部も備える。同部は、入力データが、当該第1の区間データが第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した第1の区間データを第1のパターン表および第1の解析バッファに追記する。同部は、パターン一致を検出すると、第1の区間データの少なくとも一部を第1の解析バッファに格納せず、第1ループの終了を検出すると、第1の解析バッファの内容をトレースバッファに出力する。
【選択図】 図1

Description

本発明はトレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法に関する。
ループ実行中にトレース情報を取得すると、同じパターンのトレース情報が繰り返し出力されることがある。この場合、大きなトレース用記憶域が必要となるうえ、解析が困難になる。または、情報が上書きされて失われる。これを解決するため、以下の技術が提案されている。
特許文献1には、マイクロ命令語の予め定めた特定パターンを検出した場合に、履歴登録を抑制する履歴登録制御回路が記載されている。特許文献2には、第1回目のループ終了によりトレースを終了し、最後のループ終了と同時にトレースを再開するトレースマスク制御回路が開示されている。
特開昭57−19854 特開平11−73344
ループ実行中のトレースパターンは変化する。従って、特許文献1における特定パターンを予め決定しておくことは出来ない場合が多い。特許文献2では、第2回目以降のループで新たに出現したパターンのトレース情報は失われるという課題があった。
本発明は、上述した課題を解決するための、トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法を提供することを目的とする。
本発明の一実施形態のトレース採取装置は、被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリと、前記被トレース処理内の第1のループの各回の実行により生成される各々の前記トレースデータ(第1の区間データ)を入力して、当該第1の区間データが前記第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した前記第1の区間データを前記第1のパターン表および前記第1の解析バッファに追記し、前記パターン一致を検出すると、前記第1の区間データの少なくとも一部を前記第1の解析バッファに格納せず、前記第1ループの終了を検出すると、前記第1の解析バッファの内容を前記トレースバッファに出力する解析部を備える。
本発明の一実施形態のトレース採取プログラムは、被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリを備えたコンピュータに、前記被トレース処理内の第1のループの各回の実行により生成される各々の前記トレースデータ(第1の区間データ)を入力して、当該第1の区間データが前記第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した前記第1の区間データを前記第1のパターン表および前記第1の解析バッファに追記し、前記パターン一致を検出すると、前記第1の区間データの少なくとも一部を前記第1の解析バッファに格納せず、前記第1ループの終了を検出すると、前記第1の解析バッファの内容を前記トレースバッファに出力する解析部を実行させる。
本発明の一実施形態のトレース採取方法は、被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリを備えたコンピュータが、前記被トレース処理内の第1のループの各回の実行により生成される各々の前記トレースデータ(第1の区間データ)を入力して、当該第1の区間データが前記第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した前記第1の区間データを前記第1のパターン表および前記第1の解析バッファに追記し、前記パターン一致を検出すると、前記第1の区間データの少なくとも一部を前記第1の解析バッファに格納せず、
前記第1ループの終了を検出すると、前記第1の解析バッファの内容を前記トレースバッファに出力する解析工程を有する。
パターンが変化するループ実行中に、同じシーケンスのトレース情報が大量に出力されるのを防止しつつ、異なるシーケンスのトレース情報は取得できる。
図1は、本発明の第1の実施形態にかかるトレース採取装置10の構成図である。トレース採取装置10は、トレースファイル12、生成部14、解析部15、出力部16、メモリ20を備える。メモリ20は、ループ管理表21、レベル記憶域22、トレース領域23を格納する。メモリ20は、被トレース処理プログラム24、トレース採取プログラム25を格納していても良い。
生成部14は、トレースの対象となる処理(被トレース処理)を実行してトレースデータ30を生成して、解析部15に出力する。生成部14は機器の制御装置などであってハードウェアで実現される。また、生成部14は、コンピュータ11であるトレース採取装置10のプロセッサ13が、業務処理などを行う被トレース処理プログラム24を実行することで実現されても良い。
解析部15は、トレースデータ30を入力してトレース領域23に順次格納する。但し、解析部15は、被トレース処理のループ実行中に発生したパターンをループ管理表21に記録し、同一パターンのトレース情報は以降のループ実行中にトレース領域23に格納しない。
出力部16は、定期的またはトレース領域23の使用率が高いとき等に、トレース領域23に格納されたトレースデータ30をトレースファイル12に出力する。出力部16は無くても良い。
解析部15および出力部16はハードウェアで実現される。解析部15または出力部16は、コンピュータ11であるトレース採取装置10のプロセッサ13が、トレース採取プログラム25を実行することで実現されても良い。
レベル記憶域22は、被トレース処理の実行中ループのネストのレベル数(包含関係の階層数)を格納する。被トレース処理がループ実行中でないときこの値は、例えば0である。一番外側のループ(第1のループ)実行中、レベル記憶域22は、例えば、1を格納する。第1のループにネストして包含される内側のループ(第2のループ)実行中、レベル記憶域22は、例えば、2を格納する。 以降、実行中ループのネストが増すたびに、レベル記憶域22は、1多い値を格納する。レベル記憶域22の初期値は0である。
図2はトレースデータ30の構成を示す。トレースデータ30は種別31と付加データ32を包含する。種別31は当該トレースデータ30が生成された事象の種類を示す。種別31は、例えば、loop entry、loop exit、loop pattern、他事象通知などである。loop entry、loop exitはおのおのループの開始と終了を示す。
loop patternはループ先頭の実行を示す。即ち、loop patternは、ループの各回の実行の開始と終了を示す。本発明に於いて、ループの一回の実行で生成されるトレースデータ30の集合が区間データである。区間データは、ある回のループの実行開始を示すloop patternから次回の当該ループの実行開始を示すloop patternの直前までのトレースデータ30の集合である。または、区間データは、ある回のループの実行開始を示すloop patternからループ終了を示すloop exitの直前までのトレースデータ30の集合である。
他事象通知は、上記以外の事象の発生を通知するトレースデータ30である。他事象通知は、例えば、routine entry/routine exit(一般関数コール開始/終了)、MPI entry/MPI exit(MPI関数コール開始/終了)、send(メッセージ送信)などがある。ここで、MPIは、Message Passing Interfaceを意味する。
付加データ32は、通知する事象に応じた詳細通知データである。loop entry、loop exit、loop patternの付加データ32は、ループの識別子などを包含する。他事象通知の付加データ32は、関数名やパラメータ値などを包含する。
図3は、被トレース処理プログラム24のソースコード例(1)を示す。被トレース処理プログラム24は、ループを含むプログラム(図中左側)に、例えば、トレース関数コールを挿入したもの(図中右側)である。トレース関数は、プロセッサ13で実行されると、例えば、当該関数名と同じ種別31を持つトレースデータ30を生成する。例えば、プロセッサ13がloop_entry関数を実行すると、loop entryのトレースデータ30を生成する。なお、MPI entry、MPI exit、sendの各トレースデータ30は、MPI_send関数で生成される。
図から明らかなように、loop_entry関数、loop_exit関数は、おのおの、ループの開始直前と終了直後の位置に挿入される。loop_pattern関数は、ループ内の先頭実行命令の直前に挿入される。routine_entry関数、routine_exit関数は、おのおの、関数コール(本図に於いては、calc1関数やcalc2関数コール)の直前直後に挿入される。専用のツールやコンパイラが、被トレース処理プログラム24のソースプログラムの文脈を解析して、自動的にトレース関数を挿入する。プログラマが人手により挿入しても良い。
付加データ32は、トレース関数のパラメータとして入力されても良いし、トレース関数内で生成されても良い。
トレースデータ30は、トレース関数によらず、被トレース処理プログラム24が直接生成しても良い。例えば、コンパイラが被トレース処理プログラム24のソースプログラム(図中左側)をコンパイルするときにトレースデータ30を生成するための命令を、オブジェクトプログラムに挿入しても良い。
図4は、トレース領域23の構成を示す図である。トレース領域23は、トレースバッファ40と、領域ポインタ41を包含する。トレースバッファ40はトレースデータ30を順次格納する。トレースバッファ40は、通常、循環バッファである。領域ポインタ41は、トレースバッファ40の空き領域の先頭アドレスを指す。初期値は、トレースバッファ40の先頭アドレスである。
解析部15は、トレースデータ30をトレースバッファ40に追記するときは、先ず、領域ポインタ41が指す領域以降にトレースデータ30を格納する。格納後、同部は当該追記データの直後のアドレス(満杯時は、トレースバッファ40の先頭アドレス)を領域ポインタ41に格納する。
図5は、ループ管理表21の構成を示す。ループ管理表21はループネストの各レベルに対応して存在する。即ち、ループ管理表21はレベル格納域22の1以上の各値に対応して存在する。各レベル対応のループ管理表21は、解析バッファ50、バッファポインタ51、パターン表52、表ポインタ53を包含する。
解析バッファ50はトレースデータ30を順次格納する。解析バッファ50の初期値は例えばゼロである。バッファポインタ51は、解析バッファ50の空き領域の先頭アドレスを指す。バッファポインタ51の初期値は、解析バッファ50の先頭アドレスである。
解析部15は、トレースデータ30を解析バッファ50に追記するときは、バッファポインタ51が指す領域以降にトレースデータ30を格納して、格納後、当該追記データの直後のアドレスをバッファポインタ51に格納する。
パターン表52は、パターンID54とパターンデータ55を対応させて順次格納する。パターン表52の初期値は、例えば、ゼロである。パターンデータ55は区間データ、即ち、トレースデータ30の集合である。パターンデータ55はその他のデータを包含しても良い。表ポインタ53は、パターン表52の空き領域の先頭アドレスを指す。表ポインタ53の初期値は、パターン表52の先頭アドレスである。
解析部15は、パターンデータ55をパターン表52に追記するときは、表ポインタ53が指す領域以降にパターンデータ55を格納して、格納後、当該追記データの直後のアドレスを表ポインタ53に格納する。
第1のループに対応するループ管理表21は、第1の解析バッファ61および第1のパターン表62を包含する。 第2のループに対応するループ管理表21は、第2の解析バッファ63および第2のパターン表64を包含する。ここで、第1のループは、一番外側のループを指し、ループネストのレベル(レベル格納域22の値)が1のループである。第2のループは、第1のループ内でネストしているループを指し、ループネストのレベルが2のループである。
なお、ある時点のレベル記憶域22の値(1以上)に対応するループ管理表21、解析バッファ50、パターン表52は、その時点に於けるカレントレベルのループ管理表21、解析バッファ50、パターン表52と呼ばれる。例えば、ある時点でレベル記憶域22の値が1であれば、その時点に於けるカレントレベルの解析バッファ50は、第1の解析バッファ61である。ある時点でレベル記憶域22の値が2であれば、その時点に於けるカレントレベルの解析バッファ50は、第2の解析バッファ63である。
図6は、解析部15の動作フローチャートである。まず、解析部15は、生成部14から入力したトレースデータ30の種別31を判定する(S1)。
種別31が他事象通知である場合、同部はループネストのレベル(レベル記憶域22の値)を判定する(S5)。レベルが0であれば(S5でY)、同部は、入力したトレースデータ30をトレースバッファ40に追記して(S6)動作を終了する。レベルが0でなければ(S5でN)、同部は、入力したトレースデータ30をカレントレベルの解析バッファ50に追記して(S9)動作を終了する。即ち解析部15は、入力したトレースデータ30を、生成部14がループ実行中であればカレントレベルの解析バッファ50に、生成部14がループ実行中でなければトレースバッファ40に追記する。
種別31がループ開始である場合、解析部15は、入力したトレースデータ30を、生成部14がループ実行中であればカレントレベルの解析バッファ50に、生成部14がループ実行中でなければトレースバッファ40に追記する(S5、S6、S9)。その後、同部は、レベル記憶域22の値を1加算し、カレントレベルのループ管理表21を初期化する(S8)。ループ管理表21の初期化は、バッファポインタ51、表ポインタ53、解析バッファ50およびパターン表52の初期化を包含する。
種別31がループ先頭実行である場合、解析部15はカレントレベルの解析バッファ50が空(初期状態)であるかを判定する(S2)。空でない場合(S2でN)、同部は同一パターン検出処理(図7参照)を実行する(S3)。空である場合(S2でY)、同部は同一パターン検出処理をスキップする。このスキップは、ループ開始に続く最初のループ先頭実行を示すトレースデータ30が入力された場合に発生する。その後、同部は、入力したトレースデータ30をカレントレベルの解析バッファ50に追記して(S4)動作を終了する。
種別31がループ終了である場合、解析部15は、同一パターン検出処理(図7参照)の実行、入力トレースデータ30のカレントレベルの解析バッファ50への追記、レベル記憶域22の値の1減算を行う(SA、SB、SC)。その後、同部はループネストのレベル(レベル記憶域22の値)を判定する(SD)。レベルが0であれば(SDでY)、同部は、第1の解析バッファ50の内容をトレースバッファ40に追記して(SE)動作を終了する。レベルが0でなければ(SDでN)、同部は、元のレベルの解析バッファ50の内容をカレントレベルの解析バッファ50に追記して(SF)動作を終了する。
図7は、解析部15の同一パターン検出処理部分の動作フローチャートである。カレントレベルのパターン表52が空(初期値)であると(S11でY)、解析部15はパターン表52への登録処理を行う。カレントレベルのパターン表52が空(初期値)であるのは、ループ開始後、2回目のループ先頭実行を示すトレースデータ30が入力された場合、即ち、ループの初回実行が終了した場合に発生する。
同部はパターンID54を生成してパターン表52に追記する(S12)。パターンID54は、例えば、入力したループ先頭実行を示すトレースデータ30が有する付加データ32内のループの識別子(処理中ループ識別子)にトレース採取装置10に一意の通し番号を付加して生成する。
その後、同部は、最新区間開始データ以降のカレントレベルの解析バッファ50のトレースデータ30をパターン表52のパターンデータ55に追記する。最新区間開始データは、処理中ループ識別子と同じループ識別子を持つ最新(前回)のループ先頭実行を示すトレースデータ30である(S13)。即ち同部は、最新の区間データをパターン表52に追記する。最新の区間データはループの最新回の実行で生成された区間データである。このとき同部は、パターンデータ55に最新の区間データの終端を示すデータを付加して追記しても良い。例えば、同部は、パターンID54の直後に最新の区間データのサイズを追記しても良い。または、同部は、区間データの最後に、区切り符号(パターンデータ55として発生し得ない値など)を付加しても良い。
同部は、カレントレベルの解析バッファ50の最新の区間開始データにパターンID54を付加して(S14)、同一パターン検出処理を終了する。パターンID54の付加は、例えば、付加データ32内のループの識別子を書き換えることで行う。
カレントレベルのパターン表52が空でないと(S11でN)、解析部15は、最新の区間データとパターン表52に登録済み区間データのおのおのと一致判定を行う(S15)。同部は、パターン表52に登録済みの区間データを順次取得し、当該区間データ内の各トレースデータ30と最新の区間データ内の各トレースデータ30を先頭から順次対比し、全てが一致するパターン表52に登録済みの区間データ(一致区間データ)を検索する。このとき、同部は、対比するトレースデータ30の種別31および付加データ32の全部を対比しても良い。同部は、種別31だけ、または、種別31および付加データ32の一部(例えば、ある特定のパラメータ値など)だけを比較しても良い。
一致区間データを発見できた場合(S16でY)、同部は、カレントレベルの解析バッファ50の最新区間開始データに一致区間データのパターンID54を付加する(S17)。このパターンID54は、当該パターンID54のパターンのトレースデータ30が生成されたことを示す。次に、同部は、バッファポインタ51の値を当該トレースデータ30の次のアドレスを示すように戻して(S18)、同一パターン検出処理を終了する。即ち同部は、最新の区間データ中、最新区間開始データ以外を破棄(後続データで上書き)する。
一致区間データを発見できない場合(S16でN)、同部はパターン表52への登録処理を行う(S12、S13、S14)。
以下は、本実施形態の動作の具体例に則した説明である。図8は、プロセッサ13が図3に示した被トレース処理プログラム24の例(1)を実行した場合に生成するトレースデータ30の例(1)を示す。プログラム中の変数Nは2であるとする。なお、図8に示す通番33は説明のリファレンス用に記載したものであり、必ずしも実際に生成されるデータではない。以降の図に於いても同様であり、通番33は、必ずしも実際にトレースバッファ40やパターン表52に格納されているわけではない。
解析部15は、t1乃至t3のトレースデータ30をトレースバッファ40に追記する。同部は、t3でレベル1のループ管理表21を初期化して、t4乃至t9のトレースデータ30をレベル1の解析バッファ50に追記する。同部は、t10でt4乃至t9のトレースデータ30を区間データとしてパターン表52に追記する。図9は、解析部15が、図8のトレースデータ30の例(1)を入力して作成したパターン表52の例(1)である。パターンID54は、ループの識別子(L1)にP1を付加したものとしている。
同部は、t10乃至t15のトレースデータ30を解析バッファ50に追記する。t16において、同部は、最新の区間データ(t10乃至t15)とパターン表52に登録された区間データ(t4乃至t9)の一致を検出する。同部は、バッファポインタ51を操作してt11乃至t15のトレースデータ30を破棄する。同部は、最後にt16のトレースデータ30を解析バッファ50に追記して、解析バッファ50の内容をトレースバッファ40に追記して処理を終了する。図10は、解析部15が、図8のトレースデータ30の例(1)を入力して作成したトレースバッファ40の例(1)である。
図11は、被トレース処理プログラム24のソースコード例(2)を示す。図12は、プロセッサ13が図11に示した被トレース処理プログラム24の例(2)を実行した場合に生成するトレースデータ30の例(2)を示す。プログラム中の変数Nは3であるとする。
解析部15は、t1のトレースデータ30をトレースバッファ40に追記する。同部は、t1でレベル1のループ管理表21を初期化して、t2乃至t7のトレースデータ30をレベル1の解析バッファ50に追記する。同部は、t8でt2乃至t7のトレースデータ30を区間データとしてパターン表52に追記する。さらに、同部は、t8乃至t10を解析バッファ50に格納し、t11でt8乃至t10のトレースデータ30を区間データとしてパターン表52に追加して追記する。図13は、解析部15が、図12のトレースデータ30の例(2)を入力して作成したパターン表52の例(2)である。パターンID54は、ループの識別子(L1)にP1、P2を付加したものとしている。
同部は、t11乃至t13のトレースデータ30を解析バッファ50に追記する。t14において、同部は、最新の区間データ(t11乃至t13)とパターン表52に登録された区間データ(t8乃至t10)の一致を検出する。同部は、バッファポインタ51を操作してt12とt13のトレースデータ30を破棄する。同部は、最後にt14のトレースデータ30を追記して、解析バッファ50の内容をトレースバッファ40に追記して処理を終了する。図14は、解析部15が、図12のトレースデータ30の例(2)を入力して作成したトレースバッファ40の例(2)である。
図15は、被トレース処理プログラム24のソースコード例(3)を示す。図16は、プロセッサ13が図15に示した被トレース処理プログラム24の例(3)を実行した場合に生成するトレースデータ30の例(3)を示す。プログラム中の変数Nは3であるとする。図17は、解析部15が、図16のトレースデータ30の例(3)を入力して作成したパターン表52の例(3)である。図18は、解析部15が、図16のトレースデータ30の例(3)を入力して作成したトレースバッファ40の例(3)である。
図19は、被トレース処理プログラム24のソースコード例(4)を示す。このプログラムは、ネストしたループを持つ。図20は、プロセッサ13が図19に示した被トレース処理プログラム24の例(4)を実行した場合に生成するトレースデータ30の例(4)を示す。プログラム中の変数M、Nは2であるとする。
解析部15は、t1のトレースデータ30をトレースバッファ40に追記する。同部は、t1でレベル1のループ管理表21を初期化して、t2およびt3のトレースデータ30をレベル1の解析バッファ50に追記する。同部は、t3でレベル2のループ管理表21を初期化して、t4乃至t6のトレースデータ30をレベル2の解析バッファ50に追記する。同部は、t7でt4乃至t6のトレースデータ30を区間データとしてレベル2のパターン表52に追記する。図21は、解析部15が、図20のトレースデータ30の例(4)を入力して作成したレベル2のパターン表52の例(4−1)である。パターンID54は、ループの識別子(L2)にP1を付加したものとしている。
同部は、t7乃至t9のトレースデータ30を解析バッファ50に追記する。t10において、同部は、最新の区間データ(t7乃至t9)とパターン表52に登録された区間データ(t4乃至t6)の一致を検出する。同部は、バッファポインタ51を操作してt8とt9のトレースデータ30を破棄する。ここで同部は、レベル2の解析バッファ50にt10のトレースデータ30を追記して、レベル(レベル記憶域22の値)を2から1に下げて、レベル2の解析バッファ50内容をレベル1の解析バッファ50に追記する。ここで追記されるデータは、t4乃至t10のトレースデータ30である。但し、t8およびt9は破棄されている。
同部は、t11乃至t13をレベル1の解析バッファ50に格納して、t14でt2乃至t13のトレースデータ30を区間データとしてレベル1のパターン表52に追加して追記する。図22は、解析部15が、図20のトレースデータ30の例(4)を入力して作成したレベル1のパターン表52の例(4−2)である。パターンID54は、ループの識別子(L1)にP1を付加したものとしている。
同部は、t15乃至t25で上述のt3乃至t13と同様に処理し、t26において、最新の区間データ(t14乃至t25)とパターン表52に登録された区間データ(t2とt13)の一致を検出する。同部は、バッファポインタ51を操作してt15乃至t25のトレースデータ30を破棄する。同部は、最後にt26のトレースデータ30を付加して、解析バッファ50の内容をトレースバッファ40に格納して処理を終了する。図23は、解析部15が、図19のトレースデータ30の例(4)を入力して作成したトレースバッファ40の例(4)である。
本実施形態のトレース採取装置10は、パターンが変化するループ実行中に、同じシーケンスのトレースデータ30が大量に出力されるのを防止しつつ、異なるシーケンスのトレースデータ30は取得できる。その理由は、解析部15が、新規のパターンをループ管理表21に登録し、登録済みパターンのトレースデータ30の少なくとも一部はトレース領域23に出力しないからである。
また、本実施形態のトレース採取装置10は、ループのネストが存在しても、上述の効果を奏する。その理由は、ループ管理表21をループネストのレベル対応に設け、解析部15がパターンの登録、検出をネストレベル対応に実行するからである。
図24は、本発明の第2の実施形態にかかるトレース採取システム70の構成を示す。トレース採取システム70は、トレース採取装置10および当該トレース採取装置10に接続される外部生成装置71を包含する。本実施形態に於いて、トレース採取装置10は、生成部14を備えていなくても良い。トレースデータ30は、外部生成装置71から解析部15に入力される。他の点は、第1の実施形態と同じである。
外部生成装置71は、制御装置などであってハードウェアで実現されている。外部生成装置71は、内部の記憶装置と演算装置を備え、当該演算装置が当該記憶装置に格納された被トレース処理プログラム24を実行することで実現されても良い。
本実施形態のトレース採取システム70は、当該装置外の被トレース処理のトレースデータ30を採取できる。その理由は、トレースデータ30は外部生成装置71から入力するからである。
図25は、本発明の基本的構成を示す。本発明にかかるトレース採取装置10は、被トレース処理の実行により生成されるトレースデータ30を順次格納するトレースバッファ40と、第1のパターン表62と、第1の解析バッファ61を格納するメモリ20を備える。更に、同装置は、被トレース処理内の第1のループの各回の実行により生成される各々のトレースデータ30(第1の区間データ)を入力する解析部15を備える。同部は、入力データが、当該第1の区間データが第1のパターン表62にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した第1の区間データを第1のパターン表62および第1の解析バッファ61に追記する。また、同部は、パターン一致を検出すると、第1の区間データの少なくとも一部を第1の解析バッファ61に格納せず、第1ループの終了を検出すると、第1の解析バッファ61の内容をトレースバッファ40に出力する。
図1は、本発明の第1の実施形態にかかるトレース採取装置10の構成図である。 図2はトレースデータ30の構成を示す。 図3は、被トレース処理プログラム24のソースコード例(1)を示す。 図4は、トレース領域23の構成を示す図である。 図5は、ループ管理表21の構成を示す。 図6は、解析部15の動作フローチャートである。 図7は、解析部15の同一パターン検出処理部分の動作フローチャートである。 図8は、プロセッサ13が図3に示した被トレース処理プログラム24の例(1)を実行した場合に生成するトレースデータ30の例(1)を示す。 図9は、解析部15が、図8のトレースデータ30の例(1)を入力して作成したパターン表52の例(1)である。 図10は、解析部15が、図8のトレースデータ30の例(1)を入力して作成したトレースバッファ40の例(1)である。 図11は、被トレース処理プログラム24のソースコード例(2)を示す。 図12は、プロセッサ13が図11に示した被トレース処理プログラム24の例(2)を実行した場合に生成するトレースデータ30の例(2)を示す。 図13は、解析部15が、図12のトレースデータ30の例(2)を入力して作成したパターン表52の例(2)である。 図14は、解析部15が、図12のトレースデータ30の例(2)を入力して作成したトレースバッファ40の例(2)である。 図15は、被トレース処理プログラム24のソースコード例(3)を示す。 図16は、プロセッサ13が図15に示した被トレース処理プログラム24の例(3)を実行した場合に生成するトレースデータ30の例(3)を示す。 図17は、解析部15が、図16のトレースデータ30の例(3)を入力して作成したパターン表52の例(3)である。 図18は、解析部15が、図16のトレースデータ30の例(3)を入力して作成したトレースバッファ40の例(3)である。 図19は、被トレース処理プログラム24のソースコード例(4)を示す。 図20は、プロセッサ13が図19に示した被トレース処理プログラム24の例(4)を実行した場合に生成するトレースデータ30の例(4)を示す。 図21は、解析部15が、図20のトレースデータ30の例(4)を入力して作成したレベル2のパターン表52の例(4−1)である。 図22は、解析部15が、図20のトレースデータ30の例(4)を入力して作成したレベル1のパターン表52の例(4−2)である。 図23は、解析部15が、図19のトレースデータ30の例(4)を入力して作成したトレースバッファ40の例(4)である。 図24は、本発明の第2の実施形態にかかるトレース採取システム70の構成を示す。 図25は、本発明の基本的構成を示す。
符号の説明
10 トレース採取装置
11 コンピュータ
12 トレースファイル
13 プロセッサ
14 生成部
15 解析部
16 出力部
20 メモリ
21 ループ管理表
22 レベル記憶域
23 トレース領域
24 被トレースプログラム
25 トレース採取プログラム
30 トレースデータ
31 種別
32 付加データ
33 通番
40 トレースバッファ
41 領域ポインタ
50 解析バッファ
51 バッファポインタ
52 パターン表
53 表ポインタ
54 パターンID
55 パターンデータ
61 第1の解析バッファ
62 第1のパターン表
63 第2の解析バッファ
64 第2のパターン表
70 トレース採取システム
71 外部生成装置

Claims (11)

  1. 被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリと、
    前記被トレース処理内の第1のループの各回の実行により生成される各々の前記トレースデータ(第1の区間データ)を入力して、当該第1の区間データが前記第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した前記第1の区間データを前記第1のパターン表および前記第1の解析バッファに追記し、
    前記パターン一致を検出すると、前記第1の区間データの少なくとも一部を前記第1の解析バッファに格納せず、
    前記第1ループの終了を検出すると、前記第1の解析バッファの内容を前記トレースバッファに出力する解析部を備える、トレース採取装置。
  2. 第2のパターン表と、第2の解析バッファを格納する前記メモリと、
    前記第1のループ内に包含される第2のループの各回の実行により生成される各々の前記トレースデータ(第2の区間データ)を入力して、前記第2の区間データが前記第2のパターン表に格納されたいずれかの第2の区間のトレースデータとの一致(パターン一致)を検出すると、前記第2の区間データを前記第2のパターン表および前記第2の解析バッファに追記し、
    前記パターン一致を検出しないと、前記第2の区間データの少なくとも一部を前記第2の解析バッファに格納せず、
    前記第2のループの終了を検出すると、前記第2の解析バッファの内容を前記第1の解析バッファに出力する前記解析部を備える、請求項1のトレース採取装置。
  3. トレースファイルを備え、
    前記トレースバッファの内容を前記トレースファイルに出力する出力部を備える、請求項1または2のトレース採取装置。
  4. 前記被トレース処理を実行し、前記第1のループの開始前および終了後、並びに、前記ループ内繰り返し処理の各回の開始時に、各々、種別の異なる前記トレースデータを生成する生成部と、
    前記生成部が生成した前記トレースデータに基づいて、前記第1のループの開始および終了、並びに、前記第1のループの各回の実行の開始及び終了を検出する前記解析部を備える、請求項1乃至3の何れかのトレース採取装置。
  5. 前記トレース採取装置に接続されて、前記被トレース処理を実行し、前記第1のループの開始前および終了後、並びに、前記ループ内繰り返し処理の各回の開始時に、各々、種別の異なる前記トレースデータを生成する外部生成装置と、
    前記外部生成装置が生成した前記トレースデータに基づいて、前記第1のループの開始および終了、並びに、前記第1のループの各回の実行の開始及び終了を検出する前記解析部を備える請求項1乃至3の何れかのトレース採取装置を包含するトレース採取システム。
  6. 被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリを備えたコンピュータに、
    前記被トレース処理内の第1のループの各回の実行により生成される各々の前記トレースデータ(第1の区間データ)を入力して、当該第1の区間データが前記第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した前記第1の区間データを前記第1のパターン表および前記第1の解析バッファに追記し、
    前記パターン一致を検出すると、前記第1の区間データの少なくとも一部を前記第1の解析バッファに格納せず、
    前記第1ループの終了を検出すると、前記第1の解析バッファの内容を前記トレースバッファに出力する解析部を実行させる、トレース採取プログラム。
  7. 第2のパターン表と、第2の解析バッファを格納する前記メモリを備えた前記コンピュータに、
    前記第1のループ内に包含される第2のループの各回の実行により生成される各々の前記トレースデータ(第2の区間データ)を入力して、前記第2の区間データが前記第2のパターン表に格納されたいずれかの第2の区間のトレースデータとの一致(パターン一致)を検出すると、前記第2の区間データを前記第2のパターン表および前記第2の解析バッファに追記し、
    前記パターン一致を検出しないと、前記第2の区間データの少なくとも一部を前記第2の解析バッファに格納せず、
    前記第2のループの終了を検出すると、前記第2の解析バッファの内容を前記第1の解析バッファに出力する前記解析処理を実行させる、請求項6のトレース採取プログラム。
  8. トレースファイルを備えた前記コンピュータに、
    前記トレースバッファの内容を前記トレースファイルに出力する出力処理を実行させる、請求項6または7のトレース採取プログラム。
  9. 前記コンピュータに、
    前記被トレース処理を実行し、前記第1のループの開始前および終了後、並びに、前記ループ内繰り返し処理の各回の開始時に、各々、種別の異なる前記トレースデータを生成する生成処理と、
    前記生成部が生成した前記トレースデータに基づいて、前記第1のループの開始および終了、並びに、前記第1のループの各回の実行の開始及び終了を検出する前記解析処理を実行させる、請求項6乃至8の何れかのトレース採取装置。
  10. 被トレース処理の実行により生成されるトレースデータを順次格納するトレースバッファと、第1のパターン表と、第1の解析バッファを格納するメモリを備えたコンピュータが、
    前記被トレース処理内の第1のループの各回の実行により生成される各々の前記トレースデータ(第1の区間データ)を入力して、当該第1の区間データが前記第1のパターン表にすでに格納されたいずれかの第1の区間データとの一致(パターン一致)を検出しないと、入力した前記第1の区間データを前記第1のパターン表および前記第1の解析バッファに追記し、
    前記パターン一致を検出すると、前記第1の区間データの少なくとも一部を前記第1の解析バッファに格納せず、
    前記第1ループの終了を検出すると、前記第1の解析バッファの内容を前記トレースバッファに出力する解析工程を有する、トレース採取方法。
  11. 第2のパターン表と、第2の解析バッファを格納する前記メモリを備えた前記コンピュータが、
    前記第1のループ内に包含される第2のループの各回の実行により生成される各々の前記トレースデータ(第2の区間データ)を入力して、前記第2の区間データが前記第2のパターン表に格納されたいずれかの第2の区間のトレースデータとの一致(パターン一致)を検出すると、前記第2の区間データを前記第2のパターン表および前記第2の解析バッファに追記し、
    前記パターン一致を検出しないと、前記第2の区間データの少なくとも一部を前記第2の解析バッファに格納せず、
    前記第2のループの終了を検出すると、前記第2の解析バッファの内容を前記第1の解析バッファに出力する前記解析工程を有する、請求項10のトレース採取方法。
JP2008243609A 2008-09-24 2008-09-24 トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法 Expired - Fee Related JP5024252B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008243609A JP5024252B2 (ja) 2008-09-24 2008-09-24 トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008243609A JP5024252B2 (ja) 2008-09-24 2008-09-24 トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法

Publications (2)

Publication Number Publication Date
JP2010079343A true JP2010079343A (ja) 2010-04-08
JP5024252B2 JP5024252B2 (ja) 2012-09-12

Family

ID=42209757

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008243609A Expired - Fee Related JP5024252B2 (ja) 2008-09-24 2008-09-24 トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法

Country Status (1)

Country Link
JP (1) JP5024252B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012098979A (ja) * 2010-11-04 2012-05-24 Fujitsu Semiconductor Ltd トレース圧縮装置、トレース圧縮プログラム
WO2016079618A1 (en) * 2014-11-17 2016-05-26 International Business Machines Corporation Request monitoring
JP2017033329A (ja) * 2015-08-03 2017-02-09 日本電信電話株式会社 構造化ログ生成装置、構造化ログ生成方法、及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175883A (ja) * 1992-12-04 1994-06-24 Toshiba Corp プログラムデバッグ装置
JPH11259335A (ja) * 1998-03-11 1999-09-24 Nec Kofu Ltd トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法
JP2002175201A (ja) * 2000-12-06 2002-06-21 Nec Corp コンピュータシステム及びそれに用いるトレース情報制御方式
JP2004102594A (ja) * 2002-09-09 2004-04-02 Fujitsu Ltd 並列実行プログラムの実行回数解析方法および並列実行プログラムの実行回数解析プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175883A (ja) * 1992-12-04 1994-06-24 Toshiba Corp プログラムデバッグ装置
JPH11259335A (ja) * 1998-03-11 1999-09-24 Nec Kofu Ltd トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法
JP2002175201A (ja) * 2000-12-06 2002-06-21 Nec Corp コンピュータシステム及びそれに用いるトレース情報制御方式
JP2004102594A (ja) * 2002-09-09 2004-04-02 Fujitsu Ltd 並列実行プログラムの実行回数解析方法および並列実行プログラムの実行回数解析プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012098979A (ja) * 2010-11-04 2012-05-24 Fujitsu Semiconductor Ltd トレース圧縮装置、トレース圧縮プログラム
WO2016079618A1 (en) * 2014-11-17 2016-05-26 International Business Machines Corporation Request monitoring
CN107077394A (zh) * 2014-11-17 2017-08-18 国际商业机器公司 请求监视
GB2549416A (en) * 2014-11-17 2017-10-18 Ibm Request monitoring
US10496520B2 (en) 2014-11-17 2019-12-03 International Business Machines Corporation Request monitoring to a code set
CN107077394B (zh) * 2014-11-17 2020-09-04 国际商业机器公司 用于监视对代码集的请求的方法和系统
JP2017033329A (ja) * 2015-08-03 2017-02-09 日本電信電話株式会社 構造化ログ生成装置、構造化ログ生成方法、及びプログラム

Also Published As

Publication number Publication date
JP5024252B2 (ja) 2012-09-12

Similar Documents

Publication Publication Date Title
US10019240B2 (en) Method and apparatus for detecting code change
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
US9626170B2 (en) Method and computer program product for disassembling a mixed machine code
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
JP2010238228A (ja) プログラムの動的分析方法及びその装置
EP2778629A1 (en) Method and device for code change detection
CN111124479A (zh) 配置文件的解析方法、系统及电子设备
US20210405980A1 (en) Long method autofix engine
CN108108169B (zh) 一种基于Jenkins的多分支的构建方法及系统
JP5024252B2 (ja) トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法
JP2010122959A (ja) テスト支援システム、方法、及び、プログラム
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
CN109634822A (zh) 一种函数耗时统计方法、装置、存储介质及终端设备
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP6107455B2 (ja) テストスケジュール決定装置、プログラム
CN112631925A (zh) 一种单变量原子违背缺陷的检测方法
CN110688320B (zh) 全局变量的检测方法、装置及终端设备
GB2551574B (en) An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
CN113190235B (zh) 一种代码的分析方法、装置、电子终端及存储介质
US8621430B2 (en) Method for code transformation supporting temporal abstraction of parameters
JP6665576B2 (ja) 支援装置、支援方法及びプログラム
KR101673151B1 (ko) 프로그램 소스 및 db 스키마의 연관 관계 변화 분석 방법 및 장치
US20140372982A1 (en) Standardization of variable names in an integrated development environment
CN110244954A (zh) 一种应用程序的编译方法及设备
JP6945434B2 (ja) ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110221

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120306

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120319

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120522

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120604

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees