(57)【要約】【課題】トレースログ取得時に実行されていたプログラムのソースコードの版数を判別可能とする。【解決手段】プログラム実行手段２ａは、プログラムを実行し、ログ取得命令の実行段階になると、そのログ取得命令に設定された変数の値を取得する。トレースログ生成手段２ｂは、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段２ａが取得した変数の値を含むトレースログを生成し、記憶装置２ｃに格納する。ソースコード取得手段３ａは、トレースログに基づいて、ファイルの識別情報と版数情報との組に対応するソースコードを取得する。文字列追加手段３ｂは、取得されたソースコードから、トレースログに含まれる変数の値に関連する文字列を抽出し、抽出した文字列をトレースログに追加し、文字列を追加したトレースログを記憶装置３ｃに格納する。【選択図】図１
2012190219.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得するプログラム実行手段と、
前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および前記プログラム実行手段が取得した変数の値を含むトレースログを生成し、記憶装置に格納するトレースログ生成手段と、
を有することを特徴とする情報処理装置。
【請求項２】
ログ取得命令には、ソースコード内において前記ログ取得命令が記述された行の行番号が設定されており、
前記トレースログ生成手段は、前記実行段階になったログ取得命令に含まれている行番号を含むトレースログを生成することを特徴とする請求項１記載の情報処理装置。
【請求項３】
プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数の値を含むトレースログに基づいて、該ファイルの識別情報と該版数情報との組に対応するソースコードを取得するソースコード取得手段と、
トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する文字列追加手段と、
を有することを特徴とする情報処理装置。
【請求項４】
トレースログに含まれるファイルの識別情報は、ソースコードが記述されたファイルに一意に対応付けられた符号であり、
前記ソースコード取得手段は、ソースコードが記述されたファイルのファイル名と、該ファイルに一意に対応付けられた符号との対応関係が登録された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報との組に対応するファイルからソースコードを取得する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
ファイルに一意に対応付けられた符号は、該ファイルのファイル名よりも少ないデータ量であることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記文字列追加手段は、トレースログに含まれる符号に対応するファイル名を、該トレースログに追加することを特徴とする請求項４または５のいずれかに記載の情報処理装置。
【請求項７】
トレースログには、ソースコード内においてログ取得命令が記述された行の行番号が含まれており、
前記文字列追加手段は、トレースログに基づいて取得されたソースコード内の、該トレースログに含まれる行番号で示される行に記述されているログ取得命令から、該トレースログに関連する文字列を抽出する、
ことを特徴とする請求項３乃至６のいずれかに記載の情報処理装置。
【請求項８】
第１の情報処理装置が、
プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、
ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得し、
前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および取得した変数の値を含むトレースログを生成し、
生成したトレースログを第１の記憶装置に格納し、
第２の情報処理装置が、
前記第１の記憶装置に格納されたトレースログに基づいて、該トレースログに含まれるファイルの識別情報と版数情報との組に対応するソースコードを取得し、
トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、
文字列を追加したトレースログを第２の記憶装置に格納する、
ことを特徴とするトレースログ取得方法。
【請求項９】
第３の情報処理装置が、プログラムのソースコードに含まれるログ取得命令に、該ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号を該ファイルの識別情報として設定すると共に、該ソースコードの版数情報を該ログ取得命令に設定し、
前記第３の情報処理装置が、ソースコードが記述されたファイルのファイル名、該ファイル名に対応する符号、および該ソースコードの版数情報を有する管理情報を、該ソースコードが記述されたファイルに関連付けて、第３の記憶装置に格納し、
前記第１の情報処理装置は、ファイル名に一意に対応付けられた符号が、ファイルの識別情報として設定されたログ取得命令を含むプログラムを実行し、
前記第２の情報処理装置は、前記第３の記憶装置に格納された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報とを含む管理情報に関連付けられたファイルから、ソースコードを取得する、
ことを特徴とする請求項８記載のトレースログ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トレースログを取得する情報処理装置、およびトレースログ取得方法に関する。
【背景技術】
【０００２】
ソフトウェアの開発時には、そのソフトウェアの不具合を見つけ出すデバッグ作業が行われる。デバッグ作業を効率的に行うには、処理の要所において、そのときの変数の内容などの処理状態に関する情報を、ログとして取得しておくことが有効である。また装置に実装されたソフトウェアの動作状況を確認する場合、処理中の変数の内容などの情報をログとして取得しておくことで、ソフトウェアの動作状況の解析が容易となる。このようなプログラム実行途中の状態に関する情報は、トレースログと呼ばれる。トレースログは、例えばコンピュータ上の処理内容・イベント・データ通信履歴などを発生日時と共に記録したものである。トレースログを用いることで、例えば、開発中のデバッグや異常発生時の原因特定などの解析作業が容易となる。なおトレースログは、多くの場合、データ量を削減するためにコード化される。
【０００３】
トレースログを取得する技術としては、例えば、実行過程を記録するためのログ出力命令をソースコードに挿入することで、ユーザが指定した注目箇所に関係する箇所についてのみ実行過程を記録する技術がある。この技術では、ログデータに識別子番号を含め、別の識別子データにおいて、識別子番号とファイル番号などの他の情報との対応関係を管理している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２０７２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来は、版数の異なる複数のソースコードそれぞれに基づく複数のプログラムの実行時に取得されたトレースログが混在すると、各トレースログがどの版数のソースコード内の命令に応じて取得されたのかが判別できなかった。その結果、トレースログを用いた動作解析を正確に行うのが困難となっていた。
【０００６】
１つの側面では、本発明は、トレースログ取得時に実行されていたプログラムのソースコードの版数を判別可能とする情報処理装置、およびトレースログ取得方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、プログラム実行手段とトレースログ生成手段とを有する情報処理装置が提供される。プログラム実行手段は、プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、ログ取得命令の実行段階になると、該実行段階になったログ取得命令に設定された変数の値を取得する。トレースログ生成手段は、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段が取得した変数の値を含むトレースログを生成し、記憶装置に格納する。
【０００８】
他の案では、ソースコード取得手段と文字列追加手段とを有する情報処理装置が提供される。ソースコード取得手段は、プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数の値を含むトレースログに基づいて、該ファイルの識別情報と該版数情報との組に対応するソースコードを取得する。文字列追加手段は、トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する。
【０００９】
別の案では、第１の情報処理装置と第２の情報処理装置とによるトレースログ取得方法が提供される。このトレースログ取得方法では、第１の情報処理装置が、プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行する。次に第１の情報処理装置が、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得する。次に第１の情報処理装置が、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段が取得した変数の値を含むトレースログを生成する。次に第１の情報処理装置が、生成したトレースログを第１の記憶装置に格納する。次に第２の情報処理装置が、第１の記憶装置に格納されたトレースログに基づいて、該トレースログに含まれるファイルの識別情報と版数情報との組に対応するソースコードを取得する。次に第２の情報処理装置が、トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加する。次に第２の情報処理装置が、文字列を追加したトレースログを第２の記憶装置に格納する。
【発明の効果】
【００１０】
トレースログ取得時に実行されていたプログラムのソースコードの版数の判別が可能となる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る装置の機能構成例を示す図である。
【図２】第１の実施の形態の処理の手順を示すフローチャートの一例である。
【図３】トレースログの可読化の一例を示す図である。
【図４】第２の実施の形態のシステム構成例を示す図である。
【図５】本実施の形態に用いる開発装置のハードウェアの一構成例を示す図である。
【図６】第２の実施の形態の各装置の機能を示すブロック図である。
【図７】ソースコード記憶部のデータ構造の一例を示す図である。
【図８】バージョン管理システム内の版数付ソースコード記憶部のデータ構造の一例を示す図である。
【図９】バージョン管理システムの版数管理情報記憶部のデータ構造の一例を示す図である。
【図１０】展開済ソースコード記憶部のデータ構造の一例を示す図である。
【図１１】プログラム実行処理の手順を示すフローチャートである。
【図１２】トレースログのデータ構造の一例を示す図である。
【図１３】可読化処理を示す図である。
【図１４】可読化処理の手順を示すフローチャートである。
【図１５】ソースコードの一例を示す図である。
【図１６】版数付ソースコードの一例を示す図である。
【図１７】版数管理情報の一例を示す図である。
【図１８】展開済ソースコードの一例を示す図である。
【図１９】実行コードから取得したトレースログの一例を示す図である。
【図２０】トレースログの可読化の一例を示す図である。
【図２１】第３の実施の形態の可読トレースログの一例を示す図である。
【図２２】第４の実施の形態の可読トレースログの一例を示す図である。
【図２３】第５の実施の形態のソースコードの例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る装置の機能構成例を示す図である。第１の実施の形態では、３つの情報処理装置１〜３が設けられている。情報処理装置１は、例えばソフトウェアの開発に使用する装置である。また情報処理装置２は、例えばソフトウェアの実行に使用する装置である。情報処理装置３は、例えばトレースログの解析に使用する装置である。
【００１３】
情報処理装置１は、版数管理手段１ａと記憶装置１ｂとを有する。
版数管理手段１ａは、プログラムのソースコードに含まれるログ取得命令に、該ソースコードが記述されたファイル１ｅ，１ｆのファイル名に一意に対応付けられた符号を該ファイルの識別情報として設定する。また版数管理手段１ａは、該ソースコードの版数情報を該ログ取得命令に設定する。さらに版数管理手段１ａは、ソースコードが記述されたファイルのファイル名、該ファイル名に対応する符号、および該ソースコードの版数情報を有する管理情報１ｃを、ソースコードが記述されたファイル１ｅ，１ｆに関連付けて、記憶装置１ｂに格納する。なおソースコードが記述されたファイル１ｅ，１ｆは、例えば版数管理手段１ａによって記憶装置１ｂに格納される。
【００１４】
記憶装置１ｂは、管理情報１ｃを記憶する。また記憶装置１ｂは、例えば、ソースコードが記述されたファイル１ｅ，１ｆを記憶する。
情報処理装置２は、プログラム実行手段２ａ、トレースログ生成手段２ｂ、および記憶装置２ｃを有する。
【００１５】
プログラム実行手段２ａは、プログラムのソースコードが記述されたファイルの識別情報、そのソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行する。そしてプログラム実行手段２ａは、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得する。
【００１６】
トレースログ生成手段２ｂは、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段２ｂが取得した変数の値を含むトレースログ２ｄを生成し、記憶装置２ｃに格納する。
【００１７】
記憶装置２ｃは、トレースログ２ｄを記憶する。
情報処理装置３は、ソースコード取得手段３ａ、文字列追加手段３ｂ、および記憶装置３ｃを有する。
【００１８】
ソースコード取得手段３ａは、トレースログ２ｄに基づいて、ファイルの識別情報と版数情報との組に対応するソースコードを取得する。例えばトレースログに含まれるファイルの識別情報は、ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号である。この場合、ソースコード取得手段３ａは、ソースコードが記述されたファイルのファイル名と、該ファイルのファイル名に一意に対応付けられた符号との対応関係が登録された管理情報１ｃに基づいて、トレースログに含まれ符号に対応するファイル名を判断する。そしてソースコード取得手段３ａは、ファイル名とトレースログに含まれる版数情報との組に対応するファイルからソースコードを取得する。
【００１９】
文字列追加手段３ｂは、トレースログに基づいて取得されたソースコードから、そのトレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する。例えば文字列追加手段３ｂは、ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号がトレースログに含まれている場合、その符号に対応するファイル名をトレースログに追加する。また文字列追加手段３ｂは、例えば、トレースログに含まれる変数の値に関連する文字列をソースコードから抽出し、トレースログに追加する。
【００２０】
なお、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また版数管理手段１ａは、情報処理装置１が有するＣＰＵ（Central Processing Unit）により実現することができる。また、記憶装置１ｂ、情報処理装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）により実現することができる。プログラム実行手段２ａおよびトレースログ生成手段２ｂは、情報処理装置２が有するＣＰＵにより実現することができる。また記憶装置２ｃ、情報処理装置２が有するＲＡＭやＨＤＤにより実現することができる。ソースコード取得手段３ａおよび文字列追加手段３ｂは、情報処理装置３が有するＣＰＵにより実現することができる。また記憶装置３ｃ、情報処理装置３が有するＲＡＭやＨＤＤにより実現することができる。
【００２１】
このような構成のシステムにより、プログラム実行にトレースログが取得され、そのトレースログの可読化が行われる。
図２は、第１の実施の形態の処理の手順を示すフローチャートの一例である。以下、図２に示す処理をステップ番号に沿って説明する。
【００２２】
［ステップＳ１］情報処理装置１の版数管理手段１ａは、ソースコード内のログ取得命令に対して、そのソースコードが記述されたファイルのファイル名に対応する符号を設定する。
【００２３】
［ステップＳ２］情報処理装置１の版数管理手段１ａは、ファイル名と符号との対応関係を示す管理情報１ｃを、記憶装置１ｂに格納する。
［ステップＳ３］情報処理装置２のプログラム実行手段２ａは、ファイル名に対応する符号が設定されたログ取得命令を含むプログラムを情報処理装置１から取得し、実行する。
【００２４】
［ステップＳ４］情報処理装置２のプログラム実行手段２ａは、ログ取得命令の実行段階になると、その時点でのログ取得命令に含まれる変数の値を取得する。
［ステップＳ５］トレースログ生成手段２ｂは、実行段階になったログ取得命令に設定された符号と版数情報、およびプログラム実行手段２ａが取得した変数の値を含むトレースログ２ｄを生成する。そしてトレースログ生成手段２ｂは、生成したトレースログ２ｄを記憶装置２ｃに格納する。
【００２５】
［ステップＳ６］情報処理装置３のソースコード取得手段３ａは、記憶装置２ｃに格納されたトレースログ２ｄに基づいて、ファイルの識別情報と版数情報との組に対応するソースコードを取得する。例えば情報処理装置３は、情報処理装置１の記憶装置１ｂに格納されている管理情報１ｃを参照し、トレースログ２ｄ内の符号に対応するファイル名を判断する。そしてソースコード取得手段３ａは、符号に対応するファイル名の、トレースログ２ｄに含まれる版数情報に対応する版数のファイルから、ソースコードを取得する。
【００２６】
［ステップＳ７］情報処理装置３の文字列追加手段３ｂは、トレースログ２ｄに関連する文字列をステップＳ６で取得したソースコードから抽出し、トレースログ２ｄに追加する。例えば文字列追加手段３ｂは、トレースログ２ｄ内の変数の値に関連する文字列をソースコードから抽出し、トレースログ２ｄに追加する。また文字列追加手段３ｂは、トレースログ２ｄに含まれる符号に対応するファイル名を、トレースログ２ｄに追加する。この際、文字列追加手段３ｂは、トレースログ２ｄ内の符号を、トレースログ２ｄから削除してもよい。その後、文字列追加手段３ｂは、文字列を追加した可読トレースログ３ｄを記憶装置３ｃに格納する。
【００２７】
このようにして、トレースログの可読化が行われ、人が理解可能な記述の可読トレースログ３ｄが取得できる。
図３は、トレースログの可読化の一例を示す図である。図３の例では、ファイル名が「file.c」で版数が異なる２つのファイル１ｅ，１ｆが設けられている。ファイル１ｅ，１ｆそれぞれには、ソースコードが記述されている。例えばファイル１ｅのソースコードの６行目と９行目には、ログ取得命令が記述されている。また、ファイル１ｅは、版数管理手段１ａにより、ログ取得命令のパラメータとして、ファイル１ｅを一意に示す符号「ｃ１」が設定されている。版数管理手段１ａは、ファイル１ｅに設定した符号「ｃ１」と、ファイル１ｅのファイル名「file.c」と関連付けた管理情報１ｃを生成する。
【００２８】
その後、プログラム実行手段２ａにより、例えばファイル１ｅ内のソースコードに示されたプログラムが実行される。なおプログラム実行手段２ａは、例えばソースコードをコンパイルして実行コードに翻訳された後のプログラムを実行する。なおプログラム実行手段２ａがインタプリタであれば、ソースコードを逐次解釈しながら実行することもできる。
【００２９】
プログラム実行手段２ａによるプログラムの実行が、ログ取得命令の実行段階に達すると、ログ取得命令に示される変数の値が、プログラム実行手段２ａによって取得される。そして、トレースログ生成手段２ｂにより、トレースログ２ｄが生成される。
【００３０】
図３の例では、トレースログ２ｄには、符号、行番号、版数情報、変数の値が含まれる。符号は、ファイル１ｅを一意に示す符号である。行番号は、ソースコード内でのログ取得命令が記述された行の行番号である。版数情報は、ファイル１ｅの版数を示す情報である。変数の値は、ログ取得命令の実行段階における、そのログ取得命令で示された変数の値である。
【００３１】
ここで、トレースログ２ｄの内容だけでは、変数の値が、どのような意味を持つ変数の値なのかが不明である。またトレースログの符号「ｃ１」を人が見ても、どのファイルを示しているのか理解できない。
【００３２】
そこで、ソースコード取得手段３ａにより、トレースログ２ｄに示される符号「ｃ１」と版数情報「ｖ１１」に対応するファイル１ｅからソースコードが取得される。そして、文字列追加手段３ｂにより、取得したソースコードから文字列が抽出される。例えば、文字列追加手段３ｂにより、トレースログ２ｄ内の各レコードの行番号に対応する行のログ取得命令から、変数の値の意味を説明する文字列「関数Ａの処理を開始します。  パラメータ：」、「エラーを検出しました。エラー番号：」が抽出される。そして、トレースログ２ｄの内容に、抽出した文字列を追加した可読トレースログ３ｄが生成される。また図３の例では、文字列追加手段３ｄにより、トレースログ２ｄ内の符号「ｃ１」は、その符号に対応するファイルのファイル名「file.c」に置換されている。
【００３３】
このように、第１の実施の形態によれば、トレースログ２ｄに版数情報が含まれているため、各トレースログの内容が、どの版数のソースコードに基づく命令で取得されたのかが明確となる。その結果、トレースログに対応する版数のソースコードの情報に基づいて、各トレースログに対して、人が理解可能な文字列を追加し、可読トレースログ３ｄを得ることができる。
【００３４】
また可読トレースログ３ｄでは、ソースコードが記述されたファイルのファイル名が示されている。そのため、プログラムを変更する場合の編集対象のファイルを、容易に把握することができる。その結果、トレースログの作成・実行・解析処理および版数毎の管理作業を削減することができる。
【００３５】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、ソースコードから得られた実行コードを、ネットワーク経由で実行装置に転送し、実行装置でトレースログを取得するものである。
【００３６】
図４は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態では、ネットワーク１０を介して、開発装置１００、実行装置２００、および解析装置３００が接続されている。
【００３７】
開発装置１００は、ソフトウェアの作成に使用されるコンピュータである。開発装置１００は、作成したソフトウェアに、そのソフトウェア実行時のトレースログを取得するための関数呼び出し記述（ログ取得命令）を組み込むことができる。その関数呼び出し記述には、引数として版数情報を含めることができる。
【００３８】
実行装置２００は、開発装置１００で作成されたソフトウェアを実行するコンピュータである。実行装置２００は、ソフトウェアのプログラムに組み込まれた関数呼び出し記述に基づいて、トレースログ取得の関数を実行することができる。トレースログ取得の関数の実行によりトレースログが取得される。
【００３９】
解析装置３００は、トレースログを解析するコンピュータである。解析装置３００は、実行装置２００からトレースログを取得し、トレースログに含まれるコード化された情報を、人間が解読可能な情報（例えば文字列）に変換することができる。
【００４０】
図５は、本実施の形態に用いる開発装置のハードウェアの一構成例を示す図である。開発装置１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００４１】
ＲＡＭ１０２は、開発装置１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００４２】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００４３】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、開発装置１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４４】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４５】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４６】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４７】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４８】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお図５には、開発装置１００のハードウェア構成例を示したが、実行装置２００と解析装置３００も同様のハードウェア構成で実現することができる。また第１の実施の形態に示した各情報処理装置も、図５に示した開発装置１００と同様のハードウェアにより実現することができる。
【００４９】
図６は、第２の実施の形態の各装置の機能を示すブロック図である。開発装置１００は、ソースコード編集部１１１、ソースコード記憶部１１２、バージョン管理システム登録部１２１、版数付ソースコード記憶部１２２、マクロ展開部１３１、展開済ソースコード記憶部１３２、実行プログラム作成部１４１、および実行コード記憶部１４２、実行コード出力部１５１、およびバージョン管理システム１６０を有する。
【００５０】
ソースコード編集部１１１は、プログラマからの操作入力に応答して、プログラムのソースコードを編集する。例えばソースコード編集部１１１は、テキストエディタと呼ばれるテキストファイルの編集ソフトウェアである。例えばプログラマは、ソースコード中に、トレースログを取得させる関数の呼び出し記述（ログ取得命令）を含める。ログ取得命令には、例えばソースコード内のログ取得命令が記述された行の行番号に置換するマクロが、パラメータとして含まれる。マクロとは、プログラミング言語であらかじめ定義された規則にしたがって置換・展開されるものである。またログ取得命令には、ソースコードが記述されたファイルのファイル名を一意に示す符号（ファイルコード）への置換を示す文字列が、パラメータとして含まれる。さらにログ取得命令には、ソースコードの版数情報への置換を示す文字列が、パラ−メータとして含まれる。なおファイルコードは、例えばファイル名の文字列のデータ量よりも少ないデータ量の情報である。
【００５１】
ソースコード記憶部１１２は、ソースコード編集部１１１で作成されたソースコードを記憶する。例えばＲＡＭ１０２などの主記憶装置またはＨＤＤ１０３などの二次記憶装置の記憶領域の一部が、ソースコード記憶部１１２として使用される。
【００５２】
バージョン管理システム登録部１２１は、ソースコード記憶部１１２に格納されているソースコードをバージョン管理システム１６０に登録する。この際、バージョン管理システム登録部１２１は、ファイルコードへの置換を示す文字列を、ソースコードが記述されたファイルのファイル名に対応するファイルコードに置換する。またバージョン管理システム登録部１２１は、版数情報への置換を示す文字列を、ソースコードの版数情報に置換する。例えばバージョン管理システム登録部１２１は、バージョン管理システム１６０が保持する版数管理情報から、同じファイル名のソースコードの最新の版数情報を取得し、その版数情報に１を加算した値を、新たに登録するソースコードの版数情報とする。なおバージョン管理システム登録部１２１は、バージョン管理システム１６０にソースコードを登録する場合、旧版のソースコードが既に登録されていれば、例えば旧版のソースコードとの差分のみを登録する。
【００５３】
またバージョン管理システム登録部１２１は、ファイルコードや版数情報の置換処理を施したソースコード（版数付ソースコード）を、版数付ソースコード記憶部１２２に格納する。
【００５４】
版数付ソースコード記憶部１２２は、版数付ソースコードを記憶する。例えばＲＡＭ１０２などの主記憶装置またはＨＤＤ１０３などの二次記憶装置の記憶領域の一部が、版数付ソースコード記憶部１２２として使用される。
【００５５】
マクロ展開部１３１は、版数付ソースコード記憶部１２２内の版数付ソースコードに含まれるマクロを展開する。例えばマクロ展開部１３１は、ログ取得命令に含まれる行番号に置換するマクロを、ログ取得命令の行番号に置換する。このようなマクロの置換処理は、マクロの展開と呼ばれる。マクロ展開部１３１は、マクロ展開後の版数付ソースコード（展開済ソースコード）を、展開済ソースコード記憶部１３２に格納する。
【００５６】
展開済ソースコード記憶部１３２は、展開済ソースコードを記憶する。例えばＲＡＭ１０２などの主記憶装置またはＨＤＤ１０３などの二次記憶装置の記憶領域の一部が、展開済ソースコード記憶部１３２として使用される。
【００５７】
実行プログラム作成部１４１は、ソースコードのコンパイルやリンクを行い、機械語で記述された実行コードを作成する。実行プログラム作成部１４１は、作成した実行コードを、実行コード記憶部１４２に格納する。
【００５８】
実行コード記憶部１４２は、実行プログラム作成部１４１で作成された実行コードを記憶する。例えばＲＡＭ１０２などの主記憶装置またはＨＤＤ１０３などの二次記憶装置の記憶領域の一部が、実行コード記憶部１４２として使用される。
【００５９】
実行コード出力部１５１は、実行コード記憶部１４２に格納された実行コードを、実行装置２００に出力する。例えば実行コード出力部１５１は、ネットワーク１０を介した実行装置２００からの実行コード取得要求に応答し、実行コードを実行装置２００にネットワークを介して送信する。
【００６０】
バージョン管理システム１６０は、作成されたプログラムの版数を管理する。例えば、バージョン管理システム１６０は、版数管理情報記憶部１６１と版数付ソースコード記憶部１６２とを有する。
【００６１】
版数管理情報記憶部１６１は、版数管理情報を記憶する。版数管理情報は、ソースコードが記述されたファイルのファイル名、ファイルコード、ファイル名、およびそのソースコードの版数の対応関係を示す情報である。例えばＲＡＭ１０２などの主記憶装置またはＨＤＤ１０３などの二次記憶装置の記憶領域の一部が、版数管理情報記憶部１６１として使用される。
【００６２】
版数付ソースコード記憶部１６２は、版数付ソースコードを記憶する。なお、版数付ソースコード記憶部１６２に格納される版数付ソースコードは、例えば旧版との差分情報である。
【００６３】
またバージョン管理システム１６０は、版数管理情報や版数付ソースコードの内容を、解析装置３００に送信することができる。例えばバージョン管理システム１６０は、解析装置３００の要求に応答し、版数管理情報の内容や、版数付ソースコードに含まれるログ取得命令の内容を、ネットワーク１０経由で解析装置３００に送信する。
【００６４】
実行装置２００は、実行コード取得部２１１、実行コード記憶部２１２、プログラム実行部２２１、トレースログ生成部２２２、トレースログ記憶部２３１、およびトレースログ出力部２４１を有する。
【００６５】
実行コード取得部２１１は、開発装置１００からプログラムの実行コードを取得する。例えば実行コード取得部２１１は、実行装置２００の使用者からの入力に応じて、開発装置１００に対して実行コードの取得要求を、ネットワーク１０を介して送信する。そして実行コード取得部２１１は、取得要求に対して開発装置１００から応答された実行コードを取得する。実行コード取得部２１１は、取得した実行コードを実行コード記憶部２１２に格納する。
【００６６】
実行コード記憶部２１２は、実行コードを記憶する。例えば実行装置２００内のＲＡＭなどの主記憶装置またはＨＤＤなどの二次記憶装置の記憶領域の一部が、実行コード記憶部２１２として使用される。
【００６７】
プログラム実行部２２１は、実行コード記憶部２１２に格納されている実行コードで表されたプログラムを実行する。またプログラム実行部２２１は、実行コードの実行時に、実行対象がログ取得命令となった場合、トレースログ生成部２２２を起動し、トレースログ生成部２２２に、ログ取得命令のパラ−メータを渡す。その際、プログラム実行部２２１は、例えばログ取得命令のパラメータが変数であれば、ログ取得命令実行時点でのその変数の値をパラメータとして、トレースログ生成部２２２に渡す。
【００６８】
トレースログ生成部２２２は、ログ取得命令に応じて呼び出されるログトレース関数の処理を実行する。例えばトレースログ生成部２２２は、ログトレース関数に従ってトレースログを生成し、生成したトレースログをトレースログ記憶部２３１に格納する。
【００６９】
トレースログ記憶部２３１は、トレースログを記憶する。例えば実行装置２００のＲＡＭなどの主記憶装置またはＨＤＤなどの二次記憶装置の記憶領域の一部が、トレースログ記憶部２３１として使用される。
【００７０】
トレースログ出力部２４１は、トレースログ記憶部２３１に格納されているトレースログを出力する。例えばトレースログ出力部２４１は、解析装置３００からの要求に応じて、ネットワーク１０を介してトレースログを解析装置３００に送信する。
【００７１】
解析装置３００は、トレースログ取得部３１１、トレースログ記憶部３１２、可読化部３２１、および可読トレースログ記憶部３２２を有する。
トレースログ取得部３１１は、実行装置２００からトレースログを取得する。例えばトレースログ取得部３１１は、解析担当者からの入力に応じて、実行装置２００に対してトレースログの取得要求をネットワーク１０経由で送信する。そしてトレースログ取得部３１１は、取得要求の応答として実行装置２００から送信されたトレースログを取得する。トレースログ取得部３１１は、取得したトレースログをトレースログ記憶部３１２に格納する。
【００７２】
トレースログ記憶部３１２は、トレースログを記憶する。例えば解析装置３００内のＲＡＭなどの主記憶装置またはＨＤＤなどの二次記憶装置の記憶領域の一部が、トレースログ記憶部３１２として使用される。
【００７３】
可読化部３２１は、トレースログ記憶部３１２に格納されたトレースログ内のコード化された情報を、人間が理解可能な情報に可読化し、可読トレースログを生成する。例えば、可読化部３２１は、解析担当者からの入力に応じて、開発装置１００からトレースログに示されるコード化された情報に対応する、人間に理解可能な文字列を取得する。例えば可読化部３２１は、ファイルコードに対応するファイル名の文字列を、開発装置１００から取得する。また可読化部３２１は、トレースログの行番号に基づいて、版数付ソースコード内の該当する行に記載されている固定部文字列を取得する。そして可読化部３２１は、開発装置１００から取得した情報に基づいて、トレースログの可読化を行う。可読化部３２１は、生成した可読トレースログを、可読トレースログ記憶部３２２に格納する。
【００７４】
可読トレースログ記憶部３２２は、可読トレースログを記憶する。例えば解析装置３００内のＲＡＭなどの主記憶装置またはＨＤＤなどの二次記憶装置の記憶領域の一部が、可読トレースログ記憶部３２２として使用される。
【００７５】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
なおバージョン管理システム登録部１２１とバージョン管理システム１６０とを合わせた機能は、図１に示した版数管理手段１ａと記憶装置１ｂとを合わせた機能の一例である。プログラム実行部２２１は、図１に示したプログラム実行手段２ａの一例である。トレースログ生成部２２２は、トレースログ生成手段２ｂの一例である。トレースログ記憶部２３１は、図１に示した記憶装置２ｃの一例である。可読化部３２１は、図１に示したソースコード取得手段３ａと文字列追加手段３ｂとを合わせた機能の一例である。可読トレースログ記憶部３２２は、図１に示した記憶装置３ｃの一例である。
【００７６】
このようなシステムにおいて、まずプログラマが開発装置１００のソースコード編集部１１１を用いてプログラムのソースコードを編集する。プログラムの編集が完了すると、プログラマは、ソースコード編集部１１１にファイル名を指定した保存要求を入力する。するとソースコード編集部１１１により、指定されたファイル名を付与したファイルが作成される。そのファイルには、作成されたソースコードが含まれている。そしてソースコード編集部１１１により、作成されたファイルがソースコード記憶部１１２に格納される。
【００７７】
図７は、ソースコード記憶部のデータ構造の一例を示す図である。ソースコード記憶部１１２には、複数のソースコード１１２ａ，１１２ｂが、ファイル形式で格納される。図７の例では、ソースコード１１２ａが記述されたファイルのファイル名は「ｎ１」である。またソースコード１１２ｂが記述されたファイルのファイル名は「ｎ２」である。
【００７８】
なお図７の例では、ソースコード１１２ａ，１１２ｂに記述された命令文のうち、ログ取得命令のみを示し、その他の命令文は省略している。例えばログ取得命令は、「ｆ（）」という名前の関数（ログトレース関数）の呼び出し命令である。このログトレース関数の呼び出し命令には、６つのパラメータを設定することができる。パラメータは、左から順に、第１パラメータ、第２パラメータ、第３パラメータ、第４パラメータ、第５パラメータ、第６パラメータである。各パラメータの意味は以下の通りである。
・第１パラメータ：  ファイルの一意なコード（ファイルコード）。
「$id$」は、ファイルコードへの変換を示す文字列である。「$id$」の文字列は、バージョン管理システム登録部１２１によってファイルコードに置換される。
・第２パラメータ：  行番号。
・第３パラメータ：  ファイルの版数情報。
「$Rev$」は、ファイルの版数情報への変換を示す文字列である。「$Rev$」の文字列は、バージョン管理システム登録部１２１によって、ファイルの版数情報に置換される。
・第４パラメータ：  トレースログの固定部文字列。
・第５パラメータ：  トレースログの変数部の出力の書式付き文字列（変数部文字列）。
「%d」は、第６パラメータの値を１０進数で出力することを示す。
・第６パラメータ：  第５パラメータに対応する変数。
【００７９】
このようなログ取得命令を含むソースコードをプログラマが作成することにより、そのソースコードから生成した実行コードの実行時に、トレースログを取得することができる。
【００８０】
なお組込み装置のような記憶媒体が小容量の機器が、実行装置２００となる場合もある。そこで第２の実施の形態では、より多くの情報を残すために、一つのトレースログあたりの容量を小さくする工夫がなされている。例えば以下の二つの手段によって、トレースログのデータ量が削減されている。
・各トレースログの文字列をコード化する。
・ログの内容を「固定部」と「変数部」に分離し、変数部のみを実行環境上に保存する。
【００８１】
トレースログの文字列をコード化とは、例えばログ取得命令の第１のパラメータに、トレースログにファイル名ではなく、ファイル名に対応するコードを設定する処理である。またログの内容を「固定部」と「変数部」に分離し、変数部のみを実行環境上に保存する処理とは、ログ取得命令の第４パラメータを、トレースログへの保存内容から除外する処理である。
【００８２】
ソースコード１１２ａ，１１２ｂをソースコード記憶部１１２に格納後、プログラマは、開発装置１００に対して、ソースコード１１２ａ，１１２ｂのバージョン管理システム１６０への登録を指示する入力を行う。するとバージョン管理システム登録部１２１は、ソースコード記憶部１１２内のソースコード１１２ａ，１１２ｂのログ取得命令第３のパラメータを版数情報に置換し、バージョン管理システム１６０に登録する。バージョン管理システム１６０に登録された版数付ソースコードは、版数付ソースコード記憶部１６２に格納される。
【００８３】
図８は、バージョン管理システム内の版数付ソースコード記憶部のデータ構造の一例を示す図である。版数付ソースコード記憶部１６２には、ソースコード記憶部１１２に格納された複数のソースコード１１２ａ，１１２ｂそれぞれに対応する版数付ソースコード１６２ａ，１６２ｂが格納されている。版数付ソースコード１６２ａ，１６２ｂは、ログ取得命令の第１パラメータと第３パラメータとが、ソースコード１１２ａ，１１２ｂと異なっている。
【００８４】
版数付ソースコード１６２ａ，１６２ｂでは、ログ取得命令の第１パラメータが、版数付ソースコード１６２ａ，１６２ｂを一意に示すファイルコードに変換されている。またログ取得命令の第３パラメータが、版数付ソースコード１６２ａ，１６２ｂの端数を示す文字列に変換されている。
【００８５】
なお図８には、バージョン管理システム１６０内の版数付ソースコード記憶部１６２のデータ構造の一例を示したが、版数付ソースコード記憶部１２２のデータ構造も図８に示したデータ構造と同様である。またバージョン管理システム１６０内の版数付ソースコード記憶部１６２については、ソースコードのファイル名が同じ過去の版数の版数付ソースコードがある場合には、その版数付ソースコードとの差分が版数付ソースコード記憶部１６２に格納される。
【００８６】
バージョン管理システム１６０は、版数付ソースコード記憶部１６２に格納された版数付ソースコード１６２ａ，１６２ｂを、版数管理情報記憶部１６１によって管理している。
【００８７】
図９は、バージョン管理システムの版数管理情報記憶部のデータ構造の一例を示す図である。版数管理情報記憶部１６１には、版数管理情報１６１ａが格納されている。
版数管理情報１６１ａは、ファイルコード、ファイル名、および版数履歴の欄が設けられている。ファイルコードの欄には、ファイル名を一意に示すファイルコードが設定される。ファイル名の欄には、ファイルコードに対応する、版数付ソースコードが記述されたファイルのファイル名が設定される。版数履歴の欄には、ファイルコードで示されるファイル名で生成されたファイル内の版数付ソースコードの版数情報が設定される。版数履歴の欄に設定された版数情報それぞれには、ファイル名と版数とが一致する版数付ソースコードが関連付けられている。
【００８８】
例えば図９の例では、ファイル名「ｎ１」に対してファイルコード「ｃ１」が対応付けられている。ファイル名「ｎ１」のファイル名で作成された版数付ソースコードには、「ｖ１１」、「ｖ１２」、「ｖ１３」の３つの版数情報が存在する。版数情報は、「ｖ」の後に続く数値が大きいほど新しい版数を示している。ファイル名と版数情報との組により、１つの版数付ソースコードが一意に関連付けられる。
【００８９】
バージョン管理システム１６０への版数付ソースコードの登録、および版数付ソースコード記憶部１２２への版数付ソースコードの格納が完了すると、プログラマは、例えば開発装置１００に対してマクロ展開を指示する入力を行う。すると、マクロ展開部１３１は、版数付ソースコード記憶部１２２に格納されている版数付ソースコードのマクロ展開処理を行う。マクロ展開処理では、例えばログ取得命令内の第２パラメータが、そのログ取得命令が記述された行の行番号に置換される。そして、マクロ展開処理が施された展開済ソースコードが、展開済ソースコード記憶部１３２に格納される。
【００９０】
図１０は、展開済ソースコード記憶部のデータ構造の一例を示す図である。展開済ソースコード記憶部１３２には、版数付ソースコード記憶部１２２に格納された版数付ソースコード（図９に示す版数付ソースコード１６２ａ，１６２ｂと同じ内容）それぞれに対応する展開済ソースコード１３２ａ，１３２ｂが格納されている。展開済ソースコード１３２ａ，１３２ｂは、ログ取得命令の第２パラメータが、版数付ソースコード１６２ａ，１６２ｂと異なっている。
【００９１】
展開済ソースコード１３２ａ，１３２ｂは、ログ取得命令の第２パラメータが行番号に展開されている。例えば展開済ソースコード１３２ａの１行目に記載されているログ取得命令は、第２パラメータが、行番号を示す数値「１」に変換されている。
【００９２】
このような展開済ソースコード１３２ａ，１３２ｂが実行プログラム作成部１４１によりコンパイルされ、展開済ソースコード１３２ａ，１３２ｂそれぞれに対応するオブジェクトファイルが生成される。そして実行プログラム作成部１４１により、複数のオブジェクトファイルがリンクされ、１つの実行コードが生成される。そして生成された実行コードが、実行コード記憶部１４２に格納される。
【００９３】
実行コード記憶部１４２に格納された実行コードは、実行コード出力部１５１により実行装置２００に送信される。
開発装置１００から送信された実行コードは、実行装置２００の実行コード取得部２１１で受信される。実行コード取得部２１１は、受信した実行コードを実行コード記憶部２１２に格納する。その後、プログラム実行部２２１が、例えば実行装置２００を使用するユーザからの入力に怖じて、実行コードによって表されたプログラムを実行する。
【００９４】
図１１は、プログラム実行処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］プログラム実行部２２１は、実行コードに記述された命令を上位から順に読み込む。
【００９５】
［ステップＳ１２］プログラム実行部２２１は、読み込んだ命令が、ログ取得命令か否かを判断する。プログラム実行部２２１は、読み込んだのがログ取得命令であれば処理をステップＳ１４に進める。またプログラム実行部２２１は、読み込んだのがログ取得命令以外の命令であれば、処理をステップＳ１３に進める。
【００９６】
［ステップＳ１３］プログラム実行部２２１は、読み込んだ命令を実行し、処理をステップＳ１１に進める。
［ステップＳ１４］プログラム実行部２２１は、読み込んだ命令がログ取得命令の場合、ログ取得命令の第６パラメータに示される変数の現在の値を取得し、変数部文字列「Ｓ１」の文字列"%d"に代えて、取得した変数の値を設定する。この際、トレースログ生成部２２２は、変数部文字列"%d"に示される書式（この例では１０進数）で変数の値を設定する。
【００９７】
［ステップＳ１５］プログラム実行部２２１は、ログトレース関数の呼び出しを行う。ログトレース関数の呼び出しにより、トレースログ生成部２２２が起動される。このとき、プログラム実行部２２１は、ログ取得命令に設定されているパラメータを、トレースログ生成部２２２に引き渡す。
【００９８】
［ステップＳ１６］トレースログ生成部２２２は、ログ取得命令の第１、第２、第３、第５パラメータを取得する。例えばトレースログ生成部２２２は、ログ取得命令で示された第１パラメータのファイルコードを取得する。以下、取得したファイルコードを「Ｃ１」とする。またトレースログ生成部２２２は、ログ取得命令で示された第２パラメータの行番号を取得する。以下、取得した行番号を「Ｌ１」とする。またトレースログ生成部２２２は、ログ取得命令で示された第３パラメータの版数情報を取得する。以下、取得した版数情報を「Ｖ１」とする。またトレースログ生成部２２２は、ログ取得命令で示された第５パラメータの変数部文字列を取得する。以下、取得した変数部文字列を「Ｓ１」とする。
【００９９】
［ステップＳ１７］トレースログ生成部２２２は、ファイルコード「Ｃ１」、版数情報「Ｌ１」、行番号「Ｖ１」、変数部文字列「Ｓ１」を１つのレコード「Ｒ１」として連結する。
【０１００】
［ステップＳ１８］トレースログ生成部２２２は、レコード「Ｒ１」をトレースログ記憶部２３１に追加保存する。
［ステップＳ１９］プログラム実行部２２１は、実行コードで示されるプログラムが終了したか否かを判断する。プログラム実行部２２１は、プログラムが終了した場合、プログラム実行処理を終了する。プログラム実行部２２１は、プログラムが終了していなければ、処理をステップＳ１１に進める。
【０１０１】
このようにして、実行コードで表されたプログラムの実行に伴って、トレースログが採取される。
図１２は、トレースログのデータ構造の一例を示す図である。なお図１２では、実行コード２１２ａを実行した場合のトレースログ２３１ａが示されている。図１２に示す実行コード２１２ａには、展開済ソースコード１３２ａ，１３２ｂ内の命令文に基づいて生成された複数の命令が、実行装置２００のＣＰＵが解釈可能な機械語で記述されている。
【０１０２】
最初の命令「命令＃１」は、ファイル名「ｎ１」の展開済ソースコードの１行目のログ取得命令に対応する機械語の命令である。命令「命令＃１」の実行により、変数「ｖａ１」の値「１１」が取得されている。
【０１０３】
２つめの命令「命令＃２」は、ファイル名「ｎ２」の展開済ソースコードの１行目のログ取得命令に対応する機械語の命令である。命令「命令＃２」の実行により、変数「ｖａ３」の値「３３」が取得されている。
【０１０４】
３つめの命令「命令＃３」は、ファイル名「ｎ２」の展開済ソースコードの２行目のログ取得命令に対応する機械語の命令である。命令「命令＃３」の実行により、変数「ｖａ４」の値「４４」が取得されている。
【０１０５】
４つめの命令「命令＃４」は、ファイル名「ｎ１」の展開済ソースコードの２行目のログ取得命令に対応する機械語の命令である。命令「命令＃４」の実行により、変数「ｖａ２」の値「２２」が取得されている。
【０１０６】
このような実行コード２１２ａが実行されることで、トレースログ記憶部２３１にトレースログ２３１ａが格納される。トレースログ２３１ａは、ファイルコード、行番号、版数情報、変換部文字列などの欄が設けられている。
【０１０７】
ファイルコードの欄には、ログ取得命令の第１パラメータで示されたファイルコードが設定される。行番号の欄には、ログ取得命令の第２パラメータで示された行番号が設定される。版数情報の欄には、ログ取得命令の第３パラメータで示された版数情報が設定される。変数部文字列の欄には、ログ取得命令の実行により取得された変数の値が設定される。
【０１０８】
このように、トレースログ２３１ａに版数情報を含めることで、トレースログ２３１ａ内に各レコードを取得時に実行されていたプログラムのソースコードの版数が判別可能となる。その結果、トレースログ２３１ａに基づくプログラムの動作状況の解析の容易化が可能である。例えば、トレースログ２３１ａに対して、ソースコードに基づいて文字列を追加し、人が容易に理解できるようにすることで、解析作業者による動作状況の把握が容易となる。
【０１０９】
トレースログ記憶部２３１の解析は、例えば解析装置３００で行われる。その場合、トレースログ記憶部２３１に格納されたトレースログ２３１ａが、トレースログ出力部２４１により解析装置３００に送信される。解析装置３００では、トレースログ取得部３１１が、実行装置２００から送られたトレースログ２３１ａを取得する。トレースログ取得部３１１が取得したトレースログ２３１ａは、トレースログ記憶部３１２に格納される。
【０１１０】
その後、可読化部３２１によって、トレースログ２３１ａの可読化処理が行われる。
図１３は、可読化処理を示す図である。可読化部３２１は、トレースログ２３１ａの可読化に際し、版数管理情報１６１ａと版数付ソースコード１６２ａ，１６２ｂを、開発装置１００から取得する。
【０１１１】
可読化部３２１は、トレースログ２３１ａから各レコードのファイルコードと版数情報との組を抽出する。そして可読化部３２１は、トレースログ２３１ａから抽出したファイルコードに対応するファイル名を、版数管理情報１６１ａから取得する。さらに可読化部３２１は、取得したファイル名の版数付ソースコードのうち、トレースログ２３１ａから抽出したファイルコードに対応する版数情報で示された版数の版数付ソースコードを参照する。そして可読化部３２１は、該当する版数付ソースコードから固定部文字列を取得する。
【０１１２】
可読化部３２１は、トレースログ２３１ａ内のレコードに含まれるファイルコードを、版数管理情報１６１ａから取得したファイル名に置換する。また可読化部３２１は、トレースログ２３１ａ内のレコードに、版数付ソースコードから取得した固定部文字列を追加する。そして可読化部３２１は、変更を加えた後のレコードを、可読トレースログ記憶部３２２に格納する。その結果、可読トレースログ記憶部３２２には、人間が理解可能な記述による可読トレースログ３２２ａが格納される。
【０１１３】
図１３の例では、可読トレースログ３２２ａには、ファイル名、行番号、固定部文字列、および変数部文字列を含むレコードが登録されている。例えば可読トレースログ３２２ａの最初のレコード「ｎ１：１：ｓ１  １１」は、ファイル名「ｎ１」、行番号「１」、固定部文字列「ｓ１」、変数部文字列「１１」という情報を表している。
【０１１４】
次に可読化処理の手順について、詳細に説明する。
図１４は、可読化処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１１５】
［ステップＳ２１］可読化部３２１は、トレースログ記憶部３１２の先頭のレコード格納領域を処理対象の位置とする。
［ステップＳ２２］可読化部３２１は、処理対象の位置にレコードが登録されているか否かを判断する。可読化部３２１は、処理対象の位置にレコードが登録されていれば、処理をステップＳ２３に進める。また可読化部３２１は、処理対象の位置にレコードが登録されていなければ、可読化処理を終了する。
【０１１６】
［ステップＳ２３］可読化部３２１は、処理対象の位置に登録されているレコードを抽出する。抽出したレコードを「Ｒ１」とする。
［ステップＳ２４］可読化部３２１は、レコード「Ｒ１」からファイルコード「Ｃ１」を抽出する。また可読化部３２１は、レコード「Ｒ１」から版数情報「Ｖ１」を抽出する。また可読化部３２１は、レコード「Ｒ１」から行番号「Ｌ１」を抽出する。さらに可読化部３２１は、レコード「Ｒ１」から変数部文字列「Ｓ１」を抽出する。
【０１１７】
［ステップＳ２５］可読化部３２１は、ファイルコード「Ｃ１」に対応するファイル名を取得する。以下、取得したファイル名を「Ｎ１」とする。例えば可読化部３２１は、ファイルコード「Ｃ１」を指定して、開発装置１００のバージョン管理システム１６０に対してファイル名の取得要求を送信する。するとバージョン管理システム１６０は、版数管理情報１６１ａ（図９参照）から、ファイルコード「Ｃ１」と一致するファイルコードを検索し、該当するファイルコードに対応するファイル名「Ｎ１」を取得する。そしてバージョン管理システム１６０は、取得したファイル名「Ｎ１」を解析装置３００に送信する。可読化部３２１は、開発装置１００から送られたファイル名「Ｎ１」を取得する。
【０１１８】
［ステップＳ２６］可読化部３２１は、ファイル名「Ｎ１」と版数情報「Ｖ１」との組に対応する版数付ソースコードを取得する。以下、取得した版数付ソースコードを「ＳＲ１」とする。例えば可読化部３２１は、ファイル名「Ｎ１」と版数情報「Ｖ１」との組を指定して、開発装置１００のバージョン管理システム１６０に対して版数付ソースコードの取得要求を送信する。するとバージョン管理システム１６０は、版数付ソースコード記憶部１６２から、指定されたファイル名「Ｎ１」と版数情報「Ｖ１」との組に対応する版数付ソースコード「ＳＲ１」を取得する。そしてバージョン管理システム１６０は、取得した版数付ソースコード「ＳＲ１」を解析装置３００に送信する。可読化部３２１は、開発装置１００から送られた版数付ソースコード「ＳＲ１」を取得する。
【０１１９】
［ステップＳ２７］可読化部３２１は、取得した版数付ソースコード「ＳＲ１」から、行番号「Ｌ１」のログ取得命令（トレースログ関数の呼び出し命令）を取得する。以下、取得したログ取得命令を「Ｆ１」とする。
【０１２０】
［ステップＳ２８］可読化部３２１は、ログ取得命令「Ｆ１」の固定部文字列を取得する。以下、取得した固定部文字列を「Ｓ２」とする。例えば可読化部３２１は、ログ取得命令「Ｆ１」の第４パラメータを固定部文字列「Ｓ２」として取得する。
【０１２１】
［ステップＳ２９］可読化部３２１は、ファイル名「Ｎ１」、版数情報「Ｖ１」、行番号「Ｌ１」、固定部文字列「Ｓ２」、変数部文字列「Ｓ１」を連結して、１つのレコードとする。以下、データの連結により生成されたレコードを、「Ｒ２」とする。
【０１２２】
［ステップＳ３０］可読化部３２１は、レコード「Ｒ２」を、可読トレースログ３２２ａに追加格納する。
［ステップＳ３１］可読化部３２１は、トレースログ２３１ａにおける処理対象の位置を、次のレコード格納領域に移動する。その後、可読化部３２１は、処理をステップＳ２２に進める。
【０１２３】
このようにして、トレースログ２３１ａに登録されている各レコードの内容を、人間が理解可能なように可読化することができる。しかも各トレースログに、そのトレースログに対応するログ取得命令が記述されていたソースコードの版数が示されているため、複数版数のソースコードが存在していても、正しい版数のソースコードから固定部文字列を取得できる。
【０１２４】
以下、具体例を用いて、第２の実施の形態の処理によるトレースログの採取、およびトレースログ可読化の過程を説明する。
図１５は、ソースコードの一例を示す図である。図１５に示すソースコード２１は、ファイル名「File1.c」のファイルに保存されている。またソースコード２２は、ファイル名「File2.c」のファイルに保存されている。これらのファイルが、ソースコード編集部１１１で作成され、ソースコード記憶部１１２に格納される。
【０１２５】
図１５の例では、トレースログ関数の関数名は、「trace＿log()」である。ソースコード２１は、６行目と９行目に、トレースログ関数の呼び出し命令（ログ取得命令）が記述されている。ソースコード２２も、６行目と９行目に、トレースログ関数の呼び出し命令（ログ取得命令）が記述されている。
【０１２６】
ソースコード２１，２２は、バージョン管理システム１６０に登録される際に、バージョン管理システム登録部１２１により、ログ取得命令内の第３パラメータが版数情報に置換される。
【０１２７】
図１６は、版数付ソースコードの一例を示す図である。版数付ソースコード３１，３２では、図１５に示したソースコード２１，２２のログ取得命令における第１パラメータが、ファイル名に一意に対応付けられたファイルコードに置き換えられている。例えば版数付ソースコード３１では、トレースログ関数「trace＿log()」の第１パラメータに、ファイル名「File1」に対応するファイルコード「0x01234567」が設定されている。また版数付ソースコード３２では、トレースログ関数「trace＿log()」の第１パラメータに、ファイル名「File2」に対応するファイルコード「0x89abcdef」が設定されている。
【０１２８】
また版数付ソースコード３１，３２では、図１５に示したソースコード２１，２２のログ取得命令における第３パラメータが、版数情報に置き換えられている。例えば版数付ソースコード３１では、トレースログ関数「trace＿log()」の第３パラメータに、版数情報「111」が設定されている。また版数付ソースコード３２では、トレースログ関数「trace＿log()」の第３パラメータに、版数情報「222」が設定されている。
【０１２９】
このような版数付ソースコード３１，３２は、バージョン管理システム１６０に登録されると共に、版数付ソースコード記憶部１２２に格納される。
バージョン管理システム１６０では、版数付ソースコード３１，３２の登録に応じて、版数管理情報１６１ａを更新する。
【０１３０】
図１７は、版数管理情報の一例を示す図である。版数管理情報１６１ａには、登録された版数付ソースコード３１，３２の版数情報が、版数履歴欄に登録されている。
版数付ソースコード記憶部１２２に格納された版数付ソースコード３１，３２は、マクロ展開部１３１により行番号が展開され、展開済ソースコードとされる。
【０１３１】
図１８は、展開済ソースコードの一例を示す図である。展開済ソースコード４１，４２では、版数付ソースコード３１，３２内の各トレースログ関数「trace＿log()」の第２パラメータが、そのトレースログ関数が記述された行の行番号に置換されている。例えば展開済ソースコード４１では、６行目のトレースログ関数「trace＿log()」の第２パラメータに「６」が設定され、９行目のトレースログ関数「trace＿log()」の第２パラメータに「９」が設定されている。
【０１３２】
生成された展開済ソースコード４１，４２は、展開済ソースコード記憶部１３２に格納される。展開済ソースコード４１，４２は、実行プログラム作成部１４１によって実行コードに変換される。そして生成された実行コードが実行装置２００に渡され、プログラム実行部２２１で実行される。するとプログラム実行部２２１内のトレースログ生成部２２２によりトレースログが取得される。
【０１３３】
図１９は、実行コードから取得したトレースログの一例を示す図である。展開済ソースコード記憶部１３２に格納された展開済ソースコード４１，４２に基づいて実行プログラム作成部１４１によって生成された実行コード５１は、まず実行コード記憶部１４２に格納される。実行コード記憶部１４２に格納された実行コード５１は、開発装置１００内の実行コード出力部１５１から実行装置２００内の実行コード取得部２１１に渡され、実行コード記憶部２１２に格納される。そして実行コード記憶部２１２に格納された実行コード５１が、プログラム実行部２２１によって実行される。
【０１３４】
このとき実行コード５１は、展開済ソースコード４１，４２内のログ取得命令を機械語に翻訳した命令が含まれている。これらのプログラム実行部２２１では、これらの命令を実行する際には、ログトレース関数が呼び出され、ログトレース関数の処理を実行するトレースログ生成部２２２が起動される。そしてトレースログ生成部２２２により、トレースログ５２が生成される。
【０１３５】
図１９の例では、実行コード５１内の「命令＃１」は、展開済ソースコード４１の６行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「param1」の値「10」が取得される。実行コード５１内の「命令＃２」は、展開済ソースコード４２の６行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「param2」の値「30」が取得される。実行コード５１内の「命令＃３」は、展開済ソースコード４２の９行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「ret2」の値「40」が取得される。実行コード５１内の「命令＃４」は、展開済ソースコード４１の９行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「ret1」の値「20」が取得される。
【０１３６】
トレースログ生成部２２２は、ログ取得命令の実行によって取得した情報を、トレースログ５２に登録する。図１９の例では、時刻情報、ファイルコード、行番号、版数情報、および変数部文字列の欄を有するトレースログ５２が生成されている。このトレースログ５２は、図１２に示したトレースログ２３１ａに対して、時刻情報の欄が追加されている。時刻情報の欄には、変数部文字列を取得した時刻が設定される。生成されたトレースログ５２は、トレースログ記憶部２３１に格納される。
【０１３７】
図２０は、トレースログの可読化の一例を示す図である。トレースログ記憶部２３１に格納されたトレースログ５２は、実行装置２００内のトレースログ出力部２４１から、解析装置３００内のトレースログ取得部３１１に渡され、トレースログ記憶部３１２に格納される。
【０１３８】
可読化部３２１は、トレースログ５２の各レコードのファイルコードから、実行コード５１の作成に使用された版数付ソースコード３１，３２のファイル名を認識する。また可読化部３２１は、トレースログ５２の各レコードのファイルコードに対応するファイル名と、そのレコードの版数情報との組に基づいて、実行コード５１の作成に使用された版数の版数付ソースコード３１，３２を判断する。そして可読化部３２１は、トレースログ５２内の各レコードの行番号に基づいて、そのレコードに対応するログ取得命令を判断し、そのログ取得命令の第４パラメータから固定部文字列を取得する。
【０１３９】
可読化部３２１は、トレースログ５２の各レコードのファイルコードをファイル名に変換する。さらに可読化部３２１は、各レコードに固定部文字列を追加することで、可読トレースログ５３を生成する。生成された可読トレースログ５３は、可読トレースログ記憶部３２２に格納される。
【０１４０】
このように、生成された可読トレースログ５３には、実行装置２００で実行された実行コード５１の生成元となったソースコードのファイル名と版数情報とが示されている。これにより、解析装置３００のユーザが可読トレースログ５３を参照すれば、複数の版数が混在するソースコードの中から、実行装置２００で実行された実行コード５１に対応するソースコードを判断できる。また、可読トレースログ５３には、固定部文字列が含まれているため、解析装置３００のユーザは、変数部文字列で示される値の意味内容を視覚的に容易に認識することができる。
【０１４１】
さらに、トレースログ５２に版数情報が含まれていることにより、同じファイル名の版数の異なる複数のソースコードの中から、トレースログ５２に対応するソースコードを一意に決定することができる。そして、対応するソースコードに基づいて、トレースログへのファイルコードからファイル名への変換や、固有部文字列の挿入が可能となる。
【０１４２】
しかも、第２の実施の形態では、開発装置１００内のバージョン管理システム１６０が有する情報を用いて、トレースログの可読化を行うため、解析装置３００において、ソースコード内のログ取得命令の固定部文字列のリストなどの情報を保持しておかずにすむ。その結果、解析装置３００のＨＤＤなどの記憶領域の効率的な利用が可能となる。
【０１４３】
上記のようなシステムにおいて、実行装置２００は、例えば製品出荷されたＣＰＵ組み込み型の機器（組み込み機器）である。このような組み込み機器では、機能拡張などの理由で、内蔵のＣＰＵに実行させるプログラムを更新する場合がある。プログラムの更新により、ある時期からプログラムの版数が更新されると、組み込み機器が保存しているトレースログには、異なる版数のプログラムから採取されたレコードが混在する。このような組み込み機器の動作不良などにより原因を究明する場合、トレースログを参照することとなる。このとき第２の実施の形態に示す解析装置３００を用いて解析することで、トレースログ内の個々のレコードが、どの版数のプログラムに基づいて採取されたのかを判断できる。その結果、例えば何らかの動作不良が、どの版数のプログラムで生じた事象なのかを判断することができる。これにより、解析の効率化を図ることができる。
【０１４４】
また、ソフトウェアの開発段階のデバックのために、実行装置２００にプログラムを実行させる場合もある。ソフトウェアの開発段階では、プログラムの内容に少しずつ改良を加え、適宜デバック処理が行われる。例えばソフトウェアのバージョンアップを繰り返しながら、その都度、実行環境でソフトウェアを実行させ、異なるバージョンのソフトウェアそれぞれのトレースログを取得することがある。このような場合であっても、第２の実施の形態によれば、各トレースログを取得したときのソフトウェアの版数を識別し、人間が解読可能な情報に正しく変更することができる。これにより、デバッグ作業の効率化を図ることができる。
【０１４５】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、可読トレースログを単なるテキストデータではなく、マークアップ言語によって表現することによって、強調したい項目を目立たせて表示させるものである。なお第３の実施の形態では、図６に示す各装置の機能に加え、解析装置３００内に閲覧部が設けられる。閲覧部は、マークアップ言語で記述された可読トレースログに基づいて画面表示用のデータを作成し、可読トレースログの内容を画面表示する。
【０１４６】
図２１は、第３の実施の形態の可読トレースログの一例を示す図である。図２１の例では、図２０に示した第２の実施の形態の可読トレースログ５３の内容のうち、変数部文字列を強調した例である。
【０１４７】
第３の実施の形態では、可読化部３２１は、可読トレースログ６１をＨＴＭＬ（HyperText Markup Language）形式で作成している。そして可読化部３２１は、強調表示を示すstrongタグで変数部文字列を囲んだ可読トレースログ６１を生成している。
【０１４８】
このようなＨＴＭＬ形式の可読トレースログ６１を、ＨＴＭＬに対応する閲覧部３３１により表示することで、表示画面６２では、変数部文字列が強調表示される。閲覧部３３１としては、例えばＷｅｂブラウザを用いることができる。
【０１４９】
このように、重要な部分の強調表示を行うことで、可読トレースログ６１の内容を、より把握しやすくなる。
〔第４の実施の形態〕
次に第４の実施の形態について説明する。第４の実施の形態は、可読トレースログをＨＴＭＬなどのハイパーリンク機能を有する言語で表現し、リンク先としてソースコードを指定したものである。これにより任意のトレースログ行をクリックすると、そのクリックしたログを出力しているソースコードのファイルを表示することが可能となる。
【０１５０】
図２２は、第４の実施の形態の可読トレースログの一例を示す図である。図２２の例は、図２０に示した第２の実施の形態の可読トレースログ５３の内容のうち、変数部文字列を強調すると共に、各行に対して、ソースコードへのハイパーリンクを設定したものである。
【０１５１】
第４の実施の形態では、可読化部３２１は、可読トレースログ７１をＨＴＭＬ形式で作成している。そして可読化部３２１は、強調表示を示すstrongタグで変数部文字列を囲むと共に、各行をアンカータグで囲んだ可読トレースログ７１を生成している。各行のアンカータグには、ファイル名と版数情報との組に対応する版数付ソースコードの位置情報として、ＵＲＬ（Uniform Resource Locator）が設定されている。例えば可読化部３２１は、開発装置１００から版数付ソースコード記憶部１６２内の版数付ソースコード、またはソースコード記憶部１１２内のソースコードのＵＲＬを取得し、可読トレースログ７１に設定する。
【０１５２】
このような可読トレースログ７１が閲覧部３３１によって表示される。表示画面７２では、変数部文字列が強調表示されると共に、各行に、ハイパーリンクの存在を示すアンダーラインが表示されている。
【０１５３】
例えばマウスポインタ７３により、表示画面７２内のいずれかの行が選択されると、閲覧部３３１は、アンカータグに設定されたＵＲＬに基づいて、開発装置１００内のソースコード記憶部１１２から、対応するソースコードを取得する。そして閲覧部３３１は、取得したソースコードの内容を表示画面７４に表示する。
【０１５４】
このようにして、開発装置１００内のソースコードに容易にアクセスすることができる。なお、図２２の例では、ファイルコードや版数情報の展開を行う前のソースコードを表示しているが、バージョン管理システム１６０内の版数付ソースコードを表示するようにしてもよい。また展開済ソースコードを表示するようにしてもよい。
【０１５５】
〔第５の実施の形態〕
次に第５の実施の形態について説明する。第５の実施の形態は、ログトレース関数に指定する、バージョン管理システムによって展開される情報（$Id$、$Rev$）を、あらかじめマクロ定義化しておくものである。
【０１５６】
図２３は、第５の実施の形態のソースコードの例を示す図である。ソースコード８１，８２では、「#define」によって、「#define ID $Id$」と「#define REV $Rev$」と定義している。この文の、「$Id$」と「$Rev$」とは、第２の実施の形態と同様にバージョン管理システム登録部１２１によって展開される。その結果、版数付ソースコード８３，８４が生成される。版数付ソースコード８３では、「$Id$」がファイル名「File1」に一意に対応付けられたファイルコード「0x01234567」に置き換えられ、「$Rev$」がソースコード８１の版数情報「111」に置き換えられている。また版数付ソースコード８４では、「$Id$」がファイル名「File2」に一意に対応付けられたファイルコード「0x89abcdef」に置き換えられ、「$Rev$」がソースコード８２の版数情報「222」に置き換えられている。
【０１５７】
このようにマクロ定義化されたログトレース関数内のキーワードは、コンパイル時のプリプロセッサによって、$Id$、$Rev$の置換後の値に展開される。このようにして、第２の実施の形態と同様の実行コードを得ることができる。
【０１５８】
〔その他の実施の形態〕
上記第２の実施の形態では、開発装置１００と解析装置３００を別の装置としているが、開発装置１００と解析装置３００との両方の機能を、１つの装置に統合することもできる。
【０１５９】
なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１〜３、開発装置１００、実行装置２００、および解析装置３００が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１６０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１６２】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１６３】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１６４】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
（付記１）  プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得するプログラム実行手段と、
前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および前記プログラム実行手段が取得した変数の値を含むトレースログを生成し、記憶装置に格納するトレースログ生成手段と、
を有することを特徴とする情報処理装置。
【０１６５】
（付記２）  ログ取得命令には、ソースコード内において前記ログ取得命令が記述された行の行番号が設定されており、
前記トレースログ生成手段は、前記実行段階になったログ取得命令に含まれている行番号を含むトレースログを生成することを特徴とする付記１記載の情報処理装置。
【０１６６】
（付記３）  プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数の値を含むトレースログに基づいて、該ファイルの識別情報と該版数情報との組に対応するソースコードを取得するソースコード取得手段と、
トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する文字列追加手段と、
を有することを特徴とする情報処理装置。
【０１６７】
（付記４）  トレースログに含まれるファイルの識別情報は、ソースコードが記述されたファイルに一意に対応付けられた符号であり、
前記ソースコード取得手段は、ソースコードが記述されたファイルのファイル名と、該ファイルに一意に対応付けられた符号との対応関係が登録された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報との組に対応するファイルからソースコードを取得する、
ことを特徴とする付記３記載の情報処理装置。
【０１６８】
（付記５）  ファイルに一意に対応付けられた符号は、該ファイルのファイル名よりも少ないデータ量であることを特徴とする付記４記載の情報処理装置。
（付記６）  前記文字列追加手段は、トレースログに含まれる符号に対応するファイル名を、該トレースログに追加することを特徴とする付記４または５のいずれかに記載の情報処理装置。
【０１６９】
（付記７）  トレースログには、ソースコード内においてログ取得命令が記述された行の行番号が含まれており、
前記文字列追加手段は、トレースログに基づいて取得されたソースコード内の、該トレースログに含まれる行番号で示される行に記述されているログ取得命令から、該トレースログに関連する文字列を抽出する、
ことを特徴とする付記３乃至６のいずれかに記載の情報処理装置。
【０１７０】
（付記８）  前記文字列追加手段は、トレースログに含まれる変数の値に関連する文字列を抽出する、
ことを特徴とする付記３乃至７のいずれかに記載の情報処理装置。
【０１７１】
（付記９）  前記文字列追加手段は、ソースコードから抽出した文字列を追加したトレースログの内容をマークアップ言語によって記述したファイルを、前記記憶装置に格納することを特徴とする付記３乃至８のいずれかに記載の情報処理装置。
【０１７２】
（付記１０）  前記文字列追加手段は、ソースコードから抽出した文字列を追加したトレースログ内の変数の値を強調表示させる記述を、ソースコードから抽出した文字列を追加したトレースログの内容を記述したファイルに追加することを特徴とする付記９記載の情報処理装置。
【０１７３】
（付記１１）  前記文字列追加手段は、ソースコードから抽出した文字列を追加したトレースログに対して、該ソースコードへのハイパーリンクを追加することを特徴とする付記９または１０のいずれかに記載の情報処理装置。
【０１７４】
（付記１２）  第１の情報処理装置が、
プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、
ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得し、
前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および取得した変数の値を含むトレースログを生成し、
生成したトレースログを第１の記憶装置に格納し、
第２の情報処理装置が、
前記第１の記憶装置に格納されたトレースログに基づいて、該トレースログに含まれるファイルの識別情報と版数情報との組に対応するソースコードを取得し、
トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、
文字列を追加したトレースログを第２の記憶装置に格納する、
ことを特徴とするトレースログ取得方法。
【０１７５】
（付記１３）  第３の情報処理装置が、プログラムのソースコードに含まれるログ取得命令に、該ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号を該ファイルの識別情報として設定すると共に、該ソースコードの版数情報を該ログ取得命令に設定し、
前記第３の情報処理装置が、ソースコードが記述されたファイルのファイル名、該ファイル名に対応する符号、および該ソースコードの版数情報を有する管理情報を、該ソースコードが記述されたファイルに関連付けて、第３の記憶装置に格納し、
前記第１の情報処理装置は、ファイル名に一意に対応付けられた符号が、ファイルの識別情報として設定されたログ取得命令を含むプログラムを実行し、
前記第２の情報処理装置は、前記第３の記憶装置に格納された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報とを含む管理情報に関連付けられたファイルから、ソースコードを取得する、
ことを特徴とする付記１２記載のトレースログ取得方法。
【符号の説明】
【０１７６】
１〜３  情報処理装置
１ａ  版数管理手段
１ｂ  記憶装置
１ｃ  管理情報
１ｅ，１ｆ  ファイル
２ａ  プログラム実行手段
２ｂ  トレースログ生成手段
２ｃ  記憶装置
２ｄ  トレースログ
３ａ  ソースコード取得手段
３ｂ  文字列追加手段
３ｃ  記憶装置
３ｄ  可読トレースログ
【図１】
2012190219.tif 000003
【図２】
2012190219.tif 000004
【図３】
2012190219.tif 000005
【図４】
2012190219.tif 000006
【図５】
2012190219.tif 000007
【図６】
2012190219.tif 000008
【図７】
2012190219.tif 000009
【図８】
2012190219.tif 000010
【図９】
2012190219.tif 000011
【図１０】
2012190219.tif 000012
【図１１】
2012190219.tif 000013
【図１２】
2012190219.tif 000014
【図１３】
2012190219.tif 000015
【図１４】
2012190219.tif 000016
【図１５】
2012190219.tif 000017
【図１６】
2012190219.tif 000018
【図１７】
2012190219.tif 000019
【図１８】
2012190219.tif 000020
【図１９】
2012190219.tif 000021
【図２０】
2012190219.tif 000022
【図２１】
2012190219.tif 000023
【図２２】
2012190219.tif 000024
【図２３】
2012190219.tif 000025