(57)【特許請求の範囲】
【請求項１】
対象プログラムの実行により発生した一連のイベントが記録されたログを入力し、ログ比較を行なってデバッグを支援するログ比較デバッグ支援装置において、
入力された前記ログから複数の部分ログを生成する部分ログ生成部と、
前記複数の部分ログを重複イベントを除外しながら結合することにより主ログを生成する主ログ生成部と、
前記主ログに含まれるイベントが前記複数の部分ログにも含まれるか否かを表す正規化ログを生成する正規化ログ生成部と、
前記正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を算出する特徴値算出部と、
発生及び不発生が特徴的なイベントを部分ログ同士が共に含む場合に該部分ログ同士の類似度がより大きな値を取るように、該部分ログ同士の類似度を、対応する正規化ログ同士の前記特徴値を用いた演算により算出する類似度算出部と、を具備することを特徴とするログ比較デバッグ支援装置。
【請求項２】
前記部分ログ生成部が生成すべき部分ログにおけるイベント列の先頭および終端のイベント及び、該イベント間に挟まれたイベント列を前記部分ログ生成部が前記ログから抽出するための抽出規則を指定する条件指定部をさらに具備することを特徴とする請求項１に記載のログ比較デバッグ支援装置。
【請求項３】
前記複数の部分ログのそれぞれに対応する正規化ログは、前記主ログに含まれるイベント毎に、該イベントが部分ログにも含まれる場合には第１の値を取り、含まれない場合には第２の値を取る正規化値を表しており、
前記特徴値算出部は、
前記正規化ログに含まれるイベント毎に、
（１）前記正規化値が前記第１の値であるならば、他の正規化ログにおいて前記第２の値を取る正規化値の数を第１の要素値とし、
（２）前記正規化値が前記第２の値であるならば、他の正規化ログにおいて前記第１の値を取る正規化値の数を０から引いた値を第２の要素値とし、
前記第１の要素値又は前記第２の要素値を要素とする配列を前記特徴値として算出することを特徴とする請求項１又は２のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項４】
前記類似度算出部は、前記正規化ログの前記特徴値の内積演算により前記部分ログの組み合わせにおける類似度を算出することを特徴とする請求項１乃至３のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項５】
前記特徴値算出部は、前記イベントの発生又は非発生確率を前記特徴値として計算することを特徴とする請求項１乃至３のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項６】
前記類似度算出部は、前記正規化ログ特徴値の対数絶対値を加減算することにより前記部分ログの組み合わせにおける類似度を算出することを特徴とする請求項５に記載のログ比較デバッグ支援装置。
【請求項７】
前記部分ログの一つを指定する指定部と、
前記指定部により指定された部分ログに類似する他の部分ログを前記類似度算出部により算出された類似度に基づいて選択する選択部と、をさらに具備することを特徴とする請求項１乃至６のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項８】
対象プログラムの実行により発生した一連のイベントが記録された動作ログを入力し、ログ比較を行なってデバッグを支援するログ比較デバッグ支援装置において、
入力された前記動作ログから複数の部分ログを生成する部分ログ生成部と、
前記対象プログラムのソースプログラムを展開処理して主ログを生成する主ログ生成部と、
前記主ログに含まれるイベントが前記複数の部分ログにも含まれるか否かを表す正規化ログを生成する正規化ログ生成部と、
前記正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を算出する特徴値算出部と、
発生及び不発生が特徴的なイベントを部分ログ同士が共に含む場合に該部分ログ同士の類似度がより大きな値を取るように、該部分ログ同士の類似度を、対応する正規化ログ同士の前記特徴値を用いた演算により算出する類似度算出部と、を具備することを特徴とするログ比較デバッグ支援装置。
【請求項９】
前記主ログ生成部は、前記ソースプログラムにおける特定関数に相当する記述を展開し、かかる展開結果を前記主ログとして生成する展開部を具備することを特徴とする請求項８に記載のログ比較デバッグ支援装置。
【請求項１０】
前記展開部は、前記特定関数に含まれる関数呼び出し及びループを含む特定構文の記述を展開することを特徴とする請求項９に記載のログ比較デバッグ支援装置。
【請求項１１】
前記部分ログ生成部が生成すべき部分ログにおけるイベント列の先頭および終端のイベント及び該イベント間に挟まれたイベント列を前記部分ログ生成部が前記動作ログから抽出するための抽出規則を指定する条件指定部をさらに具備することを特徴とする請求項８乃至１０のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項１２】
前記複数の部分ログのそれぞれに対応する正規化ログは、前記主ログに含まれるイベント毎に、該イベントが部分ログにも含まれる場合には第１の値を取り、含まれない場合には第２の値を取る正規化値を表しており、
前記特徴値算出部は、
前記正規化ログに含まれるイベント毎に、
（１）前記正規化値が前記第１の値であるならば、他の正規化ログにおいて前記第２の値を取る正規化値の数を第１の要素値とし、
（２）前記正規化値が前記第２の値であるならば、他の正規化ログにおいて前記第１の値を取る正規化値の数を０から引いた値を第２の要素値とし、
前記第１の要素値又は前記第２の要素値を要素とする配列を前記特徴値として算出することを特徴とする請求項８乃至１１のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項１３】
前記類似度算出部は、前記正規化ログの特徴値の内積演算により前記部分ログの組み合わせにおける類似度を算出することを特徴とする請求項８乃至１２のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項１４】
前記特徴値算出部は、前記イベントの発生又は非発生確率を前記特徴値として計算することを特徴とする請求項８乃至１２のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項１５】
前記類似度算出部は、前記正規化ログ特徴値の対数絶対値を加減算することにより前記部分ログの組み合わせにおける類似度を算出することを特徴とする請求項１４に記載のログ比較デバッグ支援装置。
【請求項１６】
前記部分ログの一つを指定する指定部と、
前記指定部により指定された部分ログに類似する他の部分ログを前記類似度算出部により算出された類似度に基づいて選択する選択部と、をさらに具備することを特徴とする請求項８乃至１５のいずれか一項に記載のログ比較デバッグ支援装置。
【請求項１７】
対象プログラムの実行により発生した一連のイベントが記録されたログを入力し、
入力された前記ログから部分ログ生成部が複数の部分ログを生成し、
前記複数の部分ログを主ログ生成部が重複イベントを除外しながら結合することにより主ログを生成し、
前記主ログに含まれるイベントが前記複数の部分ログにも含まれるか否かを表す正規化ログを正規化ログ生成部が生成し、
前記正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を特徴値算出部が算出し、
発生及び不発生が特徴的なイベントを部分ログ同士が共に含む場合に該部分ログ同士の類似度がより大きな値を取るように、該部分ログ同士の類似度を、対応する正規化ログ同士の前記特徴値を用いた演算により類似度算出部が算出することを特徴とするログ比較デバッグ支援方法。
【請求項１８】
対象プログラムの実行により発生した一連のイベントが記録された動作ログを入力し、
入力された前記動作ログから複数の部分ログを部分ログ生成部が生成し、
前記対象プログラムのソースプログラムを主ログ生成部が展開処理して主ログを生成し、
前記主ログに含まれるイベントが前記複数の部分ログにも含まれるか否かを表す正規化ログを正規化ログ生成部が生成し、
前記正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を特徴値算出部が算出し、
発生及び不発生が特徴的なイベントを部分ログ同士が共に含む場合に該部分ログ同士の類似度がより大きな値を取るように、該部分ログ同士の類似度を、対応する正規化ログ同士の前記特徴値を用いた演算により類似度算出部が算出することを特徴とするログ比較デバッグ支援方法。
【請求項１９】
対象プログラムの実行により発生した一連のイベントが記録されたログを入力する手順と、
入力された前記ログから複数の部分ログを生成する手順と、
前記複数の部分ログを重複イベントを除外しながら結合することにより主ログを生成する手順と、
前記主ログに含まれるイベントが前記複数の部分ログにも含まれるか否かを表す正規化ログを生成する手順と、
前記正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を算出する手順と、
発生及び不発生が特徴的なイベントを部分ログ同士が共に含む場合に該部分ログ同士の類似度がより大きな値を取るように、該部分ログ同士の類似度を、対応する正規化ログ同士の前記特徴値を用いた演算により算出する手順と、をコンピュータに実行させることを特徴とするログ比較デバッグ支援プログラム。
【請求項２０】
対象プログラムの実行により発生した一連のイベントが記録された動作ログを入力する手順と、
入力された前記動作ログから複数の部分ログを生成する手順と、
前記対象プログラムのソースプログラムを展開処理して主ログを生成する手順と、
前記主ログに含まれるイベントが前記複数の部分ログにも含まれるか否かを表す正規化ログを生成する手順と、
前記正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を算出する手順と、
所定の部分ログと他の部分ログとの組み合わせにおいて、該部分ログ同士の類似度を前記特徴値に基づく所定の演算により算出する手順と、をコンピュータに実行させることを特徴とするログ比較デバッグ支援プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、対象プログラムの実行によって発生した一連のイベントが記録（トレース）されたログを利用してデバッグ作業を支援する装置および方法およびプログラムに関する。
【０００２】
【従来の技術】
プログラム中に含まれる誤りを正す作業（「デバッグ」）をプログラマー等が行なう際には、これを支援するデバッガが利用される。デバッガは、デバッグ作業者からの指示に従って対象プログラムを起動し、その実行を制御する。いわゆるデバッグ実行の過程において、デバッグに有益な各種情報を表示することができる。
【０００３】
デバッグには幾つかの手法が知られている。最近では、プログラムの動作確認やデバッグ作業のために動作ログを使用する場合が増えてきており、例えばログベースのデバッグ手法が普及してきている。この手法では、システムコール発行の履歴をＯＳにより記録し、メモリアクセスの履歴をハードウェア又はエミュレータにより記録し、これらの集合としてのイベント情報（ログ）を専用のビューアを用いて表示する。この表示をデバッグ作業の一助としている。
【０００４】
ログを用いてデバッグを行う場合、一つのログを詳細に調査してバグの原因を突き止める手法のほかに、正常動作した場合のログと異常動作した場合のログとを比較して相違部分を探し出し、かかる相違部分を集中的に調査することでバグの原因を突き止める手法がある。
【０００５】
ところで、このようなログ比較に基づくデバッグでは、不適当なログを選択して比較を行なってしまうと相違部分が多く見つかり過ぎて調査範囲が拡大し、デバッグ効率が著しく低下してしまう。そこで、できるだけ似た挙動を示すログをデバッグ作業者が選択し、比較に用いるようにしている。
【０００６】
本来ならば、プログラムの動作の意味が考慮され、類似ログが選択されるべきである。しかし従来の手法は、ログ同士の構成内容を単に比較して最も似ているログを選択するだけのものである。このためループの繰り返し回数が最も近いものが選択される場合があるなど、必ずしも効率的ではない。
【０００７】
【発明が解決しようとする課題】
本発明は上記事情を考慮してなされたものであり、その目的は、ログ比較に有益な部分ログを得ることができ、ログベースのデバッグ作業の効率向上に寄与する装置および方法およびプログラムを提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決し目的を達成するために本発明は次のように構成されている。
【０００９】
本発明に係るログ比較デバッグ支援装置は、対象プログラムの実行により発生した一連のイベントが記録されたログを入力し、ログ比較を行なってデバッグを支援するログ比較デバッグ支援装置において、入力された前記ログから複数の部分ログを生成する部分ログ生成部と、前記部分ログを連結して主ログを生成する主ログ生成部と、前記主ログを正規化の規準として前記部分ログを正規化することにより正規化ログを生成する正規化ログ生成部と、前記正規化ログ生成部により生成された正規化ログのそれぞれについて、前記イベントの発生及び不発生の特徴度合いを示す特徴値を算出する特徴値算出部と、所定の部分ログと他の部分ログとの組み合わせにおいて、該部分ログ同士の類似度を前記特徴値に基づく所定の演算により算出する類似度算出部と、を具備することを特徴とする。
【００１０】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。
（第１実施形態）
図１は、本発明の第１実施形態に係るログ比較デバッグ支援装置の概略構成を示すブロック図である。図１に示すように本装置は、条件指定部１、部分ログ生成部２、主ログ生成部４、正規化ログ生成部５、ログ特徴値算出部６、ログ類似度算出部８、ログ選択部９、ログ表示部１０、部分ログ指定部１１から構成されている。本装置は、準備された動作ログＬを本実施形態のログ比較デバッグ支援装置に与え、およびデバッグ作業者１２が条件指定部１及び部分ログ指定部１１を介してログ比較に係る条件等を指定すると、ログの類似情報をログ表示部１０に表示するものである。
【００１１】
動作ログＬは、図示しない対象プログラムの実行によって発生した一連のイベントが記録されたものである。対象プログラムの種別、数量等は任意であり、実行環境も任意である。例えば対象プログラムの一部がシミュレータにより置き換えられていたり、対象プログラムが制御するハードウェアの一部又は全部がエミュレータにより置き換えられていてもよい。
動作ログＬを準備するための対象プログラムは、図示しないデバッガにより実行される。イベントの収集・記録処理は、デバッガに組み込まれ、或いはデバッガとは別構成で協調動作する「トレーサ」により行なわれる。
本発明でいう「イベント（事象）」は、デバッグ環境全体で予め定義されるものである。かかるイベントの定義に沿って、トレーサは対象プログラムの実行動作を追跡し、対象プログラムのデバッグ実行動作（シーケンス）時に、発生（成立）した一連のイベントを動作ログＬに記録する。
【００１２】
図２は、本実施形態に係るログ比較デバッグ支援装置の大まかな処理の流れを示す図である。以下、第１実施形態では、対象プログラムの実行によって発生した一連のイベントが記録された動作ログＬの一例として、以下３つの動作ログ１〜３が与えられた場合を考える。
動作ログ１：ａｂｃｇｈ
動作ログ２：ａｃｆｇｈ
動作ログ３：ａｂｃｄｅｇｈａｃｇｈ
ａ〜ｈはそれぞれ、ログを構成する識別可能なイベントであり、その並びがイベントの発生順序を表すものである。
【００１３】
先ず、図２のステップＳ０において、デバッグ作業者（ユーザ）１２は、ログ比較条件として、部分ログの先頭及び末尾のイベントを指定し、及び該イベント間に挟まれたイベント列の少なくとも一部を抽出するための抽出規則を指定する（条件指定部１）。
具体的には例えば、部分ログの先頭及び末尾のイベントが、それぞれイベントａからイベントｈまでと指定され、また、イベントａとイベントｈとの間に挟まれたイベント列の抽出規則として「全てのイベントを抽出する」という規則がログ比較条件として指定されたとする。ここで、「全てのイベント」とは、部分ログとして切り出すイベントの種類を限定しない、ということを意味する。
【００１４】
ステップＳ１において、部分ログ生成部２は、動作ログＬを入力し、ステップＳ０において指定されたログ比較条件に従って、動作ログＬから複数の部分ログを生成する。ここでは、動作ログ１〜３から、先頭及び末尾のイベントすなわちイベントａ及びｈにより挟まれたイベント列を部分ログとして切り出す。
【００１５】
結果として、次に示すように、上記動作ログ１から部分ログＡ、動作ログ２から部分ログＢ、動作ログ３から部分ログＣおよび部分ログＤの計４つのログが切り出される。
部分ログＡ：（ａ）ｂｃｇ（ｈ）
部分ログＢ：（ａ）ｃｆｇ（ｈ）
部分ログＣ：（ａ）ｂｃｄｅｇ（ｈ）
部分ログＤ：（ａ）ｃｇ（ｈ）
なお、部分ログＡ〜Ｄのそれぞれにおいて、先頭及び末尾のイベント（すなわちイベントａ及びｈ）は各部分ログ間で共通であるから、各々の部分ログから便宜的に削除しておく。
【００１６】
次にステップＳ２において、主ログ生成部４は部分ログ生成部２により生成された部分ログＡ〜Ｄを、所定の結合アルゴリズムに従い、不要な重複イベントを除外しながら結合することにより主ログを生成する。なお主ログの生成を、当該第１実施形態のように部分ログ（動作ログＬ）に基づいて生成するのではなく、後述する第２実施形態のように、動作ログＬとは異質のデータであるソース（原始）プログラムを展開処理することにより生成してもよい。
【００１７】
第１実施形態では、次に示すように部分ログＡ〜Ｄの結合処理がなされ、その結合結果を主ログとする。
Ａ：                    ｂｃｇ
Ａ＋Ｂ：                ｂｃｆｇ
（Ａ＋Ｂ）＋Ｃ：          ｂｃｆｄｅｇ
（（Ａ＋Ｂ）＋Ｃ）＋Ｄ：  ｂｃｆｄｅｇ
生成された主ログは、条件指定部１において指定されたログ比較条件に対応する正規化規準として参照される。
【００１８】
次にステップＳ３において、正規化ログ生成部５は、ステップＳ２において生成された主ログに基づき、部分ログＡ〜Ｄを正規化する。すなわち、正規化ログ生成部５は、部分ログＡ〜Ｄのそれぞれを、主ログ生成部３から得られた主ログと比較し、主ログの構成要素イベントが当該部分ログに存在する場合には１、存在しない場合には０が設定されたビット列を生成する。これを正規化ログとする。
当該第１実施形態において、部分ログＡ〜Ｄそれぞれの正規化ログは、次のようになる。
主ログ：        ｂｃｆｄｅｇ
正規化ログＡ：（１１０００１）
正規化ログＢ：（０１１００１）
正規化ログＣ：（１１０１１１）
正規化ログＤ：（０１０００１）
次にステップＳ４において、特徴値算出部６は正規化ログＡ〜Ｄのそれぞれに含まれるイベントについて、イベントの発生又は不発生の特徴度合いを示す特徴値を算出する。計算にあたっては、一つの正規化ログ（例えばログＡ）のうちの一つのイベントの特徴値の計算のために、他の正規化ログ（例えばログＢ乃至Ｄ）が参照される。
【００１９】
より詳しくは、各正規化ログの各イベントの正規化値について、
（１）かかる正規化値が１である場合（イベント発生）は、他の正規化ログにおいて正規化値が０の値を持つ（イベント不発生）ログの数を集計し、その値を特徴値とする。このログ特徴の値が高ければ、当該イベントの発生（成立）は特徴的といえる。
（２）正規化値が０の値である場合（イベント不発生）は、他の正規化ログにおいて正規化値が１の値を持つ（イベント発生）ログの数を集計し、その値を０から引いた値を特徴値とする。この場合、ログ特徴の絶対値が高ければ、当該イベントの不発生（不成立）は特徴的といえる。
たとえば、正規化ログＡのイベントｂについて、その正規化値は１であって、該イベントの正規化値が０であるものは正規化ログＢとＤであるから、正規化ログＡのイベントｂのログ特徴を示す値は２となる。また、正規化ログＡのイベントｆについて、その正規化値は０であって、且つこの場合、該イベントの正規化値が１であるものは正規化ログＢの一つだけであるから、正規化ログＡのイベントｆのログ特徴の値は０から１を引いて−１となる。
正規化ログＡ〜Ｄそれぞれのログ特徴値（配列）Ａ〜Ｄは、次の通りとなる。
なお、図３はこれをグラフ化したものである。
特徴値Ａ：（  ２，０，−１，−１，−１，０）
特徴値Ｂ：（−２，０，  ３，−１，−１，０）
特徴値Ｃ：（  ２，０，−１，  ３，  ３，０）
特徴値Ｄ：（−２，０，−１，−１，−１，０）
次にステップＳ５において、類似度算出部８は、ある部分ログと他の部分ログとの全ての組み合わせ（ＡＢ，ＡＣ，ＡＤ，ＢＣ，ＢＤ，ＣＤ）において、部分ログ同士の類似度を特徴値Ａ〜Ｄに基づく内積演算により算出する。内積演算の値が大きいほど、その部分ログ同士は他の組よりも類似度が高いものと判定する。例えば部分ログＡとＢとの比較（組み合わせ）において、これら部分ログそれぞれの特徴値ＡとＢとの内積演算は次の通りとなる。
0004630489.tif 000002
上記全ての組み合わせについて演算を行なった結果は次の通りとなる。
ＡＢ＝−５
ＡＣ＝−１
ＡＤ＝−１
ＢＣ＝−１３
ＢＤ＝  ３
ＣＤ＝−９
ステップＳ６に示すように、デバッグ作業者１２が部分ログ指定部１１を介して比較対象の元となる部分ログを指定すると、部分ログ選択部９は、該指定部分ログと類似度の高い部分ログを、類似度算出部８により算出された類似度に基づき選択する。例えばデバッグ作業者１２が、部分ログ指定部１１を介して部分ログＤ指定したとすると、ステップＳ７においてログ選択部９は、部分ログＤに最も類似する部分ログとして部分ログＢを選択する。
【００２０】
そしてステップＳ８において、ログ表示部９は、部分ログＢと部分ログＤとを、好ましくは両者の相違部分を強調して表示する。なお、部分ログＢに類似する部分ログを、その類似度順に並べ替えて表示してもよい。
【００２１】
なお、部分ログ指定部１１を備えない構成を採る場合には、上記全ての組み合わせについてその類似度を表示すればよい。この場合、類似度順に並べ替えて表示しても良い。
【００２２】
以上説明したように、第１実施形態に係るログ比較デバッグ支援装置は、正規化ログ同士を単純に比較するのではなく、主ログの構成要素イベント（本実施形態では「ｂｃｆｄｅｇ」）それぞれの発生及び不発生の特徴度合いを示す特徴値Ａ〜Ｄを算出し、該特徴値の内積演算に基づいているので、稀に発生する（もしくは稀にしか欠けない）イベントを共通に含むことが重視された類似判定を行なうことができる。
【００２３】
部分ログＡとＤ，ＢとＤを比べると、いずれも１イベントの相違しかない。しかし、ＡとＤの違いである１番目のイベント「ｂ」と、ＢとＤの違いである３番目のイベント「ｆ」とを比べると、１番目のイベントがＢとＤで共通であることの方が、３番目のイベントがＡとＤで共通であることよりも稀（特徴的）である。つまり、発生又は不発生が特徴的なイベントを共通に含むことが重視された類似度判定を行なうことができる。
【００２４】
したがって、動作ログＬのデータ量が大きくなってデバッグ調査の範囲が拡大するような場合であっても、着目箇所に関する基準の部分ログを指定するだけで、これに類似しログ比較に有益な部分ログを容易に得ることができ、プログラム動作理解を含めたログベースのデバッグ作業の効率向上に寄与する。
【００２５】
（第２実施形態）
次に、本発明の第２実施形態を説明する。
図４は、本発明の第２実施形態に係るログ比較デバッグ支援装置の概略構成を示すブロック図である。当該第２実施形態は、対象プログラムのソースコードを基準としたログ比較を行なうデバッグ支援装置に関するものであり、第１実施形態よりも動作ログＬの構成内容が現実的である。
【００２６】
また、第２実施形態の装置は、主ログ生成部７がデバッグ対象のプログラムのソースコード７を入力し、該ソースコードを展開処理して主ログを生成する点で第１実施形態とは異なる。他の構成要素については第１実施形態のものと同様である。
【００２７】
第２実施形態の大まかな処理の流れは、第１実施形態と同様である。以下、図５に示すプログラム７の実行時のログとして、動作ログＡ〜Ｈからなるものが得られたとして説明する。図６に動作ログＤを、図７に動作ログＥを示し、他の動作ログについては図示省略する。
【００２８】
先ず、デバッグ作業者（ユーザ）１２は、ログ比較条件として、図５に示されているソースプログラム中に記述されているｍａｉｎ関数を対象関数として指定する。また、ソースプログラムの展開パラメータとして、該ｍａｉｎ関数内における関数の再帰呼び出しの記述を４段階まで展開し、及びループ構文を３回まで展開する旨を表すパラメータを指定する。また、ｍａｉｎ関数内における代入文、コメント、および空白行の記述は無視（主ログにおいて削除）する旨の指定も行なう。
【００２９】
これにより主ログ生成部４は、対象プログラムのソースコード７を入力し、該ソースコードにおけるｍａｉｎ関数の記述部分を切り出し、条件指定部１により指定された展開パラメータに従って展開し、その展開結果を主ログとして生成する。これにより生成された主ログを図８に示す。図８から分かるように、再帰呼び出しに係る関数「makeValueString(...)」は４段階にわたって展開記述されている。
【００３０】
部分ログ生成部２は条件指定部１に与えられた展開パラメータに従い、動作ログＡ〜Ｈのそれぞれから、指定関数としてのｍａｉｎ関数につき、その実行開始から終了までを部分ログとして切り出す。なお、図６に示された動作ログＤ、及び図７に示された動作ログＥは、共にｍａｉｎ関数実行部分に対応するログであるから、そのまま部分ログとなる。また、図示していないが、動作ログＤ及びＥ以外の動作ログ（Ａ，Ｂ，Ｃ，Ｆ，Ｇ，Ｈ）については、それぞれ１つのｍａｉｎ関数の実行ログを含むものと仮定して説明する（これらの正規化ログについては図１０に示す）。
【００３１】
正規化ログ生成部５は、部分ログ生成部２から得られた部分ログと、主ログ生成部４から得られた主ログとを対応させ、主ログの構成要素イベントが当該部分ログに存在する場合には１、存在しない場合には０が設定されたビット列を生成する。これを正規化ログとする。動作ログＤの部分ログのプログラム記述に対応した正規化の内容を図９に示す。また、当該第２実施形態における部分ログＡ〜Ｈそれぞれの正規化ログの一覧を図１０に示す。
【００３２】
ログ特徴値算出部５は、正規化ログ生成部５により生成された正規化ログに基づき、第１実施形態で行ったものと同様の演算を行って特徴値（配列）Ａ〜Ｈを算出する。特徴値Ａ〜Ｈの一覧を図１１に示す。
【００３３】
ログ類似度算出部８は、ログ特徴値算出部５により算出された特徴値Ａ〜Ｈに基づき、第１実施形態で行なったものと同様の内積処理を行って類似度を算出する。部分ログＡ〜Ｈの全ての組み合わせについて算出した類似度の一覧を図１２に示す。
【００３４】
ここで、部分ログ指定部１１により、デバッグ作業者１２が比較の基準となるログとして部分ログＤを選択したとする。ログ選択部９は、ログ類似度算出部８により算出された類似度に基づき、部分ログ指定部１１により指定された部分ログＤに最も類似する部分ログとして、類似度が最大値「４７０」となる部分ログＨを選択する。
【００３５】
第２実施形態によれば、第１実施形態と同様に、主ログの構成要素イベント（本実施形態では関数呼び出し、ループ、スイッチなどの構文記述である）それぞれの発生及び不発生の特徴度合いを示す特徴値Ａ〜Ｈを算出し、該特徴値の内積演算に基づいているので、稀に発生する（もしくは稀にしか欠けない）イベントを共通に含むことが重視された類似判定を行なうことができる。
【００３６】
（第３実施形態）
次に、本発明の第３実施形態を説明する。
第３実施形態は、第１実施形態の変形例に係る。第１実施形態において説明した特徴値と類似度の計算を、以下のように行ってもよい。すなわち、第１実施実施形態において作成された正規化ログに対して、ステップＳ４にて、それぞれ特徴値を計算する。
【００３７】
第１実施実施形態とは別に、ここでは、イベント発生時にはイベントの発生確率をイベントの非発生時には非発生確率を特徴値として与えるようにする。
【００３８】
主ログ：        ｂｃｆｄｅｇ
正規化ログＡ：（１１０００１）
正規化ログＢ：（０１１００１）
正規化ログＣ：（１１０１１１）
正規化ログＤ：（０１０００１）
例えば、イベントｂは正規化ログＡとＣとで発生しており、正規化ログＢとＤでは発生していない。従って、イベントｂの発生確率は０．５であり、非発生確率についても同じく０．５となる。よって、イベントｂの発生時も非発生時も特徴値を０．５とする。
【００３９】
同様に、イベントｆは正規化ログＢでのみ発生しており、イベントｆの発生確率は０．２５であり、非発生確率は０．７５となる。よって、イベントｆの発生の特徴値を０．２５に、非発生時の特徴値を０．７５とする。
【００４０】
これをまとめると、各ログの特徴値は
特徴値Ａ：  （０．５，  １，  ０．７５，  ０．７５，  ０．７５，  １）
特徴値Ｂ：  （０．５，  １，  ０．２５，  ０．７５，  ０．７５，  １）
特徴値Ｃ：  （０．５，  １，  ０．７５，  ０．２５，  ０．２５，  １）
特徴値Ｄ：  （０．５，  １，  ０．７５，  ０．７５，  ０．７５，  １）
となる。
【００４１】
次に、ステップＳ５において、類似度算出部８は、ある部分ログと他の部分ログとのすべての組み合わせにおいて、部分ログ同士の類似度を特徴値Ａ〜Ｄに基づいて算出する。
【００４２】
ここでは、各イベントの特徴値の対数の絶対値を求め、組み合わせた部分ログの両方でイベントが発生した場合、および両方ともイベントが発生しなかった場合に加算を行ない、片方でのみイベントが発生した場合には減算を行なうことで類似度を計算する。
【００４３】
例えば、部分ログＡとＢとの組では、イベントｆの比較から得られる類似度は、部分ログＡでは発生し、Ｂでは発生していないことから、-|log(0.75)|-|log(0.25)|となる。
イベントｄの比較では、部分ログＡ、Ｂともにイベントが発生していないことから、+|log(0.75)|+|log(0.75)|となる。
同様に計算を行えば、部分ログＡとＢの類似度ＡＢは次の通りとなる。
【００４４】
0004630489.tif 000003
上記すべての組み合わせについて演算を行った結果は次の通りとなる。
【００４５】
ＡＢ  ＝  −１．１８
ＡＣ  ＝  −０．６
ＡＤ  ＝  ０．１５
ＢＣ  ＝  −２．７７５
ＢＤ  ＝  ０．３７５
ＣＤ  ＝  −１．８
以上説明した第３実施形態によれば、部分ログＢとＤとの組み合わせにおいて０．３７５という値が得られており、これらが最も類似度が高いということがわかる。つまり、第１実施形態と同等の作用効果を得ることができる。なお、第３実施形態を上述した第２実施形態に適用しても良い。
【００４６】
なお、本発明は上述した実施形態に限定されず種々変形して実施可能である。
例えば、部分ログの特徴値を内積や確率によって求めたが、これらに代わる他のアルゴリズムが用いられてもよい。部分ログを自動生成しないで直接的に入力してもよい。また、部分ログの結合やソースプログラムを参照した主ログの自動生成を行なわず事前に用意された主ログを直接的に入力するように構成してもよい。この場合、適切な部分ログ及び主ログを準備する手数がかかるものの、ログ比較に有益な情報が得られるという発明の作用効果を得ることができる。
【００４７】
【発明の効果】
以上説明したように本発明によれば、比較的多数の動作ログによりデータ量が大きくなってデバッグ調査の範囲が拡大するような場合であっても、着目箇所に関する基準の部分ログを指定するだけで、これに類似しログ比較に有益な部分ログを容易に得ることができ、プログラム動作理解を含めたログベースのデバッグ作業の効率向上に寄与する。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係るログ比較デバッグ支援装置の概略構成を示すブロック図
【図２】実施形態に係るログ比較デバッグ支援装置の大まかな処理の流れを示す図
【図３】第１実施形態に係る正規化ログＡ〜Ｄそれぞれのログ特徴値Ａ〜Ｄを示すグラフ
【図４】本発明の第２実施形態に係るログ比較デバッグ支援装置の概略構成を示すブロック図
【図５】第２実施形態に係る対象プログラムのソースコードを示す図
【図６】第２実施形態に係る対象プログラムの実行時のログの一例を示す図
【図７】第２実施形態に係る対象プログラムの実行時のログの他の例を示す図
【図８】第２実施形態に係る対象（ソース）プログラムに基づき生成された主ログを示す図
【図９】第２実施形態に係る動作ログＤの部分ログのプログラム記述に対応した正規化の内容を示す図
【図１０】第２実施形態に係る部分ログＡ〜Ｈそれぞれの正規化ログの一覧を示す図
【図１１】第２実施形態に係る部分ログＡ〜Ｈそれぞれの特徴値の一覧を示す図
【図１２】第２実施形態に係る部分ログＡ〜Ｈの全ての組み合わせについて算出した類似度の一覧を示す図
【符号の説明】
１…条件指定部
２…部分ログ生成部
４…主ログ生成部
５…正規化ログ生成部
６…ログ特徴値算出部
７…対象プログラム（のソースコード）
８…ログ類似度算出部
９…ログ選択部
１０…ログ表示部
１１…部分ログ指定部
１２…デバッグ作業者（ユーザ）
【図１】
0004630489.tif 000004
【図２】
0004630489.tif 000005
【図３】
0004630489.tif 000006
【図４】
0004630489.tif 000007
【図５】
0004630489.tif 000008
【図６】
0004630489.tif 000009
【図７】
0004630489.tif 000010
【図８】
0004630489.tif 000011
【図９】
0004630489.tif 000012
【図１０】
0004630489.tif 000013
【図１１】
0004630489.tif 000014
【図１２】
0004630489.tif 000015