(57)【要約】【課題】実行モジュールサイズを抑えながら詳細なトレースポイントを設定するとともに、トレースログ量を抑制することを目的とする。【解決手段】パス解析部１０２は、指定したトレースポイントから先のパスをソースコード１０６上で検索し、追加するトレースポイントを抽出する。トレースポイント情報作成部１０３は、通過しないトレースポイントを削除して新規のトレースポイントを挿入することを指示するトレースポイント情報１１２を作成する。トレースポイント挿入部１０５は、トレースポイント情報１１２を基に、ソースコード１０６に対してトレースポイントの挿入、削除を行う。プログラム実行部１０７は、ソースコード１０６をコンパイルし、実機１１４上で実行しトレースデータを得る。トレースポイント記録部１０８は、得られたトレースデータ１１３を基に、トレースログ蓄積部１０４に各データを記録する。【選択図】図１
2007334550.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのソースコードに挿入されるトレースポイントであって、前記ソースコード内で当該トレースポイントが挿入された部分を変換したオブジェクトコードが実行された場合に、当該オブジェクトコードの一部として実行されるとともにログデータを出力するトレースポイントに関するトレース情報を蓄積する記憶装置と、各部を制御する処理装置とを備える性能チューニング支援装置において、
前記ソースコード内で所定のトレースポイントの後に存在する分岐点を前記処理装置により検出し、検出した分岐点に挿入される新規トレースポイントに関するトレース情報を前記記憶装置に記録するパス解析部と、
前記パス解析部によりトレース情報が記録された新規トレースポイントを挿入するように指示するトレース挿入情報を前記処理装置により作成するトレースポイント情報作成部と、
前記ソースコードに対して、前記トレースポイント情報作成部により作成されたトレース挿入情報にて指示された新規トレースポイントを挿入するトレースポイント挿入部と、
前記ソースコード内で前記トレースポイント挿入部により新規トレースポイントが挿入された部分を変換したオブジェクトコードを実行することにより、当該新規トレースポイントを実行し、実行した新規トレースポイントから出力されるログデータを含むトレースデータを出力するプログラム実行部と、
前記プログラム実行部により出力されたトレースデータに基づいて、前記プログラム実行部によりオブジェクトコードの一部として実行された通過済トレースポイントを前記処理装置により判定し、判定した通過済トレースポイントに関するトレース情報を更新するトレースポイント記録部と、
前記トレースポイント記録部により更新されたトレース情報から、通過済トレースポイントを前記処理装置により抽出し、抽出した通過済トレースポイントを前記ソースコードの測定結果として出力する測定結果出力部とを備えることを特徴とする性能チューニング支援装置。
【請求項２】
前記性能チューニング支援装置は、さらに、
前記ソースコード内で最初に実行されるトレースポイントである測定開始ポイントと最後に実行されるトレースポイントである測定終了ポイントとに関するトレース情報を前記記憶装置に記録する測定区間入力部と、
前記記憶装置に蓄積されたトレース情報に基づいて、測定終了ポイントが実行済かどうかを前記処理装置により判定する終了判定部とを備え、
前記パス解析部は、前記終了判定部により測定終了ポイントが実行済ではないと判定された場合に、前記ソースコード内で測定開始ポイント又は前回オブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出し、
前記測定結果出力部は、前記終了判定部により測定終了ポイントが実行済であると判定された場合に、前記記憶装置に蓄積されたトレース情報から、通過済トレースポイントを抽出することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項３】
前記トレースポイント情報作成部は、新規トレースポイントと測定終了ポイントとを除く前記プログラム実行部によりまだ実行されていない未通過トレースポイントを削除するように指示するトレース削除情報を前記処理装置により作成し、
前記トレースポイント挿入部は、前記ソースコードから、前記トレースポイント情報作成部により作成されたトレース削除情報にて指示された未通過トレースポイントを削除することを特徴とする請求項２に記載の性能チューニング支援装置。
【請求項４】
前記トレース情報は、トレースポイントの状態を示す通過フラグを含み、
前記パス解析部は、新規トレースポイントに関するトレース情報を前記記憶装置に記録する際に、当該新規トレースポイントの通過フラグを「新規追加」を示す値に設定し、
前記トレースポイント記録部は、通過済トレースポイントに関するトレース情報を更新する際に、当該通過済トレースポイントの通過フラグを「通過済」を示す値に設定し、
前記測定結果出力部は、前記記憶装置に蓄積されたトレース情報から、通過フラグが「通過済」を示すトレースポイントを検索し、検索したトレースポイントを通過済トレースポイントとして抽出することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項５】
前記性能チューニング支援装置は、さらに、
前記ソースコード内で最初に実行されるトレースポイントである測定開始ポイントと最後に実行されるトレースポイントである測定終了ポイントとに関するトレース情報を前記記憶装置に記録して、測定開始ポイントの通過フラグを「通過済」を示す値に設定するとともに、測定終了ポイントの通過フラグを「新規追加」を示す値に設定する測定区間入力部と、
測定終了ポイントの通過フラグが「通過済」を示しているかどうかを前記処理装置により判定する終了判定部とを備え、
前記パス解析部は、前記終了判定部により測定終了ポイントの通過フラグが「通過済」を示していないと判定された場合に、前記ソースコード内で測定開始ポイント又は前回オブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出し、
前記測定結果出力部は、前記終了判定部により測定終了ポイントの通過フラグが「通過済」を示していると判定された場合に、前記記憶装置に蓄積されたトレース情報から、通過済トレースポイントを抽出することを特徴とする請求項４に記載の性能チューニング支援装置。
【請求項６】
前記トレースポイント記録部は、測定終了ポイントを除く前記プログラム実行部によりまだ実行されていない未通過トレースポイントに関するトレース情報を更新して、当該未通過トレースポイントの通過フラグを「未通過」を示す値に設定し、
前記トレースポイント情報作成部は、前記記憶装置に蓄積されたトレース情報から、通過フラグが「新規追加」を示すトレースポイントを検索し、検索したトレースポイントを新規トレースポイントとして挿入するように指示するトレース挿入情報を作成するとともに、前記記憶装置に蓄積されたトレース情報から、通過フラグが「未通過」を示すトレースポイントを検索し、検索したトレースポイントを未通過トレースポイントとして削除するように指示するトレース削除情報を前記処理装置により作成し、
前記トレースポイント挿入部は、前記ソースコードから、前記トレースポイント情報作成部により作成されたトレース削除情報にて指示された未通過トレースポイントを削除することを特徴とする請求項５に記載の性能チューニング支援装置。
【請求項７】
前記トレース情報は、トレースポイントを一意に特定する識別子を含み、
前記トレースポイント情報作成部は、新規トレースポイントを挿入するように指示するトレース挿入情報を作成する際に、当該新規トレースポイントの識別子を設定し、設定した識別子を前記トレース挿入情報に付加し、
前記トレースポイント挿入部は、前記ソースコードに対して、新規トレースポイントを挿入する際に、前記トレースポイント情報作成部により前記トレース挿入情報に付加された識別子を示すログデータが、前記プログラム実行部により新規トレースポイントが実行された場合に当該新規トレースポイントから出力されるように設定し、
前記トレースポイント記録部は、前記記憶装置に蓄積されたトレース情報から、前記トレースデータに含まれるログデータが示す識別子と識別子が一致するトレースポイントを検索し、検索したトレースポイントを通過済トレースポイントとして判定することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項８】
前記トレース情報は、トレースポイントの前記ソースコードにおける位置を示す位置データを含み、
前記パス解析部は、新規トレースポイントに関するトレース情報を前記記憶装置に記録する際に、当該新規トレースポイントの位置データを設定し、
前記トレースポイント情報作成部は、新規トレースポイントを挿入するように指示するトレース挿入情報を作成する際に、当該新規トレースポイントの位置データを前記トレース挿入情報に付加し、
前記トレースポイント挿入部は、前記トレースポイント情報作成部により前記トレース挿入情報に付加された位置データが示す位置に、新規トレースポイントを挿入することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項９】
トレースポイントから出力されるログデータは、前記プログラム実行部により当該トレースポイントが実行された時刻を示し、
前記トレース情報は、トレースポイント間の経過時間を示す経過時間データを含み、
前記トレースポイント記録部は、通過済トレースポイントに関するトレース情報を更新する際に、前記トレースデータに含まれるログデータが示す時刻に基づいて、トレースポイント間の経過時間を前記処理装置により計算し、当該通過済トレースポイントの経過時間データを設定することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項１０】
前記性能チューニング支援装置は、さらに、
前記トレースポイント記録部により更新されたトレース情報から、通過済トレースポイントを前記処理装置により抽出する計測済ポイント抽出部を備え、
前記トレースポイント情報作成部は、前記計測済ポイント抽出部により抽出された通過済トレースポイントを削除するように指示するトレース削除情報を前記処理装置により作成し、
前記トレースポイント挿入部は、前記ソースコードから、前記トレースポイント情報作成部により作成されたトレース削除情報にて指示された通過済トレースポイントを削除することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項１１】
前記トレースポイント情報作成部は、第１の新規トレースポイントと第２新規のトレースポイントとを挿入するように指示するトレース挿入情報を作成し、
前記トレースポイント挿入部は、前記ソースコードに対して、前記トレース挿入情報にて指示された第１の新規トレースポイントと第２の新規トレースポイントとを挿入し、
前記プログラム実行部は、前記ソースコード内で前記トレースポイント挿入部により第１の新規トレースポイントが挿入された部分を変換した第１のオブジェクトコードと前記トレースポイント挿入部により第２の新規トレースポイントが挿入された部分を変換した第２のオブジェクトコードとを実行することにより、当該第１の新規トレースポイントと当該第２の新規トレースポイントとを実行し、実行した第１の新規トレースポイントと第２の新規トレースポイントとのそれぞれから出力されるログデータを含むトレースデータを出力し、
前記トレースポイント記録部は、前記プログラム実行部により出力されたトレースデータに基づいて、前記プログラム実行部により第１のオブジェクトコードの一部として実行された第１の通過済トレースポイントと前記プログラム実行部により第２のオブジェクトコードの一部として実行された第２の通過済トレースポイントとを判定し、判定した第１の通過済トレースポイントと第２の通過済トレースポイントとに関するトレース情報を更新し、
前記性能チューニング支援装置は、さらに、
前記ソースコード内で最初に実行されるトレースポイントである測定開始ポイントと最後に実行されるトレースポイントである測定終了ポイントとに関するトレース情報を前記記憶装置に記録する測定区間入力部と、
前記トレースポイント記録部により判定された第１の通過済トレースポイントと第２の通過済トレースポイントとが重複するかどうかを前記処理装置により判定するトレースログ同一箇所判断部と、
前記トレースログ同一箇所判断部により第１の通過済トレースポイントと第２の通過済トレースポイントとが重複しないと判定された場合に、前記ソースコード内で測定終了ポイント又は前回第２のオブジェクトコードが実行された際に最初に実行されたトレースポイントの前に存在する分岐点を検出し、検出した分岐点に挿入される第２の新規トレースポイントに関するトレース情報を前記記憶装置に記録する逆方向パス解析部とを備え、
前記パス解析部は、前記トレースログ同一箇所判断部により第１の通過済トレースポイントと第２の通過済トレースポイントとが重複しないと判定された場合に、前記ソースコード内で測定開始ポイント又は前回第１のオブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出し、検出した分岐点に挿入される第１の新規トレースポイントに関するトレース情報を前記記憶装置に記録し、
前記測定結果出力部は、前記トレースログ同一箇所判断部により第１の通過済トレースポイントと第２の通過済トレースポイントとが重複すると判定された場合に、前記記憶装置に蓄積されたトレース情報から、通過済トレースポイントを抽出することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項１２】
前記パス解析部は、前記ソースコード内で一度にオブジェクトコードに変換される部分が、前記プログラム実行部により実行可能な範囲となるように、一度に検出する分岐点の数を前記処理装置により調整することを特徴とする請求項１に記載の性能チューニング支援装置。
【請求項１３】
プログラムのソースコードに挿入されるトレースポイントであって、前記ソースコード内で当該トレースポイントが挿入された部分を変換したオブジェクトコードが実行された場合に、当該オブジェクトコードの一ステップとして実行されるとともにログデータを出力するトレースポイントに関するトレース情報を蓄積する記憶装置と、各ステップを制御する処理装置とを備える性能チューニング支援装置を用いる性能チューニング支援方法において、
前記性能チューニング支援装置が備えるパス解析部が、前記ソースコード内で所定のトレースポイントの後に存在する分岐点を前記処理装置により検出し、検出した分岐点に挿入される新規トレースポイントに関するトレース情報を前記記憶装置に記録するパス解析ステップと、
前記性能チューニング支援装置が備えるトレースポイント情報作成部が、前記パス解析ステップによりトレース情報が記録された新規トレースポイントを挿入するように指示するトレース挿入情報を前記処理装置により作成するトレースポイント情報作成ステップと、
前記性能チューニング支援装置が備えるトレースポイント挿入部が、前記ソースコードに対して、前記トレースポイント情報作成ステップにより作成されたトレース挿入情報にて指示された新規トレースポイントを挿入するトレースポイント挿入ステップと、
前記性能チューニング支援装置が備えるプログラム実行部が、前記ソースコード内で前記トレースポイント挿入ステップにより新規トレースポイントが挿入された部分を変換したオブジェクトコードを実行することにより、当該新規トレースポイントを実行し、実行した新規トレースポイントから出力されるログデータを含むトレースデータを出力するプログラム実行ステップと、
前記性能チューニング支援装置が備えるトレースポイント記録部が、前記プログラム実行ステップにより出力されたトレースデータに基づいて、前記プログラム実行ステップによりオブジェクトコードの一ステップとして実行された通過済トレースポイントを前記処理装置により判定し、判定した通過済トレースポイントに関するトレース情報を更新するトレースポイント記録ステップと、
前記性能チューニング支援装置が備える測定結果出力部が、前記トレースポイント記録ステップにより更新されたトレース情報から、通過済トレースポイントを前記処理装置により抽出し、抽出した通過済トレースポイントを前記ソースコードの測定結果として出力する測定結果出力ステップとを備えることを特徴とする性能チューニング支援方法。
【請求項１４】
前記性能チューニング支援方法は、さらに、
前記性能チューニング支援装置が備える測定区間入力部が、前記ソースコード内で最初に実行されるトレースポイントである測定開始ポイントと最後に実行されるトレースポイントである測定終了ポイントとに関するトレース情報を前記記憶装置に記録する測定区間入力ステップと、
前記性能チューニング支援装置が備える終了判定部が、前記記憶装置に蓄積されたトレース情報に基づいて、測定終了ポイントが実行済かどうかを前記処理装置により判定する終了判定ステップとを備え、
前記パス解析ステップは、前記パス解析部が、前記終了判定ステップにより測定終了ポイントが実行済ではないと判定された場合に、前記ソースコード内で測定開始ポイント又は前回オブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出し、
前記測定結果出力ステップは、前記測定結果出力部が、前記終了判定ステップにより測定終了ポイントが実行済であると判定された場合に、前記記憶装置に蓄積されたトレース情報から、通過済トレースポイントを抽出することを特徴とする請求項１３に記載の性能チューニング支援方法。
【請求項１５】
前記トレースポイント情報作成ステップは、前記トレースポイント情報作成部が、新規トレースポイントと測定終了ポイントとを除く前記プログラム実行ステップによりまだ実行されていない未通過トレースポイントを削除するように指示するトレース削除情報を前記処理装置により作成し、
前記トレースポイント挿入ステップは、前記トレースポイント挿入部が、前記ソースコードから、前記トレースポイント情報作成ステップにより作成されたトレース削除情報にて指示された未通過トレースポイントを削除することを特徴とする請求項１４に記載の性能チューニング支援方法。
【請求項１６】
前記性能チューニング支援方法は、さらに、
前記性能チューニング支援装置が備える計測済ポイント抽出部が、前記トレースポイント記録ステップにより更新されたトレース情報から、通過済トレースポイントを前記処理装置により抽出する計測済ポイント抽出ステップを備え、
前記トレースポイント情報作成ステップは、前記トレースポイント情報作成部が、前記計測済ポイント抽出ステップにより抽出された通過済トレースポイントを削除するように指示するトレース削除情報を前記処理装置により作成し、
前記トレースポイント挿入ステップは、前記トレースポイント挿入部が、前記ソースコードから、前記トレースポイント情報作成ステップにより作成されたトレース削除情報にて指示された通過済トレースポイントを削除することを特徴とする請求項１３に記載の性能チューニング支援方法。
【請求項１７】
前記トレースポイント情報作成ステップは、前記トレースポイント情報作成部が、第１の新規トレースポイントと第２新規のトレースポイントとを挿入するように指示するトレース挿入情報を作成し、
前記トレースポイント挿入ステップは、前記トレースポイント挿入部が、前記ソースコードに対して、前記トレース挿入情報にて指示された第１の新規トレースポイントと第２の新規トレースポイントとを挿入し、
前記プログラム実行ステップは、前記プログラム実行部が、前記ソースコード内で前記トレースポイント挿入ステップにより第１の新規トレースポイントが挿入された部分を変換した第１のオブジェクトコードと前記トレースポイント挿入ステップにより第２の新規トレースポイントが挿入された部分を変換した第２のオブジェクトコードとを実行することにより、当該第１の新規トレースポイントと当該第２の新規トレースポイントとを実行し、実行した第１の新規トレースポイントと第２の新規トレースポイントとのそれぞれから出力されるログデータを含むトレースデータを出力し、
前記トレースポイント記録ステップは、前記トレースポイント記録部が、前記プログラム実行ステップにより出力されたトレースデータに基づいて、前記プログラム実行ステップにより第１のオブジェクトコードの一ステップとして実行された第１の通過済トレースポイントと前記プログラム実行ステップにより第２のオブジェクトコードの一ステップとして実行された第２の通過済トレースポイントとを判定し、判定した第１の通過済トレースポイントと第２の通過済トレースポイントとに関するトレース情報を更新し、
前記性能チューニング支援方法は、さらに、
前記性能チューニング支援装置が備える測定区間入力部が、前記ソースコード内で最初に実行されるトレースポイントである測定開始ポイントと最後に実行されるトレースポイントである測定終了ポイントとに関するトレース情報を前記記憶装置に記録する測定区間入力ステップと、
前記性能チューニング支援装置が備えるトレースログ同一箇所判断部が、前記トレースポイント記録ステップにより判定された第１の通過済トレースポイントと第２の通過済トレースポイントとが重複するかどうかを前記処理装置により判定するトレースログ同一箇所判断ステップと、
前記性能チューニング支援装置が備える逆方向パス解析部が、前記トレースログ同一箇所判断ステップにより第１の通過済トレースポイントと第２の通過済トレースポイントとが重複しないと判定された場合に、前記ソースコード内で測定終了ポイント又は前回第２のオブジェクトコードが実行された際に最初に実行されたトレースポイントの前に存在する分岐点を検出し、検出した分岐点に挿入される第２の新規トレースポイントに関するトレース情報を前記記憶装置に記録する逆方向パス解析ステップとを備え、
前記パス解析ステップは、前記パス解析部が、前記トレースログ同一箇所判断ステップにより第１の通過済トレースポイントと第２の通過済トレースポイントとが重複しないと判定された場合に、前記ソースコード内で測定開始ポイント又は前回第１のオブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出し、検出した分岐点に挿入される第１の新規トレースポイントに関するトレース情報を前記記憶装置に記録し、
前記測定結果出力ステップは、前記測定結果出力部が、前記トレースログ同一箇所判断ステップにより第１の通過済トレースポイントと第２の通過済トレースポイントとが重複すると判定された場合に、前記記憶装置に蓄積されたトレース情報から、通過済トレースポイントを抽出することを特徴とする請求項１３に記載の性能チューニング支援方法。
【請求項１８】
前記パス解析ステップは、前記パス解析部が、前記ソースコード内で一度にオブジェクトコードに変換される部分が、前記プログラム実行ステップにより実行可能な範囲となるように、一度に検出する分岐点の数を前記処理装置により調整することを特徴とする請求項１３に記載の性能チューニング支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能チューニング支援装置及び性能チューニング支援方法に関するものである。
【背景技術】
【０００２】
従来の方法では、処理分岐点ラベル付与部の構文解析部において、全てのソースコードを解析して全ての分岐点を抽出し、ラベル生成書き込み部において全てのトレースポイントを一度に入れる方法によって、プログラム実行時にトレースログを取得することが行われていた（例えば、特許文献１参照）。この方法では、一度に全ての分岐点に対して漏れなくトレースポイントを入れるため、必ず詳細なトレースデータを取得することができた。また、試験の網羅度を計測することを目的とするため、上記の通り、分岐点にトレースポイントが全て入っている必要があった。
【特許文献１】特開２００１−２８２５８０号公報（第７頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のトレースポイントの挿入方法では、モジュール全てを対象にトレースポイントを挿入することにより詳細なトレースポイントの設定が行えるが、実行モジュールサイズの肥大化とトレースログバッファのオーバーフローが課題となっていた。逆にトレースポイントの挿入を限定すると、トレースポイントの設定漏れが発生して必要なトレースログが得られない可能性があった。このため、組込みソフトウェアのようなメモリ資源の少ない機器において実行されるプログラムの場合は、実行モジュールサイズの肥大を防ぎながら詳細なトレースポイントの設定をすることと、トレースログバッファのオーバーフローを防げる程度にトレースログ量を抑えることの両立が困難であった。
【０００４】
本発明は、実行モジュールサイズを抑えながら詳細なトレースポイントを設定するとともに、トレースログ量を抑制することを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係る性能チューニング支援装置は、
プログラムのソースコードに挿入されるトレースポイントであって、前記ソースコード内で当該トレースポイントが挿入された部分を変換したオブジェクトコードが実行された場合に、当該オブジェクトコードの一部として実行されるとともにログデータを出力するトレースポイントに関するトレース情報を蓄積する記憶装置と、各部を制御する処理装置とを備える性能チューニング支援装置において、
前記ソースコード内で所定のトレースポイントの後に存在する分岐点を前記処理装置により検出し、検出した分岐点に挿入される新規トレースポイントに関するトレース情報を前記記憶装置に記録するパス解析部と、
前記パス解析部によりトレース情報が記録された新規トレースポイントを挿入するように指示するトレース挿入情報を前記処理装置により作成するトレースポイント情報作成部と、
前記ソースコードに対して、前記トレースポイント情報作成部により作成されたトレース挿入情報にて指示された新規トレースポイントを挿入するトレースポイント挿入部と、
前記ソースコード内で前記トレースポイント挿入部により新規トレースポイントが挿入された部分を変換したオブジェクトコードを実行することにより、当該新規トレースポイントを実行し、実行した新規トレースポイントから出力されるログデータを含むトレースデータを出力するプログラム実行部と、
前記プログラム実行部により出力されたトレースデータに基づいて、前記プログラム実行部によりオブジェクトコードの一部として実行された通過済トレースポイントを前記処理装置により判定し、判定した通過済トレースポイントに関するトレース情報を更新するトレースポイント記録部と、
前記トレースポイント記録部により更新されたトレース情報から、通過済トレースポイントを前記処理装置により抽出し、抽出した通過済トレースポイントを前記ソースコードの測定結果として出力する測定結果出力部とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明では、性能チューニング支援装置において、パス解析部が、所定のトレースポイントの後に存在する分岐点を検出し、分岐点に挿入される新規トレースポイントに関するトレース情報を記録し、トレースポイント情報作成部が、トレース情報が記録された新規トレースポイントを挿入するように指示するトレース挿入情報を作成し、トレースポイント挿入部が、ソースコードに対して、トレース挿入情報にて指示された新規トレースポイントを挿入し、プログラム実行部が、ソースコード内で新規トレースポイントが挿入された部分を変換したオブジェクトコードを実行することにより、当該新規トレースポイントを実行し、新規トレースポイントから出力されるログデータを含むトレースデータを出力し、トレースポイント記録部が、トレースデータに基づいて、オブジェクトコードの一部として実行された通過済トレースポイントを判定し、通過済トレースポイントに関するトレース情報を更新することにより、実行モジュールサイズを抑えながら詳細なトレースポイントを設定するとともに、トレースログ量を抑制することが可能となる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施の形態について、図を用いて説明する。
【０００８】
実施の形態１．
図１は、本実施の形態に係る性能チューニング支援装置の構成を示すブロック図である。
【０００９】
図１において、性能チューニング支援装置１００は、ログ解析部２００、トレースポイント挿入部１０５、プログラム実行部１０７を備える。ログ解析部２００は、測定区間入力部１０１、パス解析部１０２、トレースポイント情報作成部１０３、トレースログ蓄積部１０４、トレースポイント記録部１０８、終了判定部１０９、測定結果出力部１１０、ログ解析制御部１１１を含む。また、性能チューニング支援装置１００は、入力装置（図示していない）、処理装置、記憶装置、出力装置（図示していない）などのハードウェア装置を備える（又はこれらのハードウェア装置が性能チューニング支援装置１００に接続される）。ログ解析制御部１１１は、処理装置の一例である。トレースログ蓄積部１０４は、記憶装置の一例である。ハードウェア装置は性能チューニング支援装置１００の各部によって利用される。例えば、処理装置は、性能チューニング支援装置１００の各部がデータや情報の演算、加工、読み取り、書き込みなどを行うために利用される。記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報を入力するために、出力装置は、そのデータや情報を出力するために利用される。
【００１０】
トレースログ蓄積部１０４は、トレース情報を蓄積する。トレース情報は、トレースポイントに関する情報である。各トレースポイントは、性能チューニング対象であるプログラムのソースコード１０６内の各分岐点に挿入される。後述するプログラム実行部１０７が、ソースコード１０６内で、あるトレースポイントが挿入された部分をコンパイルしてオブジェクトコードに変換し、さらにそのオブジェクトコードを実行すると、そのトレースポイントはオブジェクトコードの一部として実行されてログデータを出力する。ここで、ソースコード１０６内のトレースポイントが実行されるというのは、オブジェクトコード内でそのトレースポイントに該当する部分が実行されることを意味するものとする。
【００１１】
トレース情報は、例えば、位置データ、識別子、通過フラグ、時刻、経過時間データを含む。位置データは、トレースポイントのソースコード１０６における位置を示すデータである。識別子は、トレースポイントを一意に特定するデータである。通過フラグは、トレースポイントの状態を示すデータである。時刻とは、プログラム実行部１０７によりトレースポイントが実行された時刻である。トレースポイントから出力されるログデータは、この時刻やトレースポイントの識別子などを示す。経過時間データは、トレースポイント間の経過時間を示すデータであり、この経過時間とは、あるトレースポイントが実行された時刻から他のトレースポイントが実行された時刻までの時間である。トレース情報の内容の一例を図２に示す。図２において、トレース情報は、位置データとしてソースコード１０６のファイル名及び行数（行番号）を、識別子としてトレース識別番号を含んでいる。また、トレース情報は、通過フラグ、時刻（通過時間）、経過時間データを含んでいる。
【００１２】
ログ解析制御部１１１は、各部を制御する。具体的には、ログ解析制御部１１１は、測定区間入力部１０１、パス解析部１０２、トレースポイント情報作成部１０３、トレースログ蓄積部１０４、トレースポイント記録部１０８、終了判定部１０９、測定結果出力部１１０などの各処理を、後述するフローチャートに示す手順に従って取りまとめ、制御を行う。
【００１３】
測定区間入力部１０１は、測定開始ポイント（「トレース開始ポイント」ともいう）と測定終了ポイント（「トレース終了ポイント」ともいう）を入力装置などにより入力する。ここで、測定開始ポイントは、ソースコード１０６内で最初に実行されるトレースポイントである。また、測定終了ポイントは、ソースコード１０６内で最後に実行されるトレースポイントである。測定区間入力部１０１は、入力した測定開始ポイントと測定終了ポイントに関するトレース情報をトレースログ蓄積部１０４に記録する。
【００１４】
パス解析部１０２は、指定したトレースポイントから先のパスをソースコード１０６上で検索し、追加するトレースポイントを抽出する。具体的には、パス解析部１０２は、後述する終了判定部１０９により測定終了ポイントが実行済ではないと判定された場合に、ソースコード１０６内で所定のトレースポイントの後に存在する分岐点をログ解析制御部１１１により検出する。ここで、所定のトレースポイントとは、まだプログラム実行部１０７によりオブジェクトコードが実行されていない場合には、測定開始ポイントである。一方、既にプログラム実行部１０７によりオブジェクトコードが実行されている場合には、所定のトレースポイントは、前回オブジェクトコードが実行された際に最後に実行されたトレースポイントである。パス解析部１０２は、検出した分岐点に挿入されるトレースポイント（このようなトレースポイントを「新規トレースポイント」という）に関するトレース情報をトレースログ蓄積部１０４に記録する。
【００１５】
トレースポイント情報作成部１０３は、トレース挿入情報（「トレース追加情報」ともいう）やトレース削除情報などのトレースポイント情報１１２をログ解析制御部１１１により作成しトレースポイント挿入部１０５に入力する。ここで、トレース挿入情報は、パス解析部１０２によりトレース情報が記録された新規トレースポイントを挿入するように指示する情報である。また、トレース削除情報は、新規トレースポイントと測定終了ポイント以外のトレースポイントで、プログラム実行部１０７によりまだ実行されていないもの（このようなトレースポイントを「未通過トレースポイント」という）を削除するように指示する情報である。
【００１６】
トレースポイント挿入部１０５は、トレースポイント情報１１２を基にソースコード１０６に対し、トレースデータ（トレースポイント）の挿入、削除を行う。具体的には、トレースポイント挿入部１０５は、ソースコード１０６に対して、トレースポイント情報作成部１０３により作成されたトレース挿入情報にて指示された新規トレースポイントを挿入する。また、ソースコード１０６から、トレースポイント情報作成部１０３により作成されたトレース削除情報にて指示された未通過トレースポイントを削除する。
【００１７】
プログラム実行部１０７は、ソースコード１０６をコンパイルし、実機１１４上で実行しトレースデータを得る。具体的には、プログラム実行部１０７は、ソースコード１０６内でトレースポイント挿入部１０５により新規トレースポイントが挿入された部分をコンパイルし、これをオブジェクトコードに変換する。そして、このオブジェクトコードを実機１１４上で実行することにより、新規トレースポイントを実行して、トレースログを取得し、取得したトレースログを出力装置により出力する。トレースログは、プログラム実行部１０７により実行された新規トレースポイントから出力されるログデータを含むトレースデータ１１３の一例である。
【００１８】
トレースポイント記録部１０８は、得られたトレースデータ１１３を基に、トレースログ蓄積部１０４に各データを記録する。具体的には、トレースポイント記録部１０８は、プログラム実行部１０７により出力されたトレースログに基づいて、プログラム実行部１０７によりオブジェクトコードの一部として実行されたトレースポイント（このようなトレースポイントを「通過済トレースポイント」という）をログ解析制御部１１１により判定する。そして、判定した通過済トレースポイントに関するトレース情報を更新する。
【００１９】
終了判定部１０９は、性能チューニングに必要なデータが揃い終了可能かどうかを判断する。具体的には、終了判定部１０９は、トレースログ蓄積部１０４に蓄積されたトレース情報に基づいて、測定終了ポイントが実行済かどうかをログ解析制御部１１１により判定する。
【００２０】
測定結果出力部１１０は、最終的なトレース結果を出力する。具体的には、測定結果出力部１１０は、終了判定部１０９により測定終了ポイントが実行済であると判定された場合に、トレースポイント記録部１０８により更新されたトレース情報から、通過済トレースポイントをログ解析制御部１１１により抽出する。そして、抽出した通過済トレースポイントをソースコード１０６の測定結果として出力装置により出力する。
【００２１】
以下、各部の機能をより具体的に説明する。
【００２２】
測定区間入力部１０１は、測定開始ポイントの通過フラグを「通過済」を示す値に設定する（例えば、図２の２行目参照）。また、測定終了ポイントの通過フラグを「新規追加」を示す値に設定する（例えば、図２の５行目参照）。さらに、測定開始ポイントと測定終了ポイントの位置データを設定する。
【００２３】
パス解析部１０２は、終了判定部１０９により測定終了ポイントの通過フラグが「通過済」を示していないと判定された場合に、ソースコード１０６内で測定開始ポイント又は前回オブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出する。そして、新規トレースポイントに関するトレース情報をトレースログ蓄積部１０４に記録する。このとき、パス解析部１０２は、その新規トレースポイントの通過フラグを「新規追加」を示す値に設定する。また、その新規トレースポイントの位置データを設定する。
【００２４】
トレースポイント情報作成部１０３は、トレースログ蓄積部１０４に蓄積されたトレース情報から、通過フラグが「新規追加」を示すトレースポイントを検索し、検索したトレースポイントを新規トレースポイントとして挿入するように指示するトレース挿入情報を作成する。このとき、トレースポイント情報作成部１０３は、その新規トレースポイントの識別子を設定し、設定した識別子をトレース挿入情報に付加する。また、その新規トレースポイントの位置データをトレース挿入情報に付加する。また、トレースポイント情報作成部１０３は、トレースログ蓄積部１０４に蓄積されたトレース情報から、通過フラグが「未通過」を示すトレースポイントを検索し、検索したトレースポイントを未通過トレースポイントとして削除するように指示するトレース削除情報をログ解析制御部１１１により作成する。このとき、トレースポイント情報作成部１０３は、その未通過トレースポイントの識別子をトレース情報から取得し、取得した識別子をトレース削除情報に付加する。また、その未通過トレースポイントの位置データをトレース削除情報に付加する。
【００２５】
トレースポイント挿入部１０５は、ソースコード１０６に対して、トレースポイント情報作成部１０３により作成されたトレース挿入情報に付加された位置データが示す位置に、そのトレース挿入情報に付加された識別子で示された新規トレースポイントを挿入する。このとき、トレースポイント挿入部１０５は、トレースポイント情報作成部１０３によりトレース挿入情報に付加された識別子を示すログデータが、プログラム実行部１０７により新規トレースポイントが実行された場合にその新規トレースポイントから出力されるように設定する。また、トレースポイント挿入部１０５は、ソースコード１０６から、トレースポイント情報作成部１０３により作成されたトレース削除情報に付加された位置データが示す位置から、そのトレース削除情報に付加された識別子で示された未通過トレースポイントを削除する。
【００２６】
プログラム実行部１０７は、上述した通り、ソースコード１０６内でトレースポイント挿入部１０５により新規トレースポイントが挿入された部分を変換したオブジェクトコードを実機１１４上で実行することにより、新規トレースポイントを実行する。そして、トレースログを取得し、取得したトレースログを出力装置により出力する。
【００２７】
トレースポイント記録部１０８は、トレースログ蓄積部１０４に蓄積されたトレース情報から、トレースログに含まれるログデータが示す識別子と識別子が一致するトレースポイントを検索する。そして、検索したトレースポイントを通過済トレースポイントとして判定し、判定した通過済トレースポイントに関するトレース情報を更新する。このとき、トレースポイント記録部１０８は、その通過済トレースポイントの通過フラグを「通過済」を示す値に設定する（例えば、図２の４行目参照）。また、トレースログに含まれるログデータが示す時刻に基づいて、トレースポイント間の経過時間をログ解析制御部１１１により計算し、その通過済トレースポイントの経過時間データを設定する。さらに、トレースポイント記録部１０８は、測定終了ポイント以外のトレースポイントで、プログラム実行部１０７によりまだ実行されていないトレースポイント（即ち、未通過トレースポイント）に関するトレース情報も更新する。このとき、トレースポイント記録部１０８は、そのトレースポイントの通過フラグを「未通過」を示す値に設定する（例えば、図２の３行目参照）。
【００２８】
終了判定部１０９は、測定終了ポイントの通過フラグが「通過済」を示しているかどうかをログ解析制御部１１１により判定する。
【００２９】
測定結果出力部１１０は、終了判定部１０９により測定終了ポイントの通過フラグが「通過済」を示していると判定された場合に、トレースログ蓄積部１０４に蓄積されたトレース情報から、通過フラグが「通過済」を示すトレースポイントを検索し、検索したトレースポイントを通過済トレースポイントとして抽出する。
【００３０】
図３は、性能チューニング支援装置１００の外観の一例を示す図である。
【００３１】
図３において、性能チューニング支援装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶ディスプレイ）の表示画面を有する表示装置９０１、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ装置９０６などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット９１０は、コンピュータであり、携帯電話機９３１とケーブルで接続され、また、ＬＡＮ９４２（ローカルエリアネットワーク）、ゲートウェイ９４１を介してインターネット９４０に接続されている。携帯電話機９３１は、組み込みソフトウェアを実行する機器（実機１１４）の一例である。このように、性能チューニング支援装置１００は、１つのコンピュータなどにより実施したり、複数のコンピュータなどを組み合わせて実施したりすることが可能である。
【００３２】
図４は、性能チューニング支援装置１００のハードウェア資源の一例を示す図である。
【００３３】
図４において、性能チューニング支援装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、処理装置（例えば、ログ解析制御部１１１）の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカードリーダライタなどの記憶媒体が用いられてもよい。
【００３４】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置（例えば、トレースログ蓄積部１０４）の一例である。通信ボード９１５、キーボード９０２、ＦＤＤ９０４などは、入力装置の一例である。また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００３５】
通信ボード９１５は、携帯電話機９３１、ＬＡＮ９４２などに接続されている。通信ボード９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ・Ｓｅｒｖｉｃｅｓ・Ｄｉｇｉｔａｌ・Ｎｅｔｗｏｒｋ）などのＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０あるいはＷＡＮなどに接続されている場合、ゲートウェイ９４１は不要となる。
【００３６】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。また、ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（ＩＤｅｎｔｉｆｉｅｒ）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として記憶されている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ディスクやメモリなどの記憶媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのＣＰＵ９１１の処理（動作）に用いられる。抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００３７】
また、本実施の形態の説明において説明するブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号は、ＲＡＭ９１４などのメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク（ＭＤ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００３８】
また、本実施の形態の説明において「〜部」、「〜手段」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、「〜手段」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、素子・デバイス・基板・配線などのハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤなどの記録媒体に記憶される。このプログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、本実施の形態の説明で述べる「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【００３９】
次に、性能チューニング支援装置１００の動作について説明する。
【００４０】
図５、図６、図７は、本実施の形態に係る性能チューニング支援方法を示すフローチャートである。
【００４１】
１．測定区間入力ステップ：
測定区間入力部１０１は、指定された測定開始ポイントと測定終了ポイントをトレースログ蓄積部１０４に渡す。このとき、トレースログ蓄積部１０４の通過フラグについては、測定開始ポイントは「通過済」、測定終了ポイントは「新規追加」に設定する（ステップＳ１０１）。
【００４２】
２．パス解析ステップ：
パス解析部１０２は、指定されたトレースポイントからソースコード１０６の位置を確定し（ステップＳ１０２）、そこから先のパスをソースコード１０６で解析し、ｉｆ文やｓｗｉｔｃｈ−ｃａｓｅ文など、条件によってその後の処理が分かれる分岐点を見つける（ステップＳ１０３）。そして、そこで分岐する全箇所に対してトレースポイント挿入点を設定し（ステップＳ１０４）、トレースログ蓄積部１０４にレコードを追加し、ファイル名、行数と、通過フラグ「新規追加」などの情報を記録する（ステップＳ１０５）。
【００４３】
３．トレースポイント情報作成ステップ：
トレースポイント情報作成部１０３は、トレースログ蓄積部１０４の通過フラグが「新規追加」のレコードに対し、トレースポイント記録部１０８で行われるトレースポイントとソースコード１０６の挿入場所との照合を可能にするため、トレースポイントごとにユニークなトレース識別番号を発行し、記録する（ステップＳ１０６）。その後、そのレコードの通過フラグに注目し（ステップＳ１０７）、通過フラグが「新規追加」のレコードについては「トレース追加情報」としてトレースポイント情報１１２を作成し（ステップＳ１０８）、通過フラグが「未通過」のレコードについては「トレース削除情報」としてトレースポイント情報１１２を作成し（ステップＳ１０９）、通過フラグが「通過済」の場合は何も行わない。このようにしてトレース挿入・削除箇所とトレース識別番号をまとめたトレースポイント情報１１２を作成し、トレースポイント挿入部１０５に渡す。
【００４４】
４．トレースポイント挿入ステップ：
トレースポイント挿入部１０５は、トレースポイント情報１１２を基にソースコード１０６に対してトレースポイントの挿入及び削除を行う（ステップＳ１１０）。
【００４５】
５．プログラム実行ステップ：
プログラム実行部１０７は、コンパイル及び実機１１４実行を行い、新たなトレースログを取得してトレースポイント記録部１０８に渡す（ステップＳ１１１）。
【００４６】
６．トレースポイント記録ステップ：
トレースポイント記録部１０８は、トレース識別番号をキーにトレースログ蓄積部１０４を検索し（ステップＳ１１２）、通過フラグを「通過済」にする（ステップＳ１１３）。同時にトレースポイント通過時間から各トレースポイント間の経過時間を算出し、それらをトレースログ蓄積部１０４に記録する（ステップＳ１１４）。最後に「通過済」とならなかった「新規追加」の通過フラグ（測定終了ポイントを除く）を、全て「未通過」にする（ステップＳ１１５）。
【００４７】
７．終了判定ステップ：
終了判定部１０９は、トレースログ蓄積部１０４の測定終了ポイントの通過フラグが「通過済」であればステップＳ１１７へ移る（ステップＳ１１６）。そうでなければ、「通過済」の最後のトレースポイントを指定し、ステップＳ１０２からの動作を繰り返し行う。
【００４８】
８．測定結果出力ステップ：
測定結果出力部１１０は、通過フラグが「通過済」であるトレースポイントと、各トレースポイント間の経過時間を、トレースログ蓄積部１０４から抽出し、出力する（ステップＳ１１７）。
【００４９】
以上のように、本実施の形態では、通過しないトレースポイントを削除しながら、通過するパスを検索して新規のトレースポイントを挿入することにより、実行モジュールサイズを抑えながら詳細なトレースポイントを設定するとともに、トレースログ量を抑制することが可能となる。
【００５０】
上述したように、本実施の形態で説明した性能チューニング支援装置は、
性能チューニングを行う区間を指定する測定区間入力部と、
ソースコードのパスを解析し新たなトレースポイント挿入点を決定するパス解析部と、
トレースポイント挿入に必要な情報を作成するトレースポイント情報作成部と、
トレースログのデータを基に取得したデータをトレースログ蓄積部に記録するトレースポイント記録部と、
指定した測定区間のトレースポイントのデータが全て得られたかどうかの判定を行う終了判定部と、
トレースポイントの各情報を図２に示すＤＢ（データベース）構造で記録するトレースログ蓄積部と、
測定結果をトレースログ蓄積部から抽出して出力を行う測定結果出力部と、
上記各部の制御を行うログ解析制御部とを有するログ解析部を持つことを特徴とする。
【００５１】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００５２】
図８は、本実施の形態に係る性能チューニング支援装置の構成を示すブロック図である。
【００５３】
図８において、性能チューニング支援装置１００は、ログ解析部２００、トレースポイント挿入部２０７、プログラム実行部１０７を備える。ログ解析部２００は、測定区間入力部１０１、パス解析部２０１、トレースポイント情報作成部２０３、トレースログ蓄積部２０４、トレースポイント記録部１０８、終了判定部１０９、測定結果出力部１１０、ログ解析制御部１１１のほかに、計測済ポイント抽出部２０２を含む。
【００５４】
計測済ポイント抽出部２０２は、計測済のトレースポイント（通過済トレースポイント）を抽出する。具体的には、計測済ポイント抽出部２０２は、トレースポイント記録部１０８により更新されたトレース情報から、通過済トレースポイントをログ解析制御部１１１により抽出する。
【００５５】
トレースポイント情報作成部２０３は、計測済ポイント抽出部２０２からのデータを基に、トレースポイント情報２０５をログ解析制御部１１１により作成しトレースポイント挿入部２０７に送付する。具体的には、トレースポイント情報作成部２０３は、計測済ポイント抽出部２０２により抽出された通過済トレースポイントを削除するように指示するトレース削除情報をログ解析制御部１１１により作成する。
【００５６】
トレースポイント挿入部２０７は、トレースポイント情報２０５を基にソースコード２０６に対し、トレースデータ（トレースポイント）の挿入、削除を行う。具体的には、トレースポイント挿入部２０７は、実施の形態１と同様に、ソースコード２０６に対して、トレースポイント情報作成部２０３により作成されたトレース挿入情報にて指示された新規トレースポイントを挿入する。また、ソースコード２０６から、トレースポイント情報作成部２０３により作成されたトレース削除情報にて指示された未通過トレースポイントを削除する。さらに、本実施の形態では、トレースポイント挿入部２０７は、ソースコード２０６から、トレースポイント情報作成部２０３により作成されたトレース削除情報にて指示された通過済トレースポイントを削除する。
【００５７】
次に、性能チューニング支援装置１００の動作について説明する。
【００５８】
図９は、本実施の形態に係る性能チューニング支援方法を示すフローチャートである。
【００５９】
１．パス解析ステップ：
パス解析部２０１は、実施の形態１において図５に示した方法で、トレースポイントの抽出を行う（ステップＳ１０２〜Ｓ１０５）。
【００６０】
２．計測済ポイント抽出ステップ：
ステップＳ１０１〜Ｓ１０５と同時に、計測済ポイント抽出部２０２は、トレースログ蓄積部２０４の通過フラグが「通過済」かつ経過時間が算出されているレコードの抽出を行い、「トレース削除情報」として扱う（ステップＳ２０１）。
【００６１】
３．トレースポイント情報作成ステップ：
トレースポイント情報作成部２０３は、実施の形態１において図６に示した方法で、トレースポイントの追加を行うための「トレース追加情報」を作成する（ステップＳ１０６〜Ｓ１０９）。また、トレースポイント情報作成部２０３は、計測済ポイント抽出部２０２が抽出したレコードを基に、「トレース削除情報」を作成する。そして、「トレース追加情報」と「トレース削除情報」を合わせ、トレースポイント情報２０５として、トレースポイント挿入部２０７に渡す。
【００６２】
４．トレースポイント挿入ステップ：
トレースポイント挿入部２０７は、実施の形態１において図６に示した方法と同様に、トレースポイント情報２０５を基にソースコード１０６に対してトレースポイントの挿入及び削除を行う（ステップＳ１１０）。これにより、既にトレースログ蓄積部２０４にデータが揃っているトレースポイントは、ソースコード２０６から削除される。
【００６３】
その他の性能チューニング支援装置１００の動作は、実施の形態１で説明したものと同様である。
【００６４】
以上のように、本実施の形態では、トレースポイントを挿入する処理と並行してトレースポイントを削除する処理を実行することにより、新たなトレースポイントを追加してもトレースポイントの総数を抑えることができ、モジュールサイズの肥大化やトレースログバッファのオーバーフローを防ぎながらトレースログを取得することが可能になる。
【００６５】
上述したように、本実施の形態で説明した性能チューニング支援装置は、
実施の形態１で説明した性能チューニング支援装置において、さらに、
トレースポイント情報作成部が、既にトレースログ蓄積部にデータが揃っているトレースポイントに対しては、「トレース削除情報」としてトレースポイント情報を作成し、
トレースポイント挿入部が、上記トレース削除情報を基にトレースポイントをソースコードから削除することを特徴とする。
【００６６】
実施の形態３．
本実施の形態について、主に実施の形態１との差異を説明する。実施の形態１は、トレースの追加を測定開始ポイントから行うものであったが、本実施の形態は、測定終了ポイントからも同時にトレースポイントの追加、削除を行うものである。
【００６７】
図１０は、本実施の形態に係る性能チューニング支援装置の構成を示すブロック図である。
【００６８】
図１０において、性能チューニング支援装置１００は、ログ解析部２００、トレースポイント挿入部３０７、プログラム実行部１０７を備える。ログ解析部２００は、測定区間入力部１０１、パス解析部３０１、トレースポイント情報作成部３０３、トレースログ蓄積部３０４、トレースポイント記録部１０８、測定結果出力部１１０、ログ解析制御部１１１のほかに、逆方向パス解析部３０２、トレースログ同一箇所判断部３０８を含む。
【００６９】
パス解析部３０１は、測定開始ポイントからのパス解析を順方向に行う。つまり、実施の形態１と同様に、指定したトレースポイントから先のパスをソースコード３０６上で検索し、追加するトレースポイントを抽出する。一方、逆方向パス解析部３０２は、測定終了ポイントからのパス解析を逆方向に行う。つまり、指定したトレースポイントまでのパスをソースコード３０６上で検索し、追加するトレースポイントを抽出する。具体的には、パス解析部３０１は、後述するトレースログ同一箇所判断部３０８により第１の通過済トレースポイントと第２の通過済トレースポイントとが重複しないと判定された場合に、ソースコード３０６内で測定開始ポイント又は前回第１のオブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出し、検出した分岐点に挿入される第１の新規トレースポイントに関するトレース情報をトレースログ蓄積部３０４に記録する。一方、逆方向パス解析部３０２は、トレースログ同一箇所判断部３０８により第１の通過済トレースポイントと第２の通過済トレースポイントとが重複しないと判定された場合に、ソースコード３０６内で測定終了ポイント又は前回第２のオブジェクトコードが実行された際に最初に実行されたトレースポイントの前に存在する分岐点を検出し、検出した分岐点に挿入される第２の新規トレースポイントに関するトレース情報をトレースログ蓄積部３０４に記録する。
【００７０】
ここで、第１の通過済トレースポイント、第１のオブジェクトコード、第１の新規トレースポイントは、それぞれ実施の形態１における通過済トレースポイント、オブジェクトコード、新規トレースポイントと同様である。つまり、順方向のパス解析に係る通過済トレースポイント、オブジェクトコード、新規トレースポイントである。一方、第２の通過済トレースポイント、第２のオブジェクトコード、第２の新規トレースポイントは、それぞれ逆方向のパス解析に係る通過済トレースポイント、オブジェクトコード、新規トレースポイントである。
【００７１】
パス解析部３０１は、まだプログラム実行部１０７により第１のオブジェクトコードが実行されていない場合には、ソースコード３０６内で測定開始ポイントの後に存在する分岐点を検出する。一方、既にプログラム実行部１０７により第１のオブジェクトコードが実行されている場合には、ソースコード３０６内で前回第１のオブジェクトコードが実行された際に最後に実行されたトレースポイントの後に存在する分岐点を検出する。また、逆方向パス解析部３０２は、まだプログラム実行部１０７により第２のオブジェクトコードが実行されていない場合には、ソースコード３０６内で測定終了ポイントの前に存在する分岐点を検出する。一方、既にプログラム実行部１０７により第２のオブジェクトコードが実行されている場合には、ソースコード３０６内で前回第２のオブジェクトコードが実行された際に最初に実行されたトレースポイントの前に存在する分岐点を検出する。
【００７２】
トレースポイント情報作成部３０３は、トレースポイント情報３０５をログ解析制御部１１１により作成しトレースポイント挿入部３０７に送付する。ここで、トレースポイント情報３０５に含まれるトレース挿入情報は、パス解析部３０１によりトレース情報が記録された第１の新規トレースポイントを挿入するように指示する情報と逆方向パス解析部３０２によりトレース情報が記録された第２の新規トレースポイントを挿入するように指示する情報とを合わせたものである。
【００７３】
トレースポイント挿入部３０７は、トレースポイント情報３０５を基にソースコード３０６に対し、トレースデータ（トレースポイント）の挿入、削除を行う。具体的には、トレースポイント挿入部３０７は、ソースコード３０６に対して、トレースポイント情報作成部３０３により作成されたトレース挿入情報にて指示された第１の新規トレースポイントと第２の新規トレースポイントとを挿入する。
【００７４】
プログラム実行部１０７は、ソースコード３０６をコンパイルし、実機１１４上で実行しトレースデータを得る。具体的には、プログラム実行部１０７は、ソースコード３０６内でトレースポイント挿入部３０７により第１の新規トレースポイントが挿入された部分をコンパイルし、これを第１のオブジェクトコードに変換する。また、ソースコード３０６内でトレースポイント挿入部３０７により第２の新規トレースポイントが挿入された部分をコンパイルし、これを第２のオブジェクトコードに変換する。そして、第１のオブジェクトコードと第２のオブジェクトコードとを実機１１４上で実行することにより、第１の新規トレースポイントと第２の新規トレースポイントとを実行して、トレースログを取得し、取得したトレースログを出力装置により出力する。トレースログは、プログラム実行部１０７により実行された第１の新規トレースポイントと第２の新規トレースポイントとからそれぞれ出力されるログデータを含むトレースデータ１１３の一例である。
【００７５】
トレースポイント記録部１０８は、得られたトレースデータ１１３を基に、トレースログ蓄積部１０４に各データを記録する。具体的には、トレースポイント記録部１０８は、プログラム実行部１０７により出力されたトレースログに基づいて、プログラム実行部１０７により第１のオブジェクトコードの一部として実行された第１の通過済トレースポイントとプログラム実行部１０７により第２のオブジェクトコードの一部として実行された第２の通過済トレースポイントとを判定する。そして、判定した第１の通過済トレースポイントと第２の通過済トレースポイントとに関するトレース情報を更新する。
【００７６】
トレースログ同一箇所判断部３０８は、パス解析部３０１で指定したトレースポイントと逆方向パス解析部３０２で指定したトレースポイントが同一ポイントになっているか判断する。具体的には、トレースログ同一箇所判断部３０８は、トレースポイント記録部１０８により判定された第１の通過済トレースポイントと第２の通過済トレースポイントとが重複するかどうかをログ解析制御部１１１により判定する。
【００７７】
測定結果出力部１１０は、最終的なトレース結果を出力する。具体的には、測定結果出力部１１０は、トレースログ同一箇所判断部３０８により第１の通過済トレースポイントと第２の通過済トレースポイントとが重複すると判定された場合に、トレースログ蓄積部３０４に蓄積されたトレース情報から、通過済トレースポイント（第１の通過済トレースポイントと第２の通過済トレースポイント）をログ解析制御部１１１により抽出する。そして、抽出した通過済トレースポイントをソースコード３０６の測定結果として出力装置により出力する。
【００７８】
次に、性能チューニング支援装置１００の動作について説明する。
【００７９】
図１１、図１２は、本実施の形態に係る性能チューニング支援方法を示すフローチャートである。
【００８０】
１．測定区間入力ステップ：
測定区間入力部１０１は、実施の形態１において図５に示した方法で、指定された測定開始ポイントと測定終了ポイントをトレースログ蓄積部３０４に渡す（ステップＳ１０１）。このとき、測定終了ポイントについては、トレースログ蓄積部３０４への記録時の通過フラグを「逆通過済」に設定する。
【００８１】
２−１．パス解析ステップ：
パス解析部３０１は、実施の形態１において図５に示した方法で、指定されたトレースポイントからソースコード３０６の位置を確定し（ステップＳ１０２）、そこから先のパスをソースコード３０６で解析し、ｉｆ文やｓｗｉｔｃｈ−ｃａｓｅ文など、条件によってその後の処理が分かれる分岐点を見つける（ステップＳ１０３）。そして、そこで分岐する全箇所に対してトレースポイント挿入点を設定し（ステップＳ１０４）、トレースログ蓄積部３０４にレコードを追加し、ファイル名、行数と、通過フラグ「新規追加」などの情報を記録する（ステップＳ１０５）。
【００８２】
２−２．逆方向パス解析ステップ：
ステップＳ１０２〜Ｓ１０５の処理に加え、逆方向パス解析部３０２は、指定されたトレースポイントからソースコード３０６の位置を確定し（ステップＳ３０１）、通過フラグが「逆通過済」のトレース箇所に対して、解析を逆方向に行い（ステップＳ３０２）、ｉｆ文やｓｗｉｔｃｈ−ｃａｓｅ文などの分岐文がある場合、そこで分岐する全箇所に対してトレースポイント挿入点を設定し（ステップＳ３０３）、トレースログ蓄積部３０４にレコードを追加し、ファイル名、行数と、通過フラグ「新規追加」などの情報を記録する（ステップＳ３０５）。ただし、上記分岐文があっても、測定終了ポイントがその分岐の中にある場合など、処理が行われる分岐箇所が一つに決まる場合には、トレースポイント挿入点は該当する１箇所のみに入れる。また、パス解析が関数先頭に到達した際は、プログラムの中から本関数の呼び出し元を検索し、呼び出し元ソースの該当関数の直前にトレースポイント挿入点を設定し、トレースログ蓄積部３０４にレコードを追加し、ファイル名、行数と、通過フラグ「新規追加」などの情報を記録する。ステップＳ３０４で、トレースログ蓄積部３０４の該当する箇所に「通過済」フラグが存在する場合は、「通過済」フラグを設定する（「通過済」の設定を変更しない）。
【００８３】
３．トレースポイント情報作成ステップ：
トレースポイント情報作成部３０３は、実施の形態１において図６に示した方法で、トレース挿入・削除箇所とトレース識別番号をまとめたトレースポイント情報１１２を作成し、トレースポイント挿入部３０７に渡す（ステップＳ１０６〜Ｓ１０９）。ステップＳ１０７で、通過フラグが「逆通過済」の場合は、通過フラグが「通過済」の場合と同様である。
【００８４】
４．トレースポイント挿入ステップ：
トレースポイント挿入部３０７は、実施の形態１において図６に示した方法で、トレースポイント情報３０５を基にソースコード３０６に対してトレースポイントの挿入及び削除を行う（ステップＳ１１０）。
【００８５】
５．プログラム実行ステップ：
プログラム実行部１０７は、実施の形態１において図６に示した方法で、コンパイル及び実機１１４実行を行い、新たなトレースログを取得してトレースポイント記録部１０８に渡す（ステップＳ１１１）。
【００８６】
６．トレースポイント記録ステップ：
トレースポイント記録部１０８は、トレース識別番号をキーにトレースログ蓄積部３０４を検索し（ステップＳ３１１）、通過フラグを「通過済」又は「逆通過済」にする（ステップＳ３１２）。同時にトレースポイント通過時間から各トレースポイント間の経過時間を算出し、それらをトレースログ蓄積部３０４に記録する（ステップＳ３１３）。最後に「通過済」又は「逆通過済」とならなかった「新規追加」の通過フラグを、全て「未通過」にする（ステップＳ３１３）。
【００８７】
７．トレースログ同一箇所判断ステップ：
トレースログ同一箇所判断部３０８は、ステップＳ３０４で通過フラグを「逆通過済」とすべきトレースポイントの通過フラグが既に「通過済」となっていればステップＳ１１７へ移る（ステップＳ３１４）。そうでなければ、「通過済」の最後に指定したトレースポイントと「逆通過済」の最初に指定したトレースポイントを指定し、ステップＳ１０２とステップＳ３０１からの動作を繰り返し行う。
【００８８】
８．測定結果出力ステップ：
測定結果出力部１１０は、通過フラグが「通過済」又は「逆通過済」であるトレースポイントと、各トレースポイント間の経過時間を、トレースログ蓄積部３０４から抽出し、出力する（ステップＳ３１５）。
【００８９】
以上のように、本実施の形態では、順方向のパス解析を行ってトレースポイントを挿入する処理と並行して、逆方向のパス解析を行ってトレースポイントを挿入する処理を実行することにより、プログラム実行回数を減らすことが可能となり、トレースポイントを取得する処理の効率性が向上する。
【００９０】
上述したように、本実施の形態で説明した性能チューニング支援装置は、
実施の形態１で説明した性能チューニング支援装置において、さらに、
測定開始ポイントからのトレースポイント追加と同時に、測定終了ポイントからもパス解析部の解析を逆方向に行い、分岐点にトレースポイントを追加するほか、パス解析が関数先頭に到達した際は、関数呼び出し元にトレースポイントを追加することを特徴とする。
【００９１】
実施の形態４．
本実施の形態について、主に実施の形態１との差異を説明する。実施の形態１は、トレースの追加、削除の単位が任意の数（１つ以上）の分岐点に対して行うものであったが、本実施の形態は、実行ファイルが実行可能な範囲に合わせて、分岐点の数を調整した上でトレースの追加、削除を行うものである。
【００９２】
図１３は、本実施の形態に係る性能チューニング支援装置の構成を示すブロック図である。
【００９３】
図１３において、性能チューニング支援装置１００は、ログ解析部２００、トレースポイント挿入部４０６、プログラム実行部４０８を備える。ログ解析部２００は、測定区間入力部１０１、パス解析部４０２、トレースポイント情報作成部４０３、トレースログ蓄積部４０５、トレースポイント記録部１０８、終了判定部１０９、測定結果出力部１１０、ログ解析制御部１１１のほかに、トレースポイント挿入限度数入力部４０１、プログラムサイズ計測部４０９、プログラムサイズ判断部４１０を含む。
【００９４】
トレースポイント挿入限度数入力部４０１は、トレースポイント挿入数の最大数を入力装置などにより入力する。プログラムサイズ計測部４０９は、プログラム（ソースコード４０７）のコンパイル後に実行ファイルサイズ（オブジェクトコードのサイズ）を処理装置により計測する。プログラムサイズ判断部４１０は、実行ファイルサイズが実機１１４上で実行可能なサイズであるか処理装置により確認する。
【００９５】
本実施の形態では、パス解析部４０２は、ソースコード４０７内で一度にオブジェクトコードに変換される部分が、プログラム実行部４０８により実行可能な範囲となるように、一度に検出する分岐点の数をログ解析制御部１１１により調整する。そのために、パス解析部４０２は、ソースコード４０７内で所定のトレースポイントの後に存在する分岐点を、トレースポイント挿入限度数入力部４０１により指定された数だけ検出する。
【００９６】
次に、性能チューニング支援装置１００の動作について説明する。
【００９７】
１．実施の形態１の手順において、１．測定区間入力ステップと同時にトレースポイントの挿入数をトレースポイント挿入限度数入力部４０１にて入力し、トレースログ蓄積部４０５に記録する。
【００９８】
２．実施の形態１の手順において、２．パス解析ステップのパス解析部４０２におけるパス解析及びトレースポイント挿入点の決定を、１．測定区間入力ステップで入力したトレースポイント挿入限度数を超えない範囲で複数断先まで繰り返し実施する。
【００９９】
３．実施の形態１の手順において、３．トレースポイント情報作成ステップ及び４．トレースポイント挿入ステップを実施し、プログラム実行部４０８にてコンパイルを実施して実行プログラム（オブジェクトコード）を得る。
【０１００】
４．上記３．にて取得した実行プログラムのサイズをプログラムサイズ計測部４０９にて計測する。
【０１０１】
５．上記４．で得られた結果を基に、プログラムサイズ判断部４１０でプログラムが実行可能であると判断されれば、プログラム実行部４０８の実機１１４実行以降、実施の形態１の手順を続行する。実行不可能であると判断されれば、上記１．のトレースポイント挿入限度数入力部４０１にて入力した値を減らして再実行する。
【０１０２】
以上のように、本実施の形態では、実行ファイルが実行可能な範囲に合わせて、分岐点の数を調整することにより、プログラム実行回数を最適化する（減らす）ことが可能となり、トレースポイントを取得する処理の効率性が向上する。
【０１０３】
上述したように、本実施の形態で説明した性能チューニング支援装置は、
実施の形態１で説明した性能チューニング支援装置において、さらに、
パス解析部におけるパス解析及びトレースポイント挿入点の決定を、プログラム実行部での実行が可能な範囲で、複数段先まで行うことを特徴とする。
【０１０４】
上述した各実施の形態は、単独で実施してもよいし、複数の実施の形態を組み合わせて実施してもよい。
【図面の簡単な説明】
【０１０５】
【図１】実施の形態１に係る性能チューニング支援装置の構成を示すブロック図である。
【図２】トレース情報の内容の一例を示す図である。
【図３】実施の形態１における性能チューニング支援装置の外観の一例を示す図である。
【図４】実施の形態１における性能チューニング支援装置のハードウェア資源の一例を示す図である。
【図５】実施の形態１に係る性能チューニング支援方法を示すフローチャートである。
【図６】実施の形態１に係る性能チューニング支援方法を示すフローチャートである。
【図７】実施の形態１に係る性能チューニング支援方法を示すフローチャートである。
【図８】実施の形態２に係る性能チューニング支援装置の構成を示すブロック図である。
【図９】実施の形態２に係る性能チューニング支援方法を示すフローチャートである。
【図１０】実施の形態３に係る性能チューニング支援装置の構成を示すブロック図である。
【図１１】実施の形態３に係る性能チューニング支援方法を示すフローチャートである。
【図１２】実施の形態３に係る性能チューニング支援方法を示すフローチャートである。
【図１３】実施の形態４に係る性能チューニング支援装置の構成を示すブロック図である。
【符号の説明】
【０１０６】
１００  性能チューニング支援装置、１０１  測定区間入力部、１０２，２０１，３０１，４０２  パス解析部、１０３，２０３，３０３，４０３  トレースポイント情報作成部、１０４，２０４，３０４，４０５  トレースログ蓄積部、１０５，２０７，３０７，４０６  トレースポイント挿入部、１０６，２０６，３０６，４０７  ソースコード、１０７，４０８  プログラム実行部、１０８  トレースポイント記録部、１０９  終了判定部、１１０  測定結果出力部、１１１  ログ解析制御部、１１２，２０５，３０５，４０４  トレースポイント情報、１１３  トレースデータ、１１４  実機、２００  ログ解析部、２０２  計測済ポイント抽出部、３０２  逆方向パス解析部、３０８  トレースログ同一箇所判断部、４０１  トレースポイント挿入限度数入力部、４０９  プログラムサイズ計測部、４１０  プログラムサイズ判断部、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  携帯電話機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2007334550.tif 000003
【図２】
2007334550.tif 000004
【図３】
2007334550.tif 000005
【図４】
2007334550.tif 000006
【図５】
2007334550.tif 000007
【図６】
2007334550.tif 000008
【図７】
2007334550.tif 000009
【図８】
2007334550.tif 000010
【図９】
2007334550.tif 000011
【図１０】
2007334550.tif 000012
【図１１】
2007334550.tif 000013
【図１２】
2007334550.tif 000014
【図１３】
2007334550.tif 000015