(57)【要約】【課題】  プログラマが事前に予測できなかった稀な状況やコンピュータシステムの負荷状態に応じてトレースログ出力を制御することが可能な技術を提供する。【解決手段】  プログラム実行時のトレースログを出力するトレースロギング方法において、プログラムの実行時にその動的な情報を示す実行時情報の計測を行ってその計測された実行時情報を記憶装置に格納するステップと、前記記憶装置に格納した実行時情報である計測値を読み出してその計測値を評価するための評価値を計算し、その計算した評価値がポリシー定義テーブルで指定される閾値条件を満たす場合にトレースログを記憶装置へ出力するステップとを有するものである。【選択図】図１
2008090699.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を備えプログラム実行時のトレースログを出力するトレースロギング装置におけるトレースロギング方法において、
プログラムの実行時にその動的な情報を示す実行時情報の計測を行ってその計測された実行時情報を前記記憶装置に格納し、前記記憶装置に格納した実行時情報である計測値を読み出してその計測値を評価するための評価値を計算し、その計算した評価値がポリシー定義テーブルで指定される閾値条件を満たす場合にトレースログを記憶装置へ出力することを特徴とするトレースロギング方法。
【請求項２】
前記プログラムの実行時情報として各分岐命令における分岐先毎の分岐回数の計測を行って記憶装置に格納し、前記記憶装置に格納した分岐回数の情報を読み出して分岐先毎の分岐確率を前記評価値として計算し、その分岐確率がポリシー定義テーブルで指定される所定の設定値以下である場合にその分岐先を示すトレースログを記憶装置へ出力することを特徴とする請求項１に記載されたトレースロギング方法。
【請求項３】
前記プログラムの実行時情報として、そのプログラムの実行時における全実行ステップ数を示す合計実行ステップ数と、トレースログ出力時における実行ステップ数を示すトレースログ出力実行ステップ数の計測を行って記憶装置に格納し、前記記憶装置に格納した合計実行ステップ数及びトレースログ出力実行ステップ数の情報を読み出して、トレースログ出力実行率を前記評価値として計算し、そのトレースログ出力実行率がポリシー定義テーブルで指定される所定の設定式の値より大きい場合にトレースログの出力を抑制することを特徴とする請求項１に記載されたトレースロギング方法。
【請求項４】
記憶装置を備えプログラム実行時のトレースログを出力するトレースロギング装置において、
プログラムの実行時にその動的な情報を示す実行時情報の計測を行ってその計測された実行時情報を前記記憶装置に格納するプロファイラ部と、前記記憶装置に格納した実行時情報である計測値を読み出してその計測値を評価するための評価値を計算し、その計算した評価値がポリシー定義テーブルで指定される閾値条件を満たす場合にトレースログを記憶装置へ出力するトレースログ出力部とを備えることを特徴とするトレースロギング装置。
【請求項５】
記憶装置を備えプログラム実行時のトレースログを出力するトレースロギング装置におけるトレースロギング方法をコンピュータに実行させる為のプログラムにおいて、
プログラムの実行時にその動的な情報を示す実行時情報の計測を行ってその計測された実行時情報を前記記憶装置に格納するステップと、前記記憶装置に格納した実行時情報である計測値を読み出してその計測値を評価するための評価値を計算し、その計算した評価値がポリシー定義テーブルで指定される閾値条件を満たす場合にトレースログを記憶装置へ出力するステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム実行時のトレースログを出力するトレースロギング技術に関するものである。
【背景技術】
【０００２】
従来、プログラムの実行時の状態を示すトレースログの出力を行う場合、特許文献１に記載の様に、プログラムが処理の対象とするデータのみをトレースログ出力の判定基準としてきた。すなわち、特許文献１のデータトレース方式では、トレースデータの出力を行なうか否かを、プログラム実行中におけるデータが、予め定めるトレース出力条件を満足するか否かによって判断しており、例えば、プログラムａにおいて、トランザクションの入力データが“Ａ”或いは“Ｂ”と等しければトレースデータを採取する等、あるデータが事前に想定可能な値に該当する場合にトレースデータを採取している。
【０００３】
【特許文献１】特開平５-２４１８９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記従来技術ではプログラムは事前に想定可能な範囲のデータのみを処理の対象とするため、この方法ではトレースログ出力の条件も事前に想定可能な範囲に制限されてしまう。プログラマが事前に想定できなかった状況が発生した場合には、トレースログの出力はできないという問題がある。
【０００５】
また、上記従来技術ではトレースログの出力量は処理対象のデータのみに依存し、コンピュータシステムの負荷状態を無視してしまう。このため、コンピュータシステムが高負荷状態にある場合に、負荷を軽減させる為にトレースログの出力量を抑制することができないという問題もある。
【０００６】
本発明の目的は上記問題を解決し、プログラマが事前に予測できなかった稀な状況やコンピュータシステムの負荷状態に応じてトレースログ出力を制御することが可能な技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、プログラム実行時のトレースログを出力するトレースロギング装置において、プログラムの動的な実行時情報に応じてトレースログの出力を行うものである。
【０００８】
本発明のトレースロギング装置では、トレースロギングの行われるプログラムを実行する際に、その動的な情報を示す実行時情報として、当該プログラムが分岐命令でどの分岐先に何回分岐したのかを計測する。そして分岐先毎の分岐回数の割合、即ち分岐確率を評価値として算出し、その算出した分岐確率がある値以下である場合にトレースログを出力する。
【０００９】
また本発明のトレースロギング装置では、プログラムの目的処理の実行の為に費やした実行ステップ数と、トレースログ出力処理の実行の為に費やした実行ステップ数を測定する。両者の比率がシステムの負荷状態によって決まるある値以上である場合に、トレースログ出力を抑制する。
【００１０】
前記の様に本発明では、プログラムの実行時の分岐確率がある値以下である場合にトレースログを出力するので、プログラマが事前に予測できなかった稀な状況においてもトレースログ出力を行うことが可能である。このトレースログによって、稀な状況においても、プログラムの実行履歴を正しく把握することが可能となり、異常の兆候を未然に検知することが可能となる。また障害発生時の原因究明を容易にすることができる。
【００１１】
また本発明では、コンピュータシステムの負荷状態に応じて、トレースログ出力量を抑制することにより、トレースログ出力に掛かるオーバーヘッドを軽減する。これによりコンピュータシステムの高負荷状態を緩和することが可能となる。
【発明の効果】
【００１２】
本発明によれば、プログラマが事前に予測が困難であった稀な状況やコンピュータシステムの負荷状態に応じてトレースログ出力を制御することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下にプログラム実行時のトレースログを出力する一実施形態のトレースロギング装置について説明する。
【００１４】
図１は本実施形態のプロファイリング機能付きトレースロギング装置の構成を示す図である。図１に示す様に本実施形態のコンピュータ１００は、プロファイラ部１１２と、トレースログ出力部１１３とを有している。
【００１５】
プロファイラ部１１２は、プログラムの実行時にその動的な情報を示す実行時情報の計測を行ってその計測された実行時情報を記憶装置に格納する処理部である。トレースログ出力部１１３は、前記記憶装置に格納した実行時情報である計測値を読み出してその計測値を評価するための評価値を計算し、その計算した評価値がポリシー定義テーブルで指定される閾値条件を満たす場合にトレースログを記憶装置へ出力する処理部である。
【００１６】
コンピュータ１００をプロファイラ部１１２及びトレースログ出力部１１３として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００１７】
図１に示す通り、本実施形態のトレースロギング装置であるコンピュータ１００は、ＣＰＵ１０１、キーボード１０２、ディスプレイ１０３、記憶装置１０４〜１０６及び主記憶装置１０８から構成されており、それぞれがバス１０７で接続されている。
【００１８】
主記憶装置１０８には、ＯＳ１０９と各アプリケーションプログラム１１０が展開されており、アプリケーションプログラム１１０は主処理部１１１、プロファイラ部１１２、トレースログ出力部１１３から構成される。
【００１９】
アプリケーションプログラム１１０は、プログラムの目的処理を行う主処理部１１１と、プログラムの実行情報を収集・記録するプロファイラ部１１２と、トレースログを出力するかどうかを判定し、その結果によってトレースログを出力するトレースログ出力部１１３を順に繰り返し実行する。
【００２０】
図２は本実施形態の記憶装置１０４〜１０６に保存される情報の概要を示す図である。図２に示す様に各記憶装置には分岐確率等の実行時情報が格納されている。
【００２１】
統計情報記憶装置１０４は、分岐確率テーブル３００、実行ステップ数テーブル４００、サブルーチン情報テーブル５００を保存する。プロファイラ部１１２は、プログラムの実行情報をこれらテーブル３００〜５００に記録する。トレースログ出力部１１３はこれらテーブル３００〜５００から情報を取得し、その情報を元にトレースログを出力するかどうかを判定する。
【００２２】
ポリシー定義記憶装置１０５は、ポリシー定義テーブル６００を保存する。トレースログ出力部１１３は、ポリシー定義テーブル６００に記録されている規則に従い、トレースログを出力するかどうかを判定する。
【００２３】
トレースログ記憶装置１０６は、トレースログテーブル７００を保存する。トレースログ出力部１１３は、トレースログをトレースログテーブル７００に出力し保存する。
【００２４】
図３は本実施形態の分岐確率テーブルの一例を示す図である。分岐確率テーブル３００は、プログラムの実行において発生した処理の分岐とその回数を記録する。
【００２５】
分岐確率テーブル３００は、分岐箇所(分岐元)３０１の一覧、各分岐箇所に対応する分岐先３０２の一覧、及び各分岐先へと分岐した回数である分岐回数３０３から構成される。ここで、アプリケーションプログラム１１０を最初に実行する場合には、そのテスト段階で収集された分岐箇所、分岐先、分岐回数の情報を初期値として格納しておき、以後、アプリケーションプログラム１１０が実行される度に分岐回数の情報を累積していくものとする。
【００２６】
図４は本実施形態の実行ステップ数テーブルの一例を示す図である。実行ステップ数テーブル４００は、プログラムが各処理の実行に費やした実行ステップ数を記録する。
【００２７】
実行ステップ数テーブル４００は、プログラムが実行した処理種別４０１及びその実行に要したステップ数４０２から構成される。
【００２８】
合計実行ステップ数は、プログラムが各処理の実行に要したステップ数の総計を表す。トレースログ出力実行ステップ数は、トレースログを出力するかどうかの判定処理及びトレースログの出力処理に要したステップ数の総計を表す。主処理連続実行ステップ数は、最後にトレースログを出力してからの、プログラムの目的処理である主処理部１１１の実行に要したステップ数の総計を表す。トレースログ出力部１１３がトレースログを出力すると、主処理連続実行ステップ数はゼロに戻される。
【００２９】
図５は本実施形態のサブルーチン情報テーブル５００の一例を示す図である。サブルーチン情報テーブル５００は、現在実行しているサブルーチンの情報及びサブルーチンの実行履歴を記録する。
【００３０】
サブルーチン情報テーブル５００は、サブルーチンの一意な名称であるサブルーチン名５０１、サブルーチンの処理を決定付けるパラメタ情報５０２及びサブルーチンの実行開始時刻５０３から構成される。メインルーチン及びメインルーチンから呼び出されるサブルーチンの呼び出し履歴を呼び出し順に記録する。
【００３１】
プロファイラ部１１２は、サブルーチンの実行を開始した時にサブルーチン情報をサブルーチン情報テーブル５００の先頭に追加登録する。またサブルーチンの実行を終了し、呼び出し元に戻る時に、サブルーチン情報テーブル５００の先頭から実行していたサブルーチン情報を削除する。この処理によりサブルーチン情報テーブル５００は、現在実行しているサブルーチンの情報を先頭に保持する。
【００３２】
図６は本実施形態のポリシー定義テーブルの一例を示す図である。ポリシー定義テーブル６００は、トレースログを出力するかどうかの判定規則を定義する。
【００３３】
ポリシー定義テーブル６００は、判定規則の種類を表す設定項目６０１、設定項目に対する基準値乃至基準値を与える式である設定値/設定式６０２、及び判定規則の優先順位６０３から構成される。
【００３４】
本システムの利用者乃至管理者は、設定値/設定式６０２、優先順位６０３を変更することでトレースログをどの様な場合に出力するかを制御することができる。
【００３５】
図７は本実施形態のトレースログテーブルの一例を示す図である。トレースログテーブル７００は、トレースログ出力部１１３が出力したトレースログを保存する。
【００３６】
トレースログテーブル７００は、各トレースログがポリシー定義テーブル６００のどの設定項目６０１が設定値/設定式６０２を満たしたため出力されたのかを示す該当項目７０１、その時の設定項目６０１の取った値７０２、該当項目７０１に対応して定まっているトレースログ本文７０３、及び付加情報７０４から構成される。
【００３７】
図７の１行目は、図６のポリシー定義テーブル６００の１行目の分岐確率による条件を満たした場合のトレースログ出力例である。該当項目として分岐確率であることを、値として分岐確率を、トレースログ本文として分岐箇所と分岐先を、付加情報として分岐条件に使用された条件変数の名称と値を出力する。
【００３８】
図７の２行目は、図６のポリシー定義テーブル６００の３行目の主処理連続実行ステップ数による条件を満たした場合のトレースログ出力例である。該当項目として主処理連続実行ステップ数であることを、値として主処理を連続して実行した実行ステップ数を、トレースログ本文として現在実行しているサブルーチン名を、付加情報として現在実行しているサブルーチンのパラメタの名称と値を出力する。
【００３９】
図７の３行目は、図６のポリシー定義テーブル６００の４行目のトレースログ出力命令による条件を満たした場合のトレースログ出力例である。該当項目としてトレースログ出力命令であることを、トレースログ本文として明示的なトレースログ出力命令によって与えられた任意のメッセージを出力する。
【００４０】
図７の４行目は、図６のポリシー定義テーブル６００の５行目のサブルーチン実行時間による条件を満たした場合のトレースログ出力例である。該当項目としてサブルーチン実行時間であることを、値としてサブルーチンの実行時間を、トレースログ本文として実行を完了したサブルーチン名を、負荷情報として実行を完了したサブルーチンのパラメタの名称と値を出力する。
【００４１】
図１１は本実施形態のアプリケーションプログラム１１０が実行する処理の流れを示す図である。図１１では、アプリケーションプログラム１１０が、主処理部１１１、プロファイラ部１１２、及びトレースログ出力部１１３を順に繰り返し実行する処理を表している。
【００４２】
主処理部１１１は、終了命令、明示的なトレースログ出力命令、分岐命令、サブルーチンの実行完了若しくは一定ステップ数を実行するまで、プログラムの目的処理を実行する(ステップ９０１)。終了命令に到達した場合(ステップ９０２)は、プログラムの実行を終了する(ステップ９１２)。その他の条件を満たした場合には、プロファイラ部１１２に制御を移す。
【００４３】
プロファイラ部１１２は、明示的なトレースログ出力命令に到達していた場合(ステップ９０３)には、トレースログ出力部１１３のステップ９０７に制御を移す。分岐命令に到達していた場合(ステップ９０４)には、分岐確率テーブル３００の分岐箇所x−分岐先xmに対応する分岐回数３０３を１増やす(ステップ９０６)。これらいずれの場合にも当てはまらず、サブルーチンの実行を完了した乃至一定ステップ数を実行した為にプロファイラ部へ制御が移った場合には、実行ステップ数テーブル４００の合計実行ステップ数と主処理連続実行ステップ数を積算する(ステップ９０５)。
【００４４】
トレースログ出力部１１３は、ポリシー定義テーブル６００の判定規則を優先順位に従って適用し、トレースログを出力するかどうかを判定する(ステップ９０７)。判定方法の詳細は図１２以降で説明する。トレースログを出力すると判定した場合(ステップ９０８)は、トレースログテーブル７００へトレースログを出力する(ステップ９０９)。
【００４５】
プロファイラ部１１２は、トレースログを出力した場合は、実行ステップ数テーブル４００の合計実行ステップ数とトレースログ出力実行ステップ数を積算し、主処理連続実行ステップ数をゼロにする(ステップ９１１)。トレースログを出力しなかった場合は、実行ステップ数テーブル４００の合計実行ステップ数を積算する(ステップ９１０)。
以上、一連の処理をプログラムが終了するまで、ステップ９０１に戻って繰り返し実行する。
【００４６】
図１２は本実施形態のトレースログ出力部１１３の判定処理の流れを示す図である。図１２では、トレースログ出力部１１３がトレースログを出力するかどうかをポリシー定義テーブル６００に従って判定する処理を表している。
【００４７】
先ず、ポリシー定義テーブル６００から最も優先順位の高い設定項目を取得する(ステップ１００１)。この設定項目に対応した評価方法１１００〜１５００によって、トレースログを出力するか、出力しないか、或いは判定を保留し他の設定項目の評価によって判定するか、を判定する(ステップ１００２)。
【００４８】
トレースログを出力するか、出力しないかを判定した場合(ステップ１００３)は、その結果を以って判定を完了する(ステップ９０８)。
判定が保留され、かつポリシー定義テーブル６００に次に優先順位の高い設定項目がない場合(ステップ１００４)は、トレースログを出力しないと判定する(ステップ９０８)。
判定が保留され、かつポリシー定義テーブル６００に次に優先順位の高い設定項目がある場合は、その設定項目を取得し(ステップ１００５)、ステップ１００２に戻り、設定項目に対応する評価と判定を繰り返す。
【００４９】
図１３は本実施形態の分岐確率によってトレースログを出力するかどうかを判定する処理の流れを示す図である。主処理部１１１は、分岐命令に到達した場合、分岐命令に到達したことを示すパラメタをプロファイラ部１１２に渡す。プロファイラ部１１２はトレースログ出力部１１３に制御を移す際にそのパラメタを引き渡す。トレースログ出力部１１３はこのパラメタを元に分岐命令に到達しているかどうかを判定する。
【００５０】
プログラムの実行が分岐命令に到達していない場合(ステップ１１０１)は、判定を保留し、次の優先順位の設定項目について評価を行う。
【００５１】
プログラムの実行が分岐命令に到達している場合、分岐確率を算出し、トレースログを出力するかどうか判定する。
【００５２】
先ず、分岐確率テーブル３００から、到達した分岐箇所xに対応する分岐先x1…xnの分岐回数３０３を取得し合計する(ステップ１１０２)。分岐条件の評価により決定した分岐先xmに対する分岐確率xm/Σxi(i=1…n)を計算する(ステップ１１０３)。
【００５３】
次に、ポリシー定義テーブル６００から分岐確率に対する設定値を取得する(１１０４)。
ステップ１１０２〜１１０３で算出した分岐確率が設定値以下である場合(ステップ１１０５)は、トレースログを出力すると判定する。分岐確率が設定値を超えている場合は、判定を保留し、次の優先順位の設定項目について評価を行う。
【００５４】
以上の処理によって、プログラム中の全ての条件分岐について、分岐確率が設定値以下の場合にトレースログを出力することが可能となる。即ち、プログラマが事前に想定し得ない稀な状況を自動的に検出し、トレースログを出力することが可能となる。
【００５５】
図１４は本実施形態のトレースログの出力に要した実行ステップ数と合計実行ステップ数との比率からトレースログを出力するかどうかを判定する処理の流れを示す図である。先ず、実行ステップ数テーブル４００から合計実行ステップ数とトレースログ出力実行ステップ数を取得する(ステップ１２０１)。トレースログの出力に要した実行ステップ数の割合を、トレースログ出力実行率=トレースログ出力実行ステップ数/合計実行ステップ数として計算する(ステップ１２０２)。
【００５６】
次に、ポリシー定義テーブル６００からトレースログ出力実行率の設定式を取得する(ステップ１２０３)。コンピュータシステムの負荷率を変数として、設定式の値を計算する(ステップ１２０４)。
【００５７】
ステップ１２０１〜１２０２で算出したトレースログ出力実行率が設定式の値を超えている場合(ステップ１２０５)は、トレースログを出力しないと判定する。トレースログ出力実行率が設定式の値以下である場合は、判定を保留し、次の優先順位の設定項目について評価を行う。
【００５８】
例として、コンピュータシステムの負荷率をLで表すこととし、設定式が0.1×(1-L)であった場合を考える。コンピュータシステムの負荷率が100%の場合は、L = 1, 設定式0.1×(1-L) = 0.1×(1-1) = 0となるため、トレースログ出力実行率に依らず、トレースログを出力しない。負荷率が50%の場合は、L = 0.5, 設定式0.1×(1-L) = 0.1×(1-0.5) = 0.05となるため、トレースログ出力実行率が0.05(=5%)を超えていた場合には、トレースログを出力しない。
【００５９】
以上の処理によって、トレースログ出力の実行率をコンピュータシステムの負荷状態によって決まるある割合以下に抑えることが可能となる。即ち、コンピュータシステムの負荷状態に応じてトレースログ出力量を抑制することが可能であり、コンピュータシステムの高負荷状態を緩和することが可能である。
【００６０】
図１５は本実施形態のプログラムの目的処理を一定ステップ数実行する毎にトレースログを出力するかどうかを判定する処理の流れを示す図である。先ず、実行ステップ数テーブル４００から、トレースログ出力処理を挟まずにプログラムの目的処理を実行し続けたステップ数である、主処理連続実行ステップ数を取得する(ステップ１３０１)。
【００６１】
次にポリシー定義テーブル６００から主処理連続実行ステップ数の設定値を取得する(ステップ１３０２)。主処理連続実行ステップ数が設定値以上である場合(ステップ１３０３)は、トレースログを出力すると判定する。主処理連続実行ステップ数が設定値未満である場合は、判定を保留し、次の優先順位の設定項目について評価を行う。
【００６２】
以上の処理によって、明示的にトレースログ出力を命令しなくても、一定実行ステップ数毎にトレースログを出力することが可能となり、アプリケーションプログラム１１０の動作をトレースログから把握することが可能となる。
【００６３】
図１６は本実施形態の明示的なトレースログ出力命令に到達した時にトレースログを出力するかどうかを判定する処理の流れを示す図である。主処理部１１１はトレースログ出力命令に到達した場合、トレースログ出力命令に到達したことを示すパラメタをプロファイラ部１１２に渡す。プロファイラ部１１２はトレースログ出力部１１３に制御を移す際にそのパラメタを引き渡す。トレースログ出力部１１３はこのパラメタを元にトレースログ出力命令に到達しているかどうかを判定する。
【００６４】
プログラムの実行が明示的なトレースログ出力命令に到達した場合(ステップ１４０１)は、トレースログを出力すると判定する。トレースログ出力命令に到達していない場合は、判定を保留し、次の優先順位の設定項目について評価を行う。
【００６５】
図１７は本実施形態のサブルーチンの実行を完了した時にトレースログを出力するかどうかを判定する処理の流れを示す図である。主処理部１１１はサブルーチンの実行を完了した場合、サブルーチンの実行完了を示すパラメタをプロファイラ部１１２に渡す。プロファイラ部１１２はトレースログ出力部１１３に制御を移す際にそのパラメタを引き渡す。トレースログ出力部１１３はこのパラメタを元にサブルーチンの実行を完了したかどうかを判定する。
【００６６】
プログラムがサブルーチンの実行を完了していない場合(ステップ１５０１)は、判定を保留し、次の優先順位の設定項目について評価を行う。
サブルーチンの実行を完了している場合は、サブルーチン情報テーブル５００の先頭から現在実行しているサブルーチンの実行開始時刻５０３を取得し、現在時刻との差からサブルーチンの実行時間を計算する(ステップ１５０２)。
【００６７】
次にポリシー定義テーブル６００からサブルーチン実行時間の設定値を取得する(ステップ１５０３)。
実行を完了したサブルーチンの実行時間が設定値未満である場合(ステップ１５０４)、判定を保留し、次の優先順位の設定項目について評価を行う。
実行を完了したサブルーチンの実行時間が設定値以上である場合は、サブルーチン情報テーブル５００の全てのサブルーチンの実行開始時刻を実行時間だけ進め(ステップ１５０５)、トレースログを出力すると判定する。実行開始時刻を実行時間だけ進めることにより、当該サブルーチンの呼び出し元全てにおいてトレースログが出力されることを抑止する。
【００６８】
図８は本実施形態のアプリケーションプログラム１１０の生成の一例を示す図である。図８では、プログラムの目的処理である主処理部１１１のみから成るソースプログラム１１４から、プロファイラ部１１２及びトレースログ出力部１１３を持つ実行プログラムであるアプリケーションプログラム１１０を生成する処理を表している。
【００６９】
言語処理系１１５は、与えられたソースプログラム１１４の内容を解析し、プロファイラ部１１２及びトレースログ出力部１１３を生成し、実行プログラムに埋め込むことで、アプリケーションプログラム１１０を生成する。
【００７０】
本実施形態の一つとして、プロファイラ部１１２及びトレースログ出力部１１３をサブルーチンとしてプログラム中に埋め込み、プログラム中においてプロファイル処理乃至トレースログ出力処理を必要とする箇所にこれらサブルーチンの呼び出し処理を埋め込む方法がある。
【００７１】
また別の実施形態の一つとして、プログラム中においてプロファイル処理乃至トレースログ出力処理の必要な箇所に、プロファイラ部１１２乃至トレースログ出力部１１３の該当処理部分をマクロ展開して直接埋め込む方法もある。
【００７２】
図９は本実施形態の言語処理系１１５によって処理される前のソースプログラム１１４の一例を示す図である。左端の数字は行番号を示し、プログラムの内容はプログラミング言語Ｃに基づく擬似コードで示している。
【００７３】
図９の３〜６行はサブルーチンの定義、８〜２３行はメインルーチンの定義、１１〜１６行は分岐命令、１８行はサブルーチンの実行、２０行は明示的なトレースログ出力命令である。
【００７４】
図１０は本実施形態の言語処理系１１５によって図９で示したソースプログラムの例を処理した後のアプリケーションプログラム１１０の一例を示す図である。左端の数字は行番号を示し、プログラムの内容はプログラミング言語Ｃに基づく擬似コードで示している。アルファベット大文字で表記している処理が、言語処理系１１５が埋め込んだ処理である。
【００７５】
図１０の１〜１２行はサブルーチンの定義、１４〜４８行はメインルーチンの定義、２４〜３７行は分岐命令、３９行はサブルーチンの実行、４１〜４３行は明示的なトレースログ出力命令である。
【００７６】
図１０の４、１６行は現在実行しているサブルーチンの名称、パラメタの名称と値をサブルーチン情報テーブル５００に保存する処理、１１行はサブルーチン情報を呼び出し元の情報に戻す処理である。
【００７７】
図１０の１０、４６行はサブルーチンの実行を完了した時に、プロファイラ部１１２へ制御を移す処理である。サブルーチンの実行を完了したことをパラメタとして渡している。実行を完了したサブルーチンの名称、パラメタ名と値、実行開始時刻はサブルーチン情報テーブル５００に記録されているため、パラメタとしては渡さない。
【００７８】
図１０の１８〜２１行は一定ステップ数を実行する毎にプロファイラ部１１２へ制御を移す処理を割り込み処理として登録する処理である。一定ステップ数を実行したことをパラメタとして渡す様に設定している。
【００７９】
図１０の２８、３４行は分岐命令に到達した時に、プロファイラ部１１２へ制御を移す処理である。分岐命令に到達したこと、分岐箇所、分岐先、分岐の判定に使用した条件変数の名称と値をパラメタとして渡している。分岐箇所、分岐先の名称は言語処理系１１５が自動生成して割り当てる。
【００８０】
図１０の４３行は明示的なトレースログ出力命令に到達した時に、プロファイラ部１１２へ制御を移す処理である。明示的なトレースログ出力命令に到達したこと、指定された任意のメッセージをパラメタとして渡している。本処理は図９の２０行に対応しており、ソースプログラム１１４の処理を置き換えている。
【００８１】
以上説明した様に本実施形態のトレースロギング装置によれば、プログラムの動的な実行時情報に応じてトレースログの出力を行うので、プログラマが事前に予測できなかった稀な状況やコンピュータシステムの負荷状態に応じてトレースログ出力を制御することが可能である。
【図面の簡単な説明】
【００８２】
【図１】本実施形態のプロファイリング機能付きトレースロギング装置の構成を示す図である。
【図２】本実施形態の記憶装置１０４〜１０６に保存される情報の概要を示す図である。
【図３】本実施形態の分岐確率テーブルの一例を示す図である。
【図４】本実施形態の実行ステップ数テーブルの一例を示す図である。
【図５】本実施形態のサブルーチン情報テーブル５００の一例を示す図である。
【図６】本実施形態のポリシー定義テーブルの一例を示す図である。
【図７】本実施形態のトレースログテーブルの一例を示す図である。
【図８】本実施形態のアプリケーションプログラム１１０の生成の一例を示す図である。
【図９】本実施形態の言語処理系１１５によって処理される前のソースプログラム１１４の一例を示す図である。
【図１０】本実施形態の言語処理系１１５によって図９で示したソースプログラムの例を処理した後のアプリケーションプログラム１１０の一例を示す図である。
【図１１】本実施形態のアプリケーションプログラム１１０が実行する処理の流れを示す図である。
【図１２】本実施形態のトレースログ出力部１１３の判定処理の流れを示す図である。
【図１３】本実施形態の分岐確率によってトレースログを出力するかどうかを判定する処理の流れを示す図である。
【図１４】本実施形態のトレースログの出力に要した実行ステップ数と合計実行ステップ数との比率からトレースログを出力するかどうかを判定する処理の流れを示す図である。
【図１５】本実施形態のプログラムの目的処理を一定ステップ数実行する毎にトレースログを出力するかどうかを判定する処理の流れを示す図である。
【図１６】本実施形態の明示的なトレースログ出力命令に到達した時にトレースログを出力するかどうかを判定する処理の流れを示す図である。
【図１７】本実施形態のサブルーチンの実行を完了した時にトレースログを出力するかどうかを判定する処理の流れを示す図である。
【符号の説明】
【００８３】
１００…コンピュータ、１０１…ＣＰＵ、１０２…キーボード、１０３…ディスプレイ、１０４…統計情報記憶装置、１０５…ポリシー定義記憶装置、１０６…トレースログ記憶装置、１０７…バス、１０８…主記憶装置、１０９…ＯＳ、１１０…アプリケーションプログラム、１１１…主処理部、１１２…プロファイラ部、１１３…トレースログ出力部、３００…分岐確率テーブル、４００…実行ステップ数テーブル、５００…サブルーチン情報テーブル、６００…ポリシー定義テーブル、７００…トレースログテーブル、３０１…分岐箇所(分岐元)、３０２…分岐先、３０３…分岐回数、４０１…処理種別、４０２…ステップ数、５０１…サブルーチン名、５０２…パラメタ情報、５０３…実行開始時刻、６０１…設定項目、６０２…設定値/設定式、６０３…優先順位、７０１…該当項目、７０２…値、７０３…トレースログ本文、７０４…付加情報、１１４…ソースプログラム、１１５…言語処理系。
【図１】
2008090699.tif 000003
【図２】
2008090699.tif 000004
【図３】
2008090699.tif 000005
【図４】
2008090699.tif 000006
【図５】
2008090699.tif 000007
【図６】
2008090699.tif 000008
【図７】
2008090699.tif 000009
【図８】
2008090699.tif 000010
【図９】
2008090699.tif 000011
【図１０】
2008090699.tif 000012
【図１１】
2008090699.tif 000013
【図１２】
2008090699.tif 000014
【図１３】
2008090699.tif 000015
【図１４】
2008090699.tif 000016
【図１５】
2008090699.tif 000017
【図１６】
2008090699.tif 000018
【図１７】
2008090699.tif 000019