JP2012190219A - 情報処理装置、およびトレースログ取得方法 - Google Patents

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

Info

Publication number
JP2012190219A
JP2012190219A JP2011052592A JP2011052592A JP2012190219A JP 2012190219 A JP2012190219 A JP 2012190219A JP 2011052592 A JP2011052592 A JP 2011052592A JP 2011052592 A JP2011052592 A JP 2011052592A JP 2012190219 A JP2012190219 A JP 2012190219A
Authority
JP
Japan
Prior art keywords
source code
log
trace log
file
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011052592A
Other languages
English (en)
Inventor
Soichi Uno
総一 宇野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011052592A priority Critical patent/JP2012190219A/ja
Priority to US13/356,066 priority patent/US8745595B2/en
Publication of JP2012190219A publication Critical patent/JP2012190219A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】トレースログ取得時に実行されていたプログラムのソースコードの版数を判別可能とする。
【解決手段】プログラム実行手段2aは、プログラムを実行し、ログ取得命令の実行段階になると、そのログ取得命令に設定された変数の値を取得する。トレースログ生成手段2bは、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段2aが取得した変数の値を含むトレースログを生成し、記憶装置2cに格納する。ソースコード取得手段3aは、トレースログに基づいて、ファイルの識別情報と版数情報との組に対応するソースコードを取得する。文字列追加手段3bは、取得されたソースコードから、トレースログに含まれる変数の値に関連する文字列を抽出し、抽出した文字列をトレースログに追加し、文字列を追加したトレースログを記憶装置3cに格納する。
【選択図】図1

Description

本発明は、トレースログを取得する情報処理装置、およびトレースログ取得方法に関する。
ソフトウェアの開発時には、そのソフトウェアの不具合を見つけ出すデバッグ作業が行われる。デバッグ作業を効率的に行うには、処理の要所において、そのときの変数の内容などの処理状態に関する情報を、ログとして取得しておくことが有効である。また装置に実装されたソフトウェアの動作状況を確認する場合、処理中の変数の内容などの情報をログとして取得しておくことで、ソフトウェアの動作状況の解析が容易となる。このようなプログラム実行途中の状態に関する情報は、トレースログと呼ばれる。トレースログは、例えばコンピュータ上の処理内容・イベント・データ通信履歴などを発生日時と共に記録したものである。トレースログを用いることで、例えば、開発中のデバッグや異常発生時の原因特定などの解析作業が容易となる。なおトレースログは、多くの場合、データ量を削減するためにコード化される。
トレースログを取得する技術としては、例えば、実行過程を記録するためのログ出力命令をソースコードに挿入することで、ユーザが指定した注目箇所に関係する箇所についてのみ実行過程を記録する技術がある。この技術では、ログデータに識別子番号を含め、別の識別子データにおいて、識別子番号とファイル番号などの他の情報との対応関係を管理している。
特開2000−207246号公報
しかし、従来は、版数の異なる複数のソースコードそれぞれに基づく複数のプログラムの実行時に取得されたトレースログが混在すると、各トレースログがどの版数のソースコード内の命令に応じて取得されたのかが判別できなかった。その結果、トレースログを用いた動作解析を正確に行うのが困難となっていた。
1つの側面では、本発明は、トレースログ取得時に実行されていたプログラムのソースコードの版数を判別可能とする情報処理装置、およびトレースログ取得方法を提供することを目的とする。
1つの案では、プログラム実行手段とトレースログ生成手段とを有する情報処理装置が提供される。プログラム実行手段は、プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、ログ取得命令の実行段階になると、該実行段階になったログ取得命令に設定された変数の値を取得する。トレースログ生成手段は、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段が取得した変数の値を含むトレースログを生成し、記憶装置に格納する。
他の案では、ソースコード取得手段と文字列追加手段とを有する情報処理装置が提供される。ソースコード取得手段は、プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数の値を含むトレースログに基づいて、該ファイルの識別情報と該版数情報との組に対応するソースコードを取得する。文字列追加手段は、トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する。
別の案では、第1の情報処理装置と第2の情報処理装置とによるトレースログ取得方法が提供される。このトレースログ取得方法では、第1の情報処理装置が、プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行する。次に第1の情報処理装置が、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得する。次に第1の情報処理装置が、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段が取得した変数の値を含むトレースログを生成する。次に第1の情報処理装置が、生成したトレースログを第1の記憶装置に格納する。次に第2の情報処理装置が、第1の記憶装置に格納されたトレースログに基づいて、該トレースログに含まれるファイルの識別情報と版数情報との組に対応するソースコードを取得する。次に第2の情報処理装置が、トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加する。次に第2の情報処理装置が、文字列を追加したトレースログを第2の記憶装置に格納する。
トレースログ取得時に実行されていたプログラムのソースコードの版数の判別が可能となる。
第1の実施の形態に係る装置の機能構成例を示す図である。 第1の実施の形態の処理の手順を示すフローチャートの一例である。 トレースログの可読化の一例を示す図である。 第2の実施の形態のシステム構成例を示す図である。 本実施の形態に用いる開発装置のハードウェアの一構成例を示す図である。 第2の実施の形態の各装置の機能を示すブロック図である。 ソースコード記憶部のデータ構造の一例を示す図である。 バージョン管理システム内の版数付ソースコード記憶部のデータ構造の一例を示す図である。 バージョン管理システムの版数管理情報記憶部のデータ構造の一例を示す図である。 展開済ソースコード記憶部のデータ構造の一例を示す図である。 プログラム実行処理の手順を示すフローチャートである。 トレースログのデータ構造の一例を示す図である。 可読化処理を示す図である。 可読化処理の手順を示すフローチャートである。 ソースコードの一例を示す図である。 版数付ソースコードの一例を示す図である。 版数管理情報の一例を示す図である。 展開済ソースコードの一例を示す図である。 実行コードから取得したトレースログの一例を示す図である。 トレースログの可読化の一例を示す図である。 第3の実施の形態の可読トレースログの一例を示す図である。 第4の実施の形態の可読トレースログの一例を示す図である。 第5の実施の形態のソースコードの例を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る装置の機能構成例を示す図である。第1の実施の形態では、3つの情報処理装置1〜3が設けられている。情報処理装置1は、例えばソフトウェアの開発に使用する装置である。また情報処理装置2は、例えばソフトウェアの実行に使用する装置である。情報処理装置3は、例えばトレースログの解析に使用する装置である。
情報処理装置1は、版数管理手段1aと記憶装置1bとを有する。
版数管理手段1aは、プログラムのソースコードに含まれるログ取得命令に、該ソースコードが記述されたファイル1e,1fのファイル名に一意に対応付けられた符号を該ファイルの識別情報として設定する。また版数管理手段1aは、該ソースコードの版数情報を該ログ取得命令に設定する。さらに版数管理手段1aは、ソースコードが記述されたファイルのファイル名、該ファイル名に対応する符号、および該ソースコードの版数情報を有する管理情報1cを、ソースコードが記述されたファイル1e,1fに関連付けて、記憶装置1bに格納する。なおソースコードが記述されたファイル1e,1fは、例えば版数管理手段1aによって記憶装置1bに格納される。
記憶装置1bは、管理情報1cを記憶する。また記憶装置1bは、例えば、ソースコードが記述されたファイル1e,1fを記憶する。
情報処理装置2は、プログラム実行手段2a、トレースログ生成手段2b、および記憶装置2cを有する。
プログラム実行手段2aは、プログラムのソースコードが記述されたファイルの識別情報、そのソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行する。そしてプログラム実行手段2aは、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得する。
トレースログ生成手段2bは、実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、およびプログラム実行手段2bが取得した変数の値を含むトレースログ2dを生成し、記憶装置2cに格納する。
記憶装置2cは、トレースログ2dを記憶する。
情報処理装置3は、ソースコード取得手段3a、文字列追加手段3b、および記憶装置3cを有する。
ソースコード取得手段3aは、トレースログ2dに基づいて、ファイルの識別情報と版数情報との組に対応するソースコードを取得する。例えばトレースログに含まれるファイルの識別情報は、ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号である。この場合、ソースコード取得手段3aは、ソースコードが記述されたファイルのファイル名と、該ファイルのファイル名に一意に対応付けられた符号との対応関係が登録された管理情報1cに基づいて、トレースログに含まれ符号に対応するファイル名を判断する。そしてソースコード取得手段3aは、ファイル名とトレースログに含まれる版数情報との組に対応するファイルからソースコードを取得する。
文字列追加手段3bは、トレースログに基づいて取得されたソースコードから、そのトレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する。例えば文字列追加手段3bは、ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号がトレースログに含まれている場合、その符号に対応するファイル名をトレースログに追加する。また文字列追加手段3bは、例えば、トレースログに含まれる変数の値に関連する文字列をソースコードから抽出し、トレースログに追加する。
なお、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また版数管理手段1aは、情報処理装置1が有するCPU(Central Processing Unit)により実現することができる。また、記憶装置1b、情報処理装置1が有するRAM(Random Access Memory)やハードディスクドライブ(HDD:Hard Disk Drive)により実現することができる。プログラム実行手段2aおよびトレースログ生成手段2bは、情報処理装置2が有するCPUにより実現することができる。また記憶装置2c、情報処理装置2が有するRAMやHDDにより実現することができる。ソースコード取得手段3aおよび文字列追加手段3bは、情報処理装置3が有するCPUにより実現することができる。また記憶装置3c、情報処理装置3が有するRAMやHDDにより実現することができる。
このような構成のシステムにより、プログラム実行にトレースログが取得され、そのトレースログの可読化が行われる。
図2は、第1の実施の形態の処理の手順を示すフローチャートの一例である。以下、図2に示す処理をステップ番号に沿って説明する。
[ステップS1]情報処理装置1の版数管理手段1aは、ソースコード内のログ取得命令に対して、そのソースコードが記述されたファイルのファイル名に対応する符号を設定する。
[ステップS2]情報処理装置1の版数管理手段1aは、ファイル名と符号との対応関係を示す管理情報1cを、記憶装置1bに格納する。
[ステップS3]情報処理装置2のプログラム実行手段2aは、ファイル名に対応する符号が設定されたログ取得命令を含むプログラムを情報処理装置1から取得し、実行する。
[ステップS4]情報処理装置2のプログラム実行手段2aは、ログ取得命令の実行段階になると、その時点でのログ取得命令に含まれる変数の値を取得する。
[ステップS5]トレースログ生成手段2bは、実行段階になったログ取得命令に設定された符号と版数情報、およびプログラム実行手段2aが取得した変数の値を含むトレースログ2dを生成する。そしてトレースログ生成手段2bは、生成したトレースログ2dを記憶装置2cに格納する。
[ステップS6]情報処理装置3のソースコード取得手段3aは、記憶装置2cに格納されたトレースログ2dに基づいて、ファイルの識別情報と版数情報との組に対応するソースコードを取得する。例えば情報処理装置3は、情報処理装置1の記憶装置1bに格納されている管理情報1cを参照し、トレースログ2d内の符号に対応するファイル名を判断する。そしてソースコード取得手段3aは、符号に対応するファイル名の、トレースログ2dに含まれる版数情報に対応する版数のファイルから、ソースコードを取得する。
[ステップS7]情報処理装置3の文字列追加手段3bは、トレースログ2dに関連する文字列をステップS6で取得したソースコードから抽出し、トレースログ2dに追加する。例えば文字列追加手段3bは、トレースログ2d内の変数の値に関連する文字列をソースコードから抽出し、トレースログ2dに追加する。また文字列追加手段3bは、トレースログ2dに含まれる符号に対応するファイル名を、トレースログ2dに追加する。この際、文字列追加手段3bは、トレースログ2d内の符号を、トレースログ2dから削除してもよい。その後、文字列追加手段3bは、文字列を追加した可読トレースログ3dを記憶装置3cに格納する。
このようにして、トレースログの可読化が行われ、人が理解可能な記述の可読トレースログ3dが取得できる。
図3は、トレースログの可読化の一例を示す図である。図3の例では、ファイル名が「file.c」で版数が異なる2つのファイル1e,1fが設けられている。ファイル1e,1fそれぞれには、ソースコードが記述されている。例えばファイル1eのソースコードの6行目と9行目には、ログ取得命令が記述されている。また、ファイル1eは、版数管理手段1aにより、ログ取得命令のパラメータとして、ファイル1eを一意に示す符号「c1」が設定されている。版数管理手段1aは、ファイル1eに設定した符号「c1」と、ファイル1eのファイル名「file.c」と関連付けた管理情報1cを生成する。
その後、プログラム実行手段2aにより、例えばファイル1e内のソースコードに示されたプログラムが実行される。なおプログラム実行手段2aは、例えばソースコードをコンパイルして実行コードに翻訳された後のプログラムを実行する。なおプログラム実行手段2aがインタプリタであれば、ソースコードを逐次解釈しながら実行することもできる。
プログラム実行手段2aによるプログラムの実行が、ログ取得命令の実行段階に達すると、ログ取得命令に示される変数の値が、プログラム実行手段2aによって取得される。そして、トレースログ生成手段2bにより、トレースログ2dが生成される。
図3の例では、トレースログ2dには、符号、行番号、版数情報、変数の値が含まれる。符号は、ファイル1eを一意に示す符号である。行番号は、ソースコード内でのログ取得命令が記述された行の行番号である。版数情報は、ファイル1eの版数を示す情報である。変数の値は、ログ取得命令の実行段階における、そのログ取得命令で示された変数の値である。
ここで、トレースログ2dの内容だけでは、変数の値が、どのような意味を持つ変数の値なのかが不明である。またトレースログの符号「c1」を人が見ても、どのファイルを示しているのか理解できない。
そこで、ソースコード取得手段3aにより、トレースログ2dに示される符号「c1」と版数情報「v11」に対応するファイル1eからソースコードが取得される。そして、文字列追加手段3bにより、取得したソースコードから文字列が抽出される。例えば、文字列追加手段3bにより、トレースログ2d内の各レコードの行番号に対応する行のログ取得命令から、変数の値の意味を説明する文字列「関数Aの処理を開始します。 パラメータ:」、「エラーを検出しました。エラー番号:」が抽出される。そして、トレースログ2dの内容に、抽出した文字列を追加した可読トレースログ3dが生成される。また図3の例では、文字列追加手段3dにより、トレースログ2d内の符号「c1」は、その符号に対応するファイルのファイル名「file.c」に置換されている。
このように、第1の実施の形態によれば、トレースログ2dに版数情報が含まれているため、各トレースログの内容が、どの版数のソースコードに基づく命令で取得されたのかが明確となる。その結果、トレースログに対応する版数のソースコードの情報に基づいて、各トレースログに対して、人が理解可能な文字列を追加し、可読トレースログ3dを得ることができる。
また可読トレースログ3dでは、ソースコードが記述されたファイルのファイル名が示されている。そのため、プログラムを変更する場合の編集対象のファイルを、容易に把握することができる。その結果、トレースログの作成・実行・解析処理および版数毎の管理作業を削減することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、ソースコードから得られた実行コードを、ネットワーク経由で実行装置に転送し、実行装置でトレースログを取得するものである。
図4は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、ネットワーク10を介して、開発装置100、実行装置200、および解析装置300が接続されている。
開発装置100は、ソフトウェアの作成に使用されるコンピュータである。開発装置100は、作成したソフトウェアに、そのソフトウェア実行時のトレースログを取得するための関数呼び出し記述(ログ取得命令)を組み込むことができる。その関数呼び出し記述には、引数として版数情報を含めることができる。
実行装置200は、開発装置100で作成されたソフトウェアを実行するコンピュータである。実行装置200は、ソフトウェアのプログラムに組み込まれた関数呼び出し記述に基づいて、トレースログ取得の関数を実行することができる。トレースログ取得の関数の実行によりトレースログが取得される。
解析装置300は、トレースログを解析するコンピュータである。解析装置300は、実行装置200からトレースログを取得し、トレースログに含まれるコード化された情報を、人間が解読可能な情報(例えば文字列)に変換することができる。
図5は、本実施の形態に用いる開発装置のハードウェアの一構成例を示す図である。開発装置100は、CPU101によって装置全体が制御されている。CPU101には、バス108を介してRAM102と複数の周辺機器が接続されている。
RAM102は、開発装置100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
バス108に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、および通信インタフェース107がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、開発装置100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
通信インタフェース107は、ネットワーク10に接続されている。通信インタフェース107は、ネットワーク10を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお図5には、開発装置100のハードウェア構成例を示したが、実行装置200と解析装置300も同様のハードウェア構成で実現することができる。また第1の実施の形態に示した各情報処理装置も、図5に示した開発装置100と同様のハードウェアにより実現することができる。
図6は、第2の実施の形態の各装置の機能を示すブロック図である。開発装置100は、ソースコード編集部111、ソースコード記憶部112、バージョン管理システム登録部121、版数付ソースコード記憶部122、マクロ展開部131、展開済ソースコード記憶部132、実行プログラム作成部141、および実行コード記憶部142、実行コード出力部151、およびバージョン管理システム160を有する。
ソースコード編集部111は、プログラマからの操作入力に応答して、プログラムのソースコードを編集する。例えばソースコード編集部111は、テキストエディタと呼ばれるテキストファイルの編集ソフトウェアである。例えばプログラマは、ソースコード中に、トレースログを取得させる関数の呼び出し記述(ログ取得命令)を含める。ログ取得命令には、例えばソースコード内のログ取得命令が記述された行の行番号に置換するマクロが、パラメータとして含まれる。マクロとは、プログラミング言語であらかじめ定義された規則にしたがって置換・展開されるものである。またログ取得命令には、ソースコードが記述されたファイルのファイル名を一意に示す符号(ファイルコード)への置換を示す文字列が、パラメータとして含まれる。さらにログ取得命令には、ソースコードの版数情報への置換を示す文字列が、パラ−メータとして含まれる。なおファイルコードは、例えばファイル名の文字列のデータ量よりも少ないデータ量の情報である。
ソースコード記憶部112は、ソースコード編集部111で作成されたソースコードを記憶する。例えばRAM102などの主記憶装置またはHDD103などの二次記憶装置の記憶領域の一部が、ソースコード記憶部112として使用される。
バージョン管理システム登録部121は、ソースコード記憶部112に格納されているソースコードをバージョン管理システム160に登録する。この際、バージョン管理システム登録部121は、ファイルコードへの置換を示す文字列を、ソースコードが記述されたファイルのファイル名に対応するファイルコードに置換する。またバージョン管理システム登録部121は、版数情報への置換を示す文字列を、ソースコードの版数情報に置換する。例えばバージョン管理システム登録部121は、バージョン管理システム160が保持する版数管理情報から、同じファイル名のソースコードの最新の版数情報を取得し、その版数情報に1を加算した値を、新たに登録するソースコードの版数情報とする。なおバージョン管理システム登録部121は、バージョン管理システム160にソースコードを登録する場合、旧版のソースコードが既に登録されていれば、例えば旧版のソースコードとの差分のみを登録する。
またバージョン管理システム登録部121は、ファイルコードや版数情報の置換処理を施したソースコード(版数付ソースコード)を、版数付ソースコード記憶部122に格納する。
版数付ソースコード記憶部122は、版数付ソースコードを記憶する。例えばRAM102などの主記憶装置またはHDD103などの二次記憶装置の記憶領域の一部が、版数付ソースコード記憶部122として使用される。
マクロ展開部131は、版数付ソースコード記憶部122内の版数付ソースコードに含まれるマクロを展開する。例えばマクロ展開部131は、ログ取得命令に含まれる行番号に置換するマクロを、ログ取得命令の行番号に置換する。このようなマクロの置換処理は、マクロの展開と呼ばれる。マクロ展開部131は、マクロ展開後の版数付ソースコード(展開済ソースコード)を、展開済ソースコード記憶部132に格納する。
展開済ソースコード記憶部132は、展開済ソースコードを記憶する。例えばRAM102などの主記憶装置またはHDD103などの二次記憶装置の記憶領域の一部が、展開済ソースコード記憶部132として使用される。
実行プログラム作成部141は、ソースコードのコンパイルやリンクを行い、機械語で記述された実行コードを作成する。実行プログラム作成部141は、作成した実行コードを、実行コード記憶部142に格納する。
実行コード記憶部142は、実行プログラム作成部141で作成された実行コードを記憶する。例えばRAM102などの主記憶装置またはHDD103などの二次記憶装置の記憶領域の一部が、実行コード記憶部142として使用される。
実行コード出力部151は、実行コード記憶部142に格納された実行コードを、実行装置200に出力する。例えば実行コード出力部151は、ネットワーク10を介した実行装置200からの実行コード取得要求に応答し、実行コードを実行装置200にネットワークを介して送信する。
バージョン管理システム160は、作成されたプログラムの版数を管理する。例えば、バージョン管理システム160は、版数管理情報記憶部161と版数付ソースコード記憶部162とを有する。
版数管理情報記憶部161は、版数管理情報を記憶する。版数管理情報は、ソースコードが記述されたファイルのファイル名、ファイルコード、ファイル名、およびそのソースコードの版数の対応関係を示す情報である。例えばRAM102などの主記憶装置またはHDD103などの二次記憶装置の記憶領域の一部が、版数管理情報記憶部161として使用される。
版数付ソースコード記憶部162は、版数付ソースコードを記憶する。なお、版数付ソースコード記憶部162に格納される版数付ソースコードは、例えば旧版との差分情報である。
またバージョン管理システム160は、版数管理情報や版数付ソースコードの内容を、解析装置300に送信することができる。例えばバージョン管理システム160は、解析装置300の要求に応答し、版数管理情報の内容や、版数付ソースコードに含まれるログ取得命令の内容を、ネットワーク10経由で解析装置300に送信する。
実行装置200は、実行コード取得部211、実行コード記憶部212、プログラム実行部221、トレースログ生成部222、トレースログ記憶部231、およびトレースログ出力部241を有する。
実行コード取得部211は、開発装置100からプログラムの実行コードを取得する。例えば実行コード取得部211は、実行装置200の使用者からの入力に応じて、開発装置100に対して実行コードの取得要求を、ネットワーク10を介して送信する。そして実行コード取得部211は、取得要求に対して開発装置100から応答された実行コードを取得する。実行コード取得部211は、取得した実行コードを実行コード記憶部212に格納する。
実行コード記憶部212は、実行コードを記憶する。例えば実行装置200内のRAMなどの主記憶装置またはHDDなどの二次記憶装置の記憶領域の一部が、実行コード記憶部212として使用される。
プログラム実行部221は、実行コード記憶部212に格納されている実行コードで表されたプログラムを実行する。またプログラム実行部221は、実行コードの実行時に、実行対象がログ取得命令となった場合、トレースログ生成部222を起動し、トレースログ生成部222に、ログ取得命令のパラ−メータを渡す。その際、プログラム実行部221は、例えばログ取得命令のパラメータが変数であれば、ログ取得命令実行時点でのその変数の値をパラメータとして、トレースログ生成部222に渡す。
トレースログ生成部222は、ログ取得命令に応じて呼び出されるログトレース関数の処理を実行する。例えばトレースログ生成部222は、ログトレース関数に従ってトレースログを生成し、生成したトレースログをトレースログ記憶部231に格納する。
トレースログ記憶部231は、トレースログを記憶する。例えば実行装置200のRAMなどの主記憶装置またはHDDなどの二次記憶装置の記憶領域の一部が、トレースログ記憶部231として使用される。
トレースログ出力部241は、トレースログ記憶部231に格納されているトレースログを出力する。例えばトレースログ出力部241は、解析装置300からの要求に応じて、ネットワーク10を介してトレースログを解析装置300に送信する。
解析装置300は、トレースログ取得部311、トレースログ記憶部312、可読化部321、および可読トレースログ記憶部322を有する。
トレースログ取得部311は、実行装置200からトレースログを取得する。例えばトレースログ取得部311は、解析担当者からの入力に応じて、実行装置200に対してトレースログの取得要求をネットワーク10経由で送信する。そしてトレースログ取得部311は、取得要求の応答として実行装置200から送信されたトレースログを取得する。トレースログ取得部311は、取得したトレースログをトレースログ記憶部312に格納する。
トレースログ記憶部312は、トレースログを記憶する。例えば解析装置300内のRAMなどの主記憶装置またはHDDなどの二次記憶装置の記憶領域の一部が、トレースログ記憶部312として使用される。
可読化部321は、トレースログ記憶部312に格納されたトレースログ内のコード化された情報を、人間が理解可能な情報に可読化し、可読トレースログを生成する。例えば、可読化部321は、解析担当者からの入力に応じて、開発装置100からトレースログに示されるコード化された情報に対応する、人間に理解可能な文字列を取得する。例えば可読化部321は、ファイルコードに対応するファイル名の文字列を、開発装置100から取得する。また可読化部321は、トレースログの行番号に基づいて、版数付ソースコード内の該当する行に記載されている固定部文字列を取得する。そして可読化部321は、開発装置100から取得した情報に基づいて、トレースログの可読化を行う。可読化部321は、生成した可読トレースログを、可読トレースログ記憶部322に格納する。
可読トレースログ記憶部322は、可読トレースログを記憶する。例えば解析装置300内のRAMなどの主記憶装置またはHDDなどの二次記憶装置の記憶領域の一部が、可読トレースログ記憶部322として使用される。
なお、図6に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
なおバージョン管理システム登録部121とバージョン管理システム160とを合わせた機能は、図1に示した版数管理手段1aと記憶装置1bとを合わせた機能の一例である。プログラム実行部221は、図1に示したプログラム実行手段2aの一例である。トレースログ生成部222は、トレースログ生成手段2bの一例である。トレースログ記憶部231は、図1に示した記憶装置2cの一例である。可読化部321は、図1に示したソースコード取得手段3aと文字列追加手段3bとを合わせた機能の一例である。可読トレースログ記憶部322は、図1に示した記憶装置3cの一例である。
このようなシステムにおいて、まずプログラマが開発装置100のソースコード編集部111を用いてプログラムのソースコードを編集する。プログラムの編集が完了すると、プログラマは、ソースコード編集部111にファイル名を指定した保存要求を入力する。するとソースコード編集部111により、指定されたファイル名を付与したファイルが作成される。そのファイルには、作成されたソースコードが含まれている。そしてソースコード編集部111により、作成されたファイルがソースコード記憶部112に格納される。
図7は、ソースコード記憶部のデータ構造の一例を示す図である。ソースコード記憶部112には、複数のソースコード112a,112bが、ファイル形式で格納される。図7の例では、ソースコード112aが記述されたファイルのファイル名は「n1」である。またソースコード112bが記述されたファイルのファイル名は「n2」である。
なお図7の例では、ソースコード112a,112bに記述された命令文のうち、ログ取得命令のみを示し、その他の命令文は省略している。例えばログ取得命令は、「f()」という名前の関数(ログトレース関数)の呼び出し命令である。このログトレース関数の呼び出し命令には、6つのパラメータを設定することができる。パラメータは、左から順に、第1パラメータ、第2パラメータ、第3パラメータ、第4パラメータ、第5パラメータ、第6パラメータである。各パラメータの意味は以下の通りである。
・第1パラメータ: ファイルの一意なコード(ファイルコード)。
「$id$」は、ファイルコードへの変換を示す文字列である。「$id$」の文字列は、バージョン管理システム登録部121によってファイルコードに置換される。
・第2パラメータ: 行番号。
・第3パラメータ: ファイルの版数情報。
「$Rev$」は、ファイルの版数情報への変換を示す文字列である。「$Rev$」の文字列は、バージョン管理システム登録部121によって、ファイルの版数情報に置換される。
・第4パラメータ: トレースログの固定部文字列。
・第5パラメータ: トレースログの変数部の出力の書式付き文字列(変数部文字列)。
「%d」は、第6パラメータの値を10進数で出力することを示す。
・第6パラメータ: 第5パラメータに対応する変数。
このようなログ取得命令を含むソースコードをプログラマが作成することにより、そのソースコードから生成した実行コードの実行時に、トレースログを取得することができる。
なお組込み装置のような記憶媒体が小容量の機器が、実行装置200となる場合もある。そこで第2の実施の形態では、より多くの情報を残すために、一つのトレースログあたりの容量を小さくする工夫がなされている。例えば以下の二つの手段によって、トレースログのデータ量が削減されている。
・各トレースログの文字列をコード化する。
・ログの内容を「固定部」と「変数部」に分離し、変数部のみを実行環境上に保存する。
トレースログの文字列をコード化とは、例えばログ取得命令の第1のパラメータに、トレースログにファイル名ではなく、ファイル名に対応するコードを設定する処理である。またログの内容を「固定部」と「変数部」に分離し、変数部のみを実行環境上に保存する処理とは、ログ取得命令の第4パラメータを、トレースログへの保存内容から除外する処理である。
ソースコード112a,112bをソースコード記憶部112に格納後、プログラマは、開発装置100に対して、ソースコード112a,112bのバージョン管理システム160への登録を指示する入力を行う。するとバージョン管理システム登録部121は、ソースコード記憶部112内のソースコード112a,112bのログ取得命令第3のパラメータを版数情報に置換し、バージョン管理システム160に登録する。バージョン管理システム160に登録された版数付ソースコードは、版数付ソースコード記憶部162に格納される。
図8は、バージョン管理システム内の版数付ソースコード記憶部のデータ構造の一例を示す図である。版数付ソースコード記憶部162には、ソースコード記憶部112に格納された複数のソースコード112a,112bそれぞれに対応する版数付ソースコード162a,162bが格納されている。版数付ソースコード162a,162bは、ログ取得命令の第1パラメータと第3パラメータとが、ソースコード112a,112bと異なっている。
版数付ソースコード162a,162bでは、ログ取得命令の第1パラメータが、版数付ソースコード162a,162bを一意に示すファイルコードに変換されている。またログ取得命令の第3パラメータが、版数付ソースコード162a,162bの端数を示す文字列に変換されている。
なお図8には、バージョン管理システム160内の版数付ソースコード記憶部162のデータ構造の一例を示したが、版数付ソースコード記憶部122のデータ構造も図8に示したデータ構造と同様である。またバージョン管理システム160内の版数付ソースコード記憶部162については、ソースコードのファイル名が同じ過去の版数の版数付ソースコードがある場合には、その版数付ソースコードとの差分が版数付ソースコード記憶部162に格納される。
バージョン管理システム160は、版数付ソースコード記憶部162に格納された版数付ソースコード162a,162bを、版数管理情報記憶部161によって管理している。
図9は、バージョン管理システムの版数管理情報記憶部のデータ構造の一例を示す図である。版数管理情報記憶部161には、版数管理情報161aが格納されている。
版数管理情報161aは、ファイルコード、ファイル名、および版数履歴の欄が設けられている。ファイルコードの欄には、ファイル名を一意に示すファイルコードが設定される。ファイル名の欄には、ファイルコードに対応する、版数付ソースコードが記述されたファイルのファイル名が設定される。版数履歴の欄には、ファイルコードで示されるファイル名で生成されたファイル内の版数付ソースコードの版数情報が設定される。版数履歴の欄に設定された版数情報それぞれには、ファイル名と版数とが一致する版数付ソースコードが関連付けられている。
例えば図9の例では、ファイル名「n1」に対してファイルコード「c1」が対応付けられている。ファイル名「n1」のファイル名で作成された版数付ソースコードには、「v11」、「v12」、「v13」の3つの版数情報が存在する。版数情報は、「v」の後に続く数値が大きいほど新しい版数を示している。ファイル名と版数情報との組により、1つの版数付ソースコードが一意に関連付けられる。
バージョン管理システム160への版数付ソースコードの登録、および版数付ソースコード記憶部122への版数付ソースコードの格納が完了すると、プログラマは、例えば開発装置100に対してマクロ展開を指示する入力を行う。すると、マクロ展開部131は、版数付ソースコード記憶部122に格納されている版数付ソースコードのマクロ展開処理を行う。マクロ展開処理では、例えばログ取得命令内の第2パラメータが、そのログ取得命令が記述された行の行番号に置換される。そして、マクロ展開処理が施された展開済ソースコードが、展開済ソースコード記憶部132に格納される。
図10は、展開済ソースコード記憶部のデータ構造の一例を示す図である。展開済ソースコード記憶部132には、版数付ソースコード記憶部122に格納された版数付ソースコード(図9に示す版数付ソースコード162a,162bと同じ内容)それぞれに対応する展開済ソースコード132a,132bが格納されている。展開済ソースコード132a,132bは、ログ取得命令の第2パラメータが、版数付ソースコード162a,162bと異なっている。
展開済ソースコード132a,132bは、ログ取得命令の第2パラメータが行番号に展開されている。例えば展開済ソースコード132aの1行目に記載されているログ取得命令は、第2パラメータが、行番号を示す数値「1」に変換されている。
このような展開済ソースコード132a,132bが実行プログラム作成部141によりコンパイルされ、展開済ソースコード132a,132bそれぞれに対応するオブジェクトファイルが生成される。そして実行プログラム作成部141により、複数のオブジェクトファイルがリンクされ、1つの実行コードが生成される。そして生成された実行コードが、実行コード記憶部142に格納される。
実行コード記憶部142に格納された実行コードは、実行コード出力部151により実行装置200に送信される。
開発装置100から送信された実行コードは、実行装置200の実行コード取得部211で受信される。実行コード取得部211は、受信した実行コードを実行コード記憶部212に格納する。その後、プログラム実行部221が、例えば実行装置200を使用するユーザからの入力に怖じて、実行コードによって表されたプログラムを実行する。
図11は、プログラム実行処理の手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS11]プログラム実行部221は、実行コードに記述された命令を上位から順に読み込む。
[ステップS12]プログラム実行部221は、読み込んだ命令が、ログ取得命令か否かを判断する。プログラム実行部221は、読み込んだのがログ取得命令であれば処理をステップS14に進める。またプログラム実行部221は、読み込んだのがログ取得命令以外の命令であれば、処理をステップS13に進める。
[ステップS13]プログラム実行部221は、読み込んだ命令を実行し、処理をステップS11に進める。
[ステップS14]プログラム実行部221は、読み込んだ命令がログ取得命令の場合、ログ取得命令の第6パラメータに示される変数の現在の値を取得し、変数部文字列「S1」の文字列"%d"に代えて、取得した変数の値を設定する。この際、トレースログ生成部222は、変数部文字列"%d"に示される書式(この例では10進数)で変数の値を設定する。
[ステップS15]プログラム実行部221は、ログトレース関数の呼び出しを行う。ログトレース関数の呼び出しにより、トレースログ生成部222が起動される。このとき、プログラム実行部221は、ログ取得命令に設定されているパラメータを、トレースログ生成部222に引き渡す。
[ステップS16]トレースログ生成部222は、ログ取得命令の第1、第2、第3、第5パラメータを取得する。例えばトレースログ生成部222は、ログ取得命令で示された第1パラメータのファイルコードを取得する。以下、取得したファイルコードを「C1」とする。またトレースログ生成部222は、ログ取得命令で示された第2パラメータの行番号を取得する。以下、取得した行番号を「L1」とする。またトレースログ生成部222は、ログ取得命令で示された第3パラメータの版数情報を取得する。以下、取得した版数情報を「V1」とする。またトレースログ生成部222は、ログ取得命令で示された第5パラメータの変数部文字列を取得する。以下、取得した変数部文字列を「S1」とする。
[ステップS17]トレースログ生成部222は、ファイルコード「C1」、版数情報「L1」、行番号「V1」、変数部文字列「S1」を1つのレコード「R1」として連結する。
[ステップS18]トレースログ生成部222は、レコード「R1」をトレースログ記憶部231に追加保存する。
[ステップS19]プログラム実行部221は、実行コードで示されるプログラムが終了したか否かを判断する。プログラム実行部221は、プログラムが終了した場合、プログラム実行処理を終了する。プログラム実行部221は、プログラムが終了していなければ、処理をステップS11に進める。
このようにして、実行コードで表されたプログラムの実行に伴って、トレースログが採取される。
図12は、トレースログのデータ構造の一例を示す図である。なお図12では、実行コード212aを実行した場合のトレースログ231aが示されている。図12に示す実行コード212aには、展開済ソースコード132a,132b内の命令文に基づいて生成された複数の命令が、実行装置200のCPUが解釈可能な機械語で記述されている。
最初の命令「命令#1」は、ファイル名「n1」の展開済ソースコードの1行目のログ取得命令に対応する機械語の命令である。命令「命令#1」の実行により、変数「va1」の値「11」が取得されている。
2つめの命令「命令#2」は、ファイル名「n2」の展開済ソースコードの1行目のログ取得命令に対応する機械語の命令である。命令「命令#2」の実行により、変数「va3」の値「33」が取得されている。
3つめの命令「命令#3」は、ファイル名「n2」の展開済ソースコードの2行目のログ取得命令に対応する機械語の命令である。命令「命令#3」の実行により、変数「va4」の値「44」が取得されている。
4つめの命令「命令#4」は、ファイル名「n1」の展開済ソースコードの2行目のログ取得命令に対応する機械語の命令である。命令「命令#4」の実行により、変数「va2」の値「22」が取得されている。
このような実行コード212aが実行されることで、トレースログ記憶部231にトレースログ231aが格納される。トレースログ231aは、ファイルコード、行番号、版数情報、変換部文字列などの欄が設けられている。
ファイルコードの欄には、ログ取得命令の第1パラメータで示されたファイルコードが設定される。行番号の欄には、ログ取得命令の第2パラメータで示された行番号が設定される。版数情報の欄には、ログ取得命令の第3パラメータで示された版数情報が設定される。変数部文字列の欄には、ログ取得命令の実行により取得された変数の値が設定される。
このように、トレースログ231aに版数情報を含めることで、トレースログ231a内に各レコードを取得時に実行されていたプログラムのソースコードの版数が判別可能となる。その結果、トレースログ231aに基づくプログラムの動作状況の解析の容易化が可能である。例えば、トレースログ231aに対して、ソースコードに基づいて文字列を追加し、人が容易に理解できるようにすることで、解析作業者による動作状況の把握が容易となる。
トレースログ記憶部231の解析は、例えば解析装置300で行われる。その場合、トレースログ記憶部231に格納されたトレースログ231aが、トレースログ出力部241により解析装置300に送信される。解析装置300では、トレースログ取得部311が、実行装置200から送られたトレースログ231aを取得する。トレースログ取得部311が取得したトレースログ231aは、トレースログ記憶部312に格納される。
その後、可読化部321によって、トレースログ231aの可読化処理が行われる。
図13は、可読化処理を示す図である。可読化部321は、トレースログ231aの可読化に際し、版数管理情報161aと版数付ソースコード162a,162bを、開発装置100から取得する。
可読化部321は、トレースログ231aから各レコードのファイルコードと版数情報との組を抽出する。そして可読化部321は、トレースログ231aから抽出したファイルコードに対応するファイル名を、版数管理情報161aから取得する。さらに可読化部321は、取得したファイル名の版数付ソースコードのうち、トレースログ231aから抽出したファイルコードに対応する版数情報で示された版数の版数付ソースコードを参照する。そして可読化部321は、該当する版数付ソースコードから固定部文字列を取得する。
可読化部321は、トレースログ231a内のレコードに含まれるファイルコードを、版数管理情報161aから取得したファイル名に置換する。また可読化部321は、トレースログ231a内のレコードに、版数付ソースコードから取得した固定部文字列を追加する。そして可読化部321は、変更を加えた後のレコードを、可読トレースログ記憶部322に格納する。その結果、可読トレースログ記憶部322には、人間が理解可能な記述による可読トレースログ322aが格納される。
図13の例では、可読トレースログ322aには、ファイル名、行番号、固定部文字列、および変数部文字列を含むレコードが登録されている。例えば可読トレースログ322aの最初のレコード「n1:1:s1 11」は、ファイル名「n1」、行番号「1」、固定部文字列「s1」、変数部文字列「11」という情報を表している。
次に可読化処理の手順について、詳細に説明する。
図14は、可読化処理の手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS21]可読化部321は、トレースログ記憶部312の先頭のレコード格納領域を処理対象の位置とする。
[ステップS22]可読化部321は、処理対象の位置にレコードが登録されているか否かを判断する。可読化部321は、処理対象の位置にレコードが登録されていれば、処理をステップS23に進める。また可読化部321は、処理対象の位置にレコードが登録されていなければ、可読化処理を終了する。
[ステップS23]可読化部321は、処理対象の位置に登録されているレコードを抽出する。抽出したレコードを「R1」とする。
[ステップS24]可読化部321は、レコード「R1」からファイルコード「C1」を抽出する。また可読化部321は、レコード「R1」から版数情報「V1」を抽出する。また可読化部321は、レコード「R1」から行番号「L1」を抽出する。さらに可読化部321は、レコード「R1」から変数部文字列「S1」を抽出する。
[ステップS25]可読化部321は、ファイルコード「C1」に対応するファイル名を取得する。以下、取得したファイル名を「N1」とする。例えば可読化部321は、ファイルコード「C1」を指定して、開発装置100のバージョン管理システム160に対してファイル名の取得要求を送信する。するとバージョン管理システム160は、版数管理情報161a(図9参照)から、ファイルコード「C1」と一致するファイルコードを検索し、該当するファイルコードに対応するファイル名「N1」を取得する。そしてバージョン管理システム160は、取得したファイル名「N1」を解析装置300に送信する。可読化部321は、開発装置100から送られたファイル名「N1」を取得する。
[ステップS26]可読化部321は、ファイル名「N1」と版数情報「V1」との組に対応する版数付ソースコードを取得する。以下、取得した版数付ソースコードを「SR1」とする。例えば可読化部321は、ファイル名「N1」と版数情報「V1」との組を指定して、開発装置100のバージョン管理システム160に対して版数付ソースコードの取得要求を送信する。するとバージョン管理システム160は、版数付ソースコード記憶部162から、指定されたファイル名「N1」と版数情報「V1」との組に対応する版数付ソースコード「SR1」を取得する。そしてバージョン管理システム160は、取得した版数付ソースコード「SR1」を解析装置300に送信する。可読化部321は、開発装置100から送られた版数付ソースコード「SR1」を取得する。
[ステップS27]可読化部321は、取得した版数付ソースコード「SR1」から、行番号「L1」のログ取得命令(トレースログ関数の呼び出し命令)を取得する。以下、取得したログ取得命令を「F1」とする。
[ステップS28]可読化部321は、ログ取得命令「F1」の固定部文字列を取得する。以下、取得した固定部文字列を「S2」とする。例えば可読化部321は、ログ取得命令「F1」の第4パラメータを固定部文字列「S2」として取得する。
[ステップS29]可読化部321は、ファイル名「N1」、版数情報「V1」、行番号「L1」、固定部文字列「S2」、変数部文字列「S1」を連結して、1つのレコードとする。以下、データの連結により生成されたレコードを、「R2」とする。
[ステップS30]可読化部321は、レコード「R2」を、可読トレースログ322aに追加格納する。
[ステップS31]可読化部321は、トレースログ231aにおける処理対象の位置を、次のレコード格納領域に移動する。その後、可読化部321は、処理をステップS22に進める。
このようにして、トレースログ231aに登録されている各レコードの内容を、人間が理解可能なように可読化することができる。しかも各トレースログに、そのトレースログに対応するログ取得命令が記述されていたソースコードの版数が示されているため、複数版数のソースコードが存在していても、正しい版数のソースコードから固定部文字列を取得できる。
以下、具体例を用いて、第2の実施の形態の処理によるトレースログの採取、およびトレースログ可読化の過程を説明する。
図15は、ソースコードの一例を示す図である。図15に示すソースコード21は、ファイル名「File1.c」のファイルに保存されている。またソースコード22は、ファイル名「File2.c」のファイルに保存されている。これらのファイルが、ソースコード編集部111で作成され、ソースコード記憶部112に格納される。
図15の例では、トレースログ関数の関数名は、「trace_log()」である。ソースコード21は、6行目と9行目に、トレースログ関数の呼び出し命令(ログ取得命令)が記述されている。ソースコード22も、6行目と9行目に、トレースログ関数の呼び出し命令(ログ取得命令)が記述されている。
ソースコード21,22は、バージョン管理システム160に登録される際に、バージョン管理システム登録部121により、ログ取得命令内の第3パラメータが版数情報に置換される。
図16は、版数付ソースコードの一例を示す図である。版数付ソースコード31,32では、図15に示したソースコード21,22のログ取得命令における第1パラメータが、ファイル名に一意に対応付けられたファイルコードに置き換えられている。例えば版数付ソースコード31では、トレースログ関数「trace_log()」の第1パラメータに、ファイル名「File1」に対応するファイルコード「0x01234567」が設定されている。また版数付ソースコード32では、トレースログ関数「trace_log()」の第1パラメータに、ファイル名「File2」に対応するファイルコード「0x89abcdef」が設定されている。
また版数付ソースコード31,32では、図15に示したソースコード21,22のログ取得命令における第3パラメータが、版数情報に置き換えられている。例えば版数付ソースコード31では、トレースログ関数「trace_log()」の第3パラメータに、版数情報「111」が設定されている。また版数付ソースコード32では、トレースログ関数「trace_log()」の第3パラメータに、版数情報「222」が設定されている。
このような版数付ソースコード31,32は、バージョン管理システム160に登録されると共に、版数付ソースコード記憶部122に格納される。
バージョン管理システム160では、版数付ソースコード31,32の登録に応じて、版数管理情報161aを更新する。
図17は、版数管理情報の一例を示す図である。版数管理情報161aには、登録された版数付ソースコード31,32の版数情報が、版数履歴欄に登録されている。
版数付ソースコード記憶部122に格納された版数付ソースコード31,32は、マクロ展開部131により行番号が展開され、展開済ソースコードとされる。
図18は、展開済ソースコードの一例を示す図である。展開済ソースコード41,42では、版数付ソースコード31,32内の各トレースログ関数「trace_log()」の第2パラメータが、そのトレースログ関数が記述された行の行番号に置換されている。例えば展開済ソースコード41では、6行目のトレースログ関数「trace_log()」の第2パラメータに「6」が設定され、9行目のトレースログ関数「trace_log()」の第2パラメータに「9」が設定されている。
生成された展開済ソースコード41,42は、展開済ソースコード記憶部132に格納される。展開済ソースコード41,42は、実行プログラム作成部141によって実行コードに変換される。そして生成された実行コードが実行装置200に渡され、プログラム実行部221で実行される。するとプログラム実行部221内のトレースログ生成部222によりトレースログが取得される。
図19は、実行コードから取得したトレースログの一例を示す図である。展開済ソースコード記憶部132に格納された展開済ソースコード41,42に基づいて実行プログラム作成部141によって生成された実行コード51は、まず実行コード記憶部142に格納される。実行コード記憶部142に格納された実行コード51は、開発装置100内の実行コード出力部151から実行装置200内の実行コード取得部211に渡され、実行コード記憶部212に格納される。そして実行コード記憶部212に格納された実行コード51が、プログラム実行部221によって実行される。
このとき実行コード51は、展開済ソースコード41,42内のログ取得命令を機械語に翻訳した命令が含まれている。これらのプログラム実行部221では、これらの命令を実行する際には、ログトレース関数が呼び出され、ログトレース関数の処理を実行するトレースログ生成部222が起動される。そしてトレースログ生成部222により、トレースログ52が生成される。
図19の例では、実行コード51内の「命令#1」は、展開済ソースコード41の6行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「param1」の値「10」が取得される。実行コード51内の「命令#2」は、展開済ソースコード42の6行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「param2」の値「30」が取得される。実行コード51内の「命令#3」は、展開済ソースコード42の9行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「ret2」の値「40」が取得される。実行コード51内の「命令#4」は、展開済ソースコード41の9行目のログ取得命令を機械語に翻訳したものである。この命令の実行により、例えば変数「ret1」の値「20」が取得される。
トレースログ生成部222は、ログ取得命令の実行によって取得した情報を、トレースログ52に登録する。図19の例では、時刻情報、ファイルコード、行番号、版数情報、および変数部文字列の欄を有するトレースログ52が生成されている。このトレースログ52は、図12に示したトレースログ231aに対して、時刻情報の欄が追加されている。時刻情報の欄には、変数部文字列を取得した時刻が設定される。生成されたトレースログ52は、トレースログ記憶部231に格納される。
図20は、トレースログの可読化の一例を示す図である。トレースログ記憶部231に格納されたトレースログ52は、実行装置200内のトレースログ出力部241から、解析装置300内のトレースログ取得部311に渡され、トレースログ記憶部312に格納される。
可読化部321は、トレースログ52の各レコードのファイルコードから、実行コード51の作成に使用された版数付ソースコード31,32のファイル名を認識する。また可読化部321は、トレースログ52の各レコードのファイルコードに対応するファイル名と、そのレコードの版数情報との組に基づいて、実行コード51の作成に使用された版数の版数付ソースコード31,32を判断する。そして可読化部321は、トレースログ52内の各レコードの行番号に基づいて、そのレコードに対応するログ取得命令を判断し、そのログ取得命令の第4パラメータから固定部文字列を取得する。
可読化部321は、トレースログ52の各レコードのファイルコードをファイル名に変換する。さらに可読化部321は、各レコードに固定部文字列を追加することで、可読トレースログ53を生成する。生成された可読トレースログ53は、可読トレースログ記憶部322に格納される。
このように、生成された可読トレースログ53には、実行装置200で実行された実行コード51の生成元となったソースコードのファイル名と版数情報とが示されている。これにより、解析装置300のユーザが可読トレースログ53を参照すれば、複数の版数が混在するソースコードの中から、実行装置200で実行された実行コード51に対応するソースコードを判断できる。また、可読トレースログ53には、固定部文字列が含まれているため、解析装置300のユーザは、変数部文字列で示される値の意味内容を視覚的に容易に認識することができる。
さらに、トレースログ52に版数情報が含まれていることにより、同じファイル名の版数の異なる複数のソースコードの中から、トレースログ52に対応するソースコードを一意に決定することができる。そして、対応するソースコードに基づいて、トレースログへのファイルコードからファイル名への変換や、固有部文字列の挿入が可能となる。
しかも、第2の実施の形態では、開発装置100内のバージョン管理システム160が有する情報を用いて、トレースログの可読化を行うため、解析装置300において、ソースコード内のログ取得命令の固定部文字列のリストなどの情報を保持しておかずにすむ。その結果、解析装置300のHDDなどの記憶領域の効率的な利用が可能となる。
上記のようなシステムにおいて、実行装置200は、例えば製品出荷されたCPU組み込み型の機器(組み込み機器)である。このような組み込み機器では、機能拡張などの理由で、内蔵のCPUに実行させるプログラムを更新する場合がある。プログラムの更新により、ある時期からプログラムの版数が更新されると、組み込み機器が保存しているトレースログには、異なる版数のプログラムから採取されたレコードが混在する。このような組み込み機器の動作不良などにより原因を究明する場合、トレースログを参照することとなる。このとき第2の実施の形態に示す解析装置300を用いて解析することで、トレースログ内の個々のレコードが、どの版数のプログラムに基づいて採取されたのかを判断できる。その結果、例えば何らかの動作不良が、どの版数のプログラムで生じた事象なのかを判断することができる。これにより、解析の効率化を図ることができる。
また、ソフトウェアの開発段階のデバックのために、実行装置200にプログラムを実行させる場合もある。ソフトウェアの開発段階では、プログラムの内容に少しずつ改良を加え、適宜デバック処理が行われる。例えばソフトウェアのバージョンアップを繰り返しながら、その都度、実行環境でソフトウェアを実行させ、異なるバージョンのソフトウェアそれぞれのトレースログを取得することがある。このような場合であっても、第2の実施の形態によれば、各トレースログを取得したときのソフトウェアの版数を識別し、人間が解読可能な情報に正しく変更することができる。これにより、デバッグ作業の効率化を図ることができる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、可読トレースログを単なるテキストデータではなく、マークアップ言語によって表現することによって、強調したい項目を目立たせて表示させるものである。なお第3の実施の形態では、図6に示す各装置の機能に加え、解析装置300内に閲覧部が設けられる。閲覧部は、マークアップ言語で記述された可読トレースログに基づいて画面表示用のデータを作成し、可読トレースログの内容を画面表示する。
図21は、第3の実施の形態の可読トレースログの一例を示す図である。図21の例では、図20に示した第2の実施の形態の可読トレースログ53の内容のうち、変数部文字列を強調した例である。
第3の実施の形態では、可読化部321は、可読トレースログ61をHTML(HyperText Markup Language)形式で作成している。そして可読化部321は、強調表示を示すstrongタグで変数部文字列を囲んだ可読トレースログ61を生成している。
このようなHTML形式の可読トレースログ61を、HTMLに対応する閲覧部331により表示することで、表示画面62では、変数部文字列が強調表示される。閲覧部331としては、例えばWebブラウザを用いることができる。
このように、重要な部分の強調表示を行うことで、可読トレースログ61の内容を、より把握しやすくなる。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、可読トレースログをHTMLなどのハイパーリンク機能を有する言語で表現し、リンク先としてソースコードを指定したものである。これにより任意のトレースログ行をクリックすると、そのクリックしたログを出力しているソースコードのファイルを表示することが可能となる。
図22は、第4の実施の形態の可読トレースログの一例を示す図である。図22の例は、図20に示した第2の実施の形態の可読トレースログ53の内容のうち、変数部文字列を強調すると共に、各行に対して、ソースコードへのハイパーリンクを設定したものである。
第4の実施の形態では、可読化部321は、可読トレースログ71をHTML形式で作成している。そして可読化部321は、強調表示を示すstrongタグで変数部文字列を囲むと共に、各行をアンカータグで囲んだ可読トレースログ71を生成している。各行のアンカータグには、ファイル名と版数情報との組に対応する版数付ソースコードの位置情報として、URL(Uniform Resource Locator)が設定されている。例えば可読化部321は、開発装置100から版数付ソースコード記憶部162内の版数付ソースコード、またはソースコード記憶部112内のソースコードのURLを取得し、可読トレースログ71に設定する。
このような可読トレースログ71が閲覧部331によって表示される。表示画面72では、変数部文字列が強調表示されると共に、各行に、ハイパーリンクの存在を示すアンダーラインが表示されている。
例えばマウスポインタ73により、表示画面72内のいずれかの行が選択されると、閲覧部331は、アンカータグに設定されたURLに基づいて、開発装置100内のソースコード記憶部112から、対応するソースコードを取得する。そして閲覧部331は、取得したソースコードの内容を表示画面74に表示する。
このようにして、開発装置100内のソースコードに容易にアクセスすることができる。なお、図22の例では、ファイルコードや版数情報の展開を行う前のソースコードを表示しているが、バージョン管理システム160内の版数付ソースコードを表示するようにしてもよい。また展開済ソースコードを表示するようにしてもよい。
〔第5の実施の形態〕
次に第5の実施の形態について説明する。第5の実施の形態は、ログトレース関数に指定する、バージョン管理システムによって展開される情報($Id$、$Rev$)を、あらかじめマクロ定義化しておくものである。
図23は、第5の実施の形態のソースコードの例を示す図である。ソースコード81,82では、「#define」によって、「#define ID $Id$」と「#define REV $Rev$」と定義している。この文の、「$Id$」と「$Rev$」とは、第2の実施の形態と同様にバージョン管理システム登録部121によって展開される。その結果、版数付ソースコード83,84が生成される。版数付ソースコード83では、「$Id$」がファイル名「File1」に一意に対応付けられたファイルコード「0x01234567」に置き換えられ、「$Rev$」がソースコード81の版数情報「111」に置き換えられている。また版数付ソースコード84では、「$Id$」がファイル名「File2」に一意に対応付けられたファイルコード「0x89abcdef」に置き換えられ、「$Rev$」がソースコード82の版数情報「222」に置き換えられている。
このようにマクロ定義化されたログトレース関数内のキーワードは、コンパイル時のプリプロセッサによって、$Id$、$Rev$の置換後の値に展開される。このようにして、第2の実施の形態と同様の実行コードを得ることができる。
〔その他の実施の形態〕
上記第2の実施の形態では、開発装置100と解析装置300を別の装置としているが、開発装置100と解析装置300との両方の機能を、1つの装置に統合することもできる。
なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、情報処理装置1〜3、開発装置100、実行装置200、および解析装置300が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得するプログラム実行手段と、
前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および前記プログラム実行手段が取得した変数の値を含むトレースログを生成し、記憶装置に格納するトレースログ生成手段と、
を有することを特徴とする情報処理装置。
(付記2) ログ取得命令には、ソースコード内において前記ログ取得命令が記述された行の行番号が設定されており、
前記トレースログ生成手段は、前記実行段階になったログ取得命令に含まれている行番号を含むトレースログを生成することを特徴とする付記1記載の情報処理装置。
(付記3) プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数の値を含むトレースログに基づいて、該ファイルの識別情報と該版数情報との組に対応するソースコードを取得するソースコード取得手段と、
トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する文字列追加手段と、
を有することを特徴とする情報処理装置。
(付記4) トレースログに含まれるファイルの識別情報は、ソースコードが記述されたファイルに一意に対応付けられた符号であり、
前記ソースコード取得手段は、ソースコードが記述されたファイルのファイル名と、該ファイルに一意に対応付けられた符号との対応関係が登録された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報との組に対応するファイルからソースコードを取得する、
ことを特徴とする付記3記載の情報処理装置。
(付記5) ファイルに一意に対応付けられた符号は、該ファイルのファイル名よりも少ないデータ量であることを特徴とする付記4記載の情報処理装置。
(付記6) 前記文字列追加手段は、トレースログに含まれる符号に対応するファイル名を、該トレースログに追加することを特徴とする付記4または5のいずれかに記載の情報処理装置。
(付記7) トレースログには、ソースコード内においてログ取得命令が記述された行の行番号が含まれており、
前記文字列追加手段は、トレースログに基づいて取得されたソースコード内の、該トレースログに含まれる行番号で示される行に記述されているログ取得命令から、該トレースログに関連する文字列を抽出する、
ことを特徴とする付記3乃至6のいずれかに記載の情報処理装置。
(付記8) 前記文字列追加手段は、トレースログに含まれる変数の値に関連する文字列を抽出する、
ことを特徴とする付記3乃至7のいずれかに記載の情報処理装置。
(付記9) 前記文字列追加手段は、ソースコードから抽出した文字列を追加したトレースログの内容をマークアップ言語によって記述したファイルを、前記記憶装置に格納することを特徴とする付記3乃至8のいずれかに記載の情報処理装置。
(付記10) 前記文字列追加手段は、ソースコードから抽出した文字列を追加したトレースログ内の変数の値を強調表示させる記述を、ソースコードから抽出した文字列を追加したトレースログの内容を記述したファイルに追加することを特徴とする付記9記載の情報処理装置。
(付記11) 前記文字列追加手段は、ソースコードから抽出した文字列を追加したトレースログに対して、該ソースコードへのハイパーリンクを追加することを特徴とする付記9または10のいずれかに記載の情報処理装置。
(付記12) 第1の情報処理装置が、
プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、
ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得し、
前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および取得した変数の値を含むトレースログを生成し、
生成したトレースログを第1の記憶装置に格納し、
第2の情報処理装置が、
前記第1の記憶装置に格納されたトレースログに基づいて、該トレースログに含まれるファイルの識別情報と版数情報との組に対応するソースコードを取得し、
トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、
文字列を追加したトレースログを第2の記憶装置に格納する、
ことを特徴とするトレースログ取得方法。
(付記13) 第3の情報処理装置が、プログラムのソースコードに含まれるログ取得命令に、該ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号を該ファイルの識別情報として設定すると共に、該ソースコードの版数情報を該ログ取得命令に設定し、
前記第3の情報処理装置が、ソースコードが記述されたファイルのファイル名、該ファイル名に対応する符号、および該ソースコードの版数情報を有する管理情報を、該ソースコードが記述されたファイルに関連付けて、第3の記憶装置に格納し、
前記第1の情報処理装置は、ファイル名に一意に対応付けられた符号が、ファイルの識別情報として設定されたログ取得命令を含むプログラムを実行し、
前記第2の情報処理装置は、前記第3の記憶装置に格納された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報とを含む管理情報に関連付けられたファイルから、ソースコードを取得する、
ことを特徴とする付記12記載のトレースログ取得方法。
1〜3 情報処理装置
1a 版数管理手段
1b 記憶装置
1c 管理情報
1e,1f ファイル
2a プログラム実行手段
2b トレースログ生成手段
2c 記憶装置
2d トレースログ
3a ソースコード取得手段
3b 文字列追加手段
3c 記憶装置
3d 可読トレースログ

Claims (9)

  1. プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得するプログラム実行手段と、
    前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および前記プログラム実行手段が取得した変数の値を含むトレースログを生成し、記憶装置に格納するトレースログ生成手段と、
    を有することを特徴とする情報処理装置。
  2. ログ取得命令には、ソースコード内において前記ログ取得命令が記述された行の行番号が設定されており、
    前記トレースログ生成手段は、前記実行段階になったログ取得命令に含まれている行番号を含むトレースログを生成することを特徴とする請求項1記載の情報処理装置。
  3. プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数の値を含むトレースログに基づいて、該ファイルの識別情報と該版数情報との組に対応するソースコードを取得するソースコード取得手段と、
    トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、該文字列を追加したトレースログを記憶装置に格納する文字列追加手段と、
    を有することを特徴とする情報処理装置。
  4. トレースログに含まれるファイルの識別情報は、ソースコードが記述されたファイルに一意に対応付けられた符号であり、
    前記ソースコード取得手段は、ソースコードが記述されたファイルのファイル名と、該ファイルに一意に対応付けられた符号との対応関係が登録された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報との組に対応するファイルからソースコードを取得する、
    ことを特徴とする請求項3記載の情報処理装置。
  5. ファイルに一意に対応付けられた符号は、該ファイルのファイル名よりも少ないデータ量であることを特徴とする請求項4記載の情報処理装置。
  6. 前記文字列追加手段は、トレースログに含まれる符号に対応するファイル名を、該トレースログに追加することを特徴とする請求項4または5のいずれかに記載の情報処理装置。
  7. トレースログには、ソースコード内においてログ取得命令が記述された行の行番号が含まれており、
    前記文字列追加手段は、トレースログに基づいて取得されたソースコード内の、該トレースログに含まれる行番号で示される行に記述されているログ取得命令から、該トレースログに関連する文字列を抽出する、
    ことを特徴とする請求項3乃至6のいずれかに記載の情報処理装置。
  8. 第1の情報処理装置が、
    プログラムのソースコードが記述されたファイルの識別情報、該ソースコードの版数情報、および変数が設定されたログ取得命令を含むプログラムを実行し、
    ログ取得命令の実行段階になると、実行段階になったログ取得命令に設定された変数の値を取得し、
    前記実行段階になったログ取得命令に設定されたファイルの識別情報と版数情報、および取得した変数の値を含むトレースログを生成し、
    生成したトレースログを第1の記憶装置に格納し、
    第2の情報処理装置が、
    前記第1の記憶装置に格納されたトレースログに基づいて、該トレースログに含まれるファイルの識別情報と版数情報との組に対応するソースコードを取得し、
    トレースログに基づいて取得されたソースコードから、該トレースログに関連する文字列を抽出し、該抽出した文字列を該トレースログに追加し、
    文字列を追加したトレースログを第2の記憶装置に格納する、
    ことを特徴とするトレースログ取得方法。
  9. 第3の情報処理装置が、プログラムのソースコードに含まれるログ取得命令に、該ソースコードが記述されたファイルのファイル名に一意に対応付けられた符号を該ファイルの識別情報として設定すると共に、該ソースコードの版数情報を該ログ取得命令に設定し、
    前記第3の情報処理装置が、ソースコードが記述されたファイルのファイル名、該ファイル名に対応する符号、および該ソースコードの版数情報を有する管理情報を、該ソースコードが記述されたファイルに関連付けて、第3の記憶装置に格納し、
    前記第1の情報処理装置は、ファイル名に一意に対応付けられた符号が、ファイルの識別情報として設定されたログ取得命令を含むプログラムを実行し、
    前記第2の情報処理装置は、前記第3の記憶装置に格納された管理情報に基づいて、トレースログに含まれる符号に対応するファイル名を判断し、該ファイル名と該トレースログに含まれる版数情報とを含む管理情報に関連付けられたファイルから、ソースコードを取得する、
    ことを特徴とする請求項8記載のトレースログ取得方法。
JP2011052592A 2011-03-10 2011-03-10 情報処理装置、およびトレースログ取得方法 Pending JP2012190219A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011052592A JP2012190219A (ja) 2011-03-10 2011-03-10 情報処理装置、およびトレースログ取得方法
US13/356,066 US8745595B2 (en) 2011-03-10 2012-01-23 Information processing apparatus and method of acquiring trace log

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011052592A JP2012190219A (ja) 2011-03-10 2011-03-10 情報処理装置、およびトレースログ取得方法

Publications (1)

Publication Number Publication Date
JP2012190219A true JP2012190219A (ja) 2012-10-04

Family

ID=46797227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011052592A Pending JP2012190219A (ja) 2011-03-10 2011-03-10 情報処理装置、およびトレースログ取得方法

Country Status (2)

Country Link
US (1) US8745595B2 (ja)
JP (1) JP2012190219A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016076003A (ja) * 2014-10-03 2016-05-12 富士通株式会社 命令履歴分析プログラム、命令履歴分析装置、および、命令履歴分析方法
JP2016222017A (ja) * 2015-05-27 2016-12-28 京セラ株式会社 撮像装置、動作解析システム、車両、および動作解析方法
WO2019171439A1 (ja) * 2018-03-05 2019-09-12 株式会社Fuji トレース装置およびトレース方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145350A1 (en) * 2011-12-05 2013-06-06 Microsoft Corporation Efficient, large scale trace storage system
US8839204B2 (en) * 2012-11-08 2014-09-16 Concurix Corporation Determination of function purity for memoization
US9262416B2 (en) 2012-11-08 2016-02-16 Microsoft Technology Licensing, Llc Purity analysis using white list/black list analysis
CN103942225B (zh) * 2013-01-23 2018-06-08 阿里巴巴集团控股有限公司 一种混合型应用客户端的资源调用方法、客户端及系统
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US9047403B2 (en) 2013-02-11 2015-06-02 International Business Machines Corporation Debugger with previous version feature
JP2015043198A (ja) * 2013-07-22 2015-03-05 株式会社東芝 解析システム、解析方法および解析プログラム
JP6179331B2 (ja) * 2013-10-09 2017-08-16 富士通株式会社 ログ出力条件設定プログラム、装置、および方法
US9921946B2 (en) * 2015-09-16 2018-03-20 Nxp Usa, Inc. Method and system to display and browse program trace using source code decoration
US10503500B2 (en) * 2016-09-01 2019-12-10 Hitachi, Ltd. Inquiry response system and inquiry response method
US10606730B2 (en) * 2017-11-28 2020-03-31 Salesforce.Com, Inc. Networked digital data processor log file viewer
US10620937B1 (en) 2018-06-01 2020-04-14 Appian Corporation Automated backward-compatible function updates
WO2020045929A1 (en) 2018-08-27 2020-03-05 Samsung Electronics Co., Ltd. Code coverage method for embedded system on chip
CN110471843B (zh) * 2019-07-16 2021-03-26 北京三快在线科技有限公司 版本测试的方法、装置、存储介质及电子设备
CN111124906B (zh) * 2019-12-17 2022-06-28 蚂蚁财富(上海)金融信息服务有限公司 基于动态埋点的跟踪方法、编译方法、装置和电子设备
US11397574B2 (en) * 2020-07-23 2022-07-26 International Business Machines Corporation Changes in source code
CN112749059A (zh) * 2021-01-13 2021-05-04 叮当快药科技集团有限公司 前端异常监控的方法、装置及系统
CN115658553B (zh) * 2022-12-26 2023-03-17 西安葡萄城软件有限公司 一种基于低代码平台的调试方法、系统及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5013A (en) * 1847-03-13 Improvement in apparatus for the manufacture of malleable iron
JPH0269837A (ja) * 1988-09-06 1990-03-08 Nec Corp プログラムデバック支援装置
JPH02224142A (ja) * 1989-02-27 1990-09-06 Nec Corp Prologソースレベル・デバッグシステム
JPH1173341A (ja) * 1997-08-29 1999-03-16 Nec Corp プログラム自動解析方式
JP2001331344A (ja) * 2000-05-23 2001-11-30 Nec Corp 組み込みシステムの障害情報トレーサ装置
JP2008210073A (ja) * 2007-02-26 2008-09-11 Mitsubishi Electric Corp ログデータサイズ削減装置及びログデータサイズ削減装置のログデータサイズ削減方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207246A (ja) 1999-01-13 2000-07-28 Toshiba Corp デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
US7457872B2 (en) * 2003-10-15 2008-11-25 Microsoft Corporation On-line service/application monitoring and reporting system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5013A (en) * 1847-03-13 Improvement in apparatus for the manufacture of malleable iron
JPH0269837A (ja) * 1988-09-06 1990-03-08 Nec Corp プログラムデバック支援装置
JPH02224142A (ja) * 1989-02-27 1990-09-06 Nec Corp Prologソースレベル・デバッグシステム
JPH1173341A (ja) * 1997-08-29 1999-03-16 Nec Corp プログラム自動解析方式
JP2001331344A (ja) * 2000-05-23 2001-11-30 Nec Corp 組み込みシステムの障害情報トレーサ装置
JP2008210073A (ja) * 2007-02-26 2008-09-11 Mitsubishi Electric Corp ログデータサイズ削減装置及びログデータサイズ削減装置のログデータサイズ削減方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016076003A (ja) * 2014-10-03 2016-05-12 富士通株式会社 命令履歴分析プログラム、命令履歴分析装置、および、命令履歴分析方法
JP2016222017A (ja) * 2015-05-27 2016-12-28 京セラ株式会社 撮像装置、動作解析システム、車両、および動作解析方法
WO2019171439A1 (ja) * 2018-03-05 2019-09-12 株式会社Fuji トレース装置およびトレース方法

Also Published As

Publication number Publication date
US20120233600A1 (en) 2012-09-13
US8745595B2 (en) 2014-06-03

Similar Documents

Publication Publication Date Title
JP2012190219A (ja) 情報処理装置、およびトレースログ取得方法
JP4619698B2 (ja) コードセグメント作成方法及びそのシステム
KR100661393B1 (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
US20140366005A1 (en) Abstract layer for automatic user interface testing
US20120116561A1 (en) Program testing apparatus, method of testing a program, and program testing program
US20100325540A1 (en) Software development tool for providing user context information to improve message quality at development time
KR100456023B1 (ko) 절차 지향 프로그램을 컴포넌트 기반의 시스템으로래핑하기 위한 방법 및 그 장치
US9235384B2 (en) Language notification generator
CN107015903B (zh) 一种界面测试程序的生成方法、装置及电子设备
Paiva et al. From requirements to automated acceptance tests with the RSL language
CN101727385A (zh) 用于处理用户接口信息变化的方法和系统
JP2004341671A (ja) 情報処理システム、制御方法、制御プログラム、及び記録媒体
US20230195825A1 (en) Browser extension with automation testing support
Jiang et al. Log-it: Supporting Programming with Interactive, Contextual, Structured, and Visual Logs
JP2018156133A (ja) コンパイラプログラム、情報処理装置およびコンパイル方法
CN115454702A (zh) 日志故障分析方法、装置、存储介质及电子设备
JP4507206B2 (ja) インターネット情報収集装置、プログラム及び方法
CN104361093A (zh) 一种通用的Web自动浏览导航方法
JP4867864B2 (ja) 性能データ収集・表示システム、性能データ表示装置、そのプログラム
JP2005234959A (ja) テンプレート作成装置、プログラム、および方法
JP7380851B2 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
GB2397905A (en) Method for automatically generating and ordering test scripts
JP2013037580A (ja) 情報処理装置
Ziegenhagen et al. Expanding tracing capabilities using dynamic tracing data
JP2007094453A (ja) プログラム開発支援システム、プログラム開発支援方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141118