(57)【要約】【課題】  従来は、プログラムから出力されるログを解析し、プログラムの動作過程を追跡することに多くの時間を要している。本発明は、プログラムの動作過程が分るように、予めプログラムの流れを意味づける指標を含んだログ出力コードをプログラムに組み込み、ログ出力後に関連付けを行うことでプログラムの動作過程別にログを分類して表示するプログラム動作過程追跡支援表示方法及びシステムを提供することを目的とする。【解決手段】  開発したプログラムの動作過程を追跡するために、あらかじめプログラムの動作過程を示した指標を含んだログ出力コードをプログラムに組み込み、ログ出力後にログ同士で関連付けを行い、指標別にログを分類し、その指標をもとにプログラムの動作過程を木構造のように階層的に表示することで、プログラムを動作過程別に追跡できる。【選択図】  図１
2007065718.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いて構築されたプログラム動作追跡支援表示システムにおけるプログラム動作追跡支援表示方法であって、
コンピュータが備えるログ出力設定手段が、ログを取る対象のプログラムである組込前プログラム中のプログラム追跡開始箇所及びプログラム追跡箇所を設定する工程と、
コンピュータが備えるログ出力設定反映手段が、前記組込前プログラムに対して、前記設定されたプログラム追跡開始箇所に、前記組込前プログラムの動作過程を示す追跡キーと前記追跡キーに従属する追跡値で構成される追跡属性を生成し登録追跡属性として登録するとともに、既に登録されている登録済み追跡属性と新たに生成された登録追跡属性を含む動作開始ログを出力するコードを組み込み、前記設定されたプログラム追跡箇所に、前記登録済み追跡属性を取得し該登録済み追跡属性を含んだ動作ログを出力するコードを組み込んで、組込後プログラムを生成する工程と、
コンピュータが備えるプログラム実行手段が、前記組込後プログラムを実行し、前記プログラム追跡開始箇所に組み込まれたコードを実行することにより前記動作開始ログを出力し、前記プログラム追跡箇所に組み込まれたコードを実行することにより前記動作ログを出力する工程と、
コンピュータが備える関連付け手段が、前記動作開始ログと前記動作ログ中の追跡属性を関連付ける工程と、
コンピュータが備える表示手段が、前記関連付けた追跡属性を、該関連性が分るように表示する工程と
を備えたことを特徴とするプログラム動作追跡支援表示方法。
【請求項２】
請求項１に記載のプログラム動作追跡支援表示方法において、
前記動作開始ログと前記動作ログ中の追跡属性を関連付ける工程は、
前記動作開始ログに含まれる前記登録済み追跡属性である動作開始ログ登録済み追跡属性と、前記動作開始ログに含まれる前記登録追跡属性である動作開始ログ登録追跡属性と、前記動作ログに含まれる前記登録済み追跡属性である動作ログ登録済み追跡属性とを抽出し、
前記動作開始ログ登録済み追跡属性と前記動作開始ログ登録追跡属性とを関連付けることにより、前記動作開始ログ同士を関連付けし、
２つの前記動作開始ログ登録追跡属性を関連付けることにより、前記動作開始ログ同士を関連付けし、
前記動作開始ログ登録追跡属性と前記動作ログ登録済み追跡属性とを関連付けることにより、前記動作開始ログと前記動作ログとを関連付けするものであり、
前記表示する工程は、
前記動作開始ログ登録追跡属性が保持する前記追跡キーを順序づけて選択し、
その追跡キーの順序に応じて、前記関連付けされた動作開始ログ及び動作ログを分類し、分類した動作開始ログと動作ログを表示する
ものであることを特徴とするプログラム動作追跡支援表示方法。
【請求項３】
１つ以上のコンピュータを用いて構築された、プログラムにログ出力コードを組み込む箇所を設定するログ出力設定環境と、前記プログラムに前記ログ出力コードを組み込んだ組み込み済みプログラムを実行するプログラム実行環境と、前記組み込み済みプログラムが出力するログを解析するログ解析環境とを備え、
前記ログ出力設定環境は、
前記プログラムの動作過程を示す追跡キーと前記追跡キーに従属する追跡値で構成される追跡属性を定義する手段と、
前記プログラムの追跡を開始するプログラム追跡開始箇所を定義する手段と、
前記プログラム追跡開始箇所に対応する前記プログラムの命令箇所の前に、前記追跡属性を保持する追跡属性保持プログラムに前記追跡属性を登録追跡属性として登録する手段と、
前記追跡属性保持プログラムに前記登録追跡属性の登録時に、前記追跡属性保持プログラムに登録済みである登録済み追跡属性と前記登録追跡属性を取得し、前記登録済み追跡属性と前記登録追跡属性を含んだ動作開始ログを出力するプログラム追跡開始処理を前記プログラムに組み込む手段と、
前記プログラムを追跡するプログラム追跡箇所を定義する手段と、
前記プログラム追跡箇所に対応する前記プログラムの命令箇所の後ろに、前記登録済み追跡属性を取得し、前記登録済み追跡属性を含んだ動作ログを出力するプログラム追跡処理を前記プログラムに組み込む手段と、
前記プログラム追跡開始処理と前記プログラム追跡処理を組み込んだ前記組み込み済みプログラムを生成する手段と
を備え、
前記プログラム実行環境は、
前記組み込み済みプログラムを実行する手段と、
前記プログラム追跡開始箇所に対応する前記組み込み済みプログラムの命令が実行されたときに前記動作開始ログを出力する手段と、
前記プログラム追跡箇所に対応する前記組み込み済みプログラムの命令が実行されたときに前記動作ログを出力する手段と
を備え、
前記ログ解析環境は、
前記動作開始ログと前記動作ログを読み込む手段と、
前記動作開始ログに含まれる前記登録済み追跡属性である動作開始ログ登録済み追跡属性と、前記動作開始ログに含まれる登録追跡属性である動作開始ログ登録追跡属性と、前記動作ログに含まれる前記登録済み追跡属性である動作ログ登録済み追跡属性を抽出する手段と、
前記動作開始ログ登録済み追跡属性と前記動作開始ログ登録追跡属性を関連付け、前記動作開始ログ同士を関連付けする関連付け手段１と、
２つの前記動作開始ログ登録追跡属性を関連付け、前記動作開始ログ同士を関連付けする関連付け手段２と、
前記動作開始ログ登録追跡属性と前記動作ログ登録済み追跡属性を関連付け、前記動作開始ログと前記動作ログの関連付けする関連付け手段３と、
前記動作開始ログ登録追跡属性が保持する前記追跡キーを順序づけて選択する追跡キー順序選択手段と、
選択した前記追跡キーのうち一つを処理中追跡キーとして取得する手段と、
前記ログ解析環境に読み込まれた前記動作開始ログ全てを分類対象集合として抽出する手段と、
前記処理中追跡キーと合致する前記追跡キーを保持する前記動作開始ログ登録追跡属性を保持する動作開始ログを、前記分類対象集合から分類済み動作開始ログとして抽出する抽出手段１と、
関連付け手段１、関連付け手段２、関連付け手段３を用いて、前記分類済み動作開始ログに関連付けられた前記動作開始ログ、前記動作ログを前記分類対象集合として抽出する抽出手段２と、
取得済みである前記処理中追跡キー全てを保持する前記動作ログ登録済み追跡属性を保持する前記動作ログを、前記分類対象集合から分類済み動作ログとして抽出する抽出手段３と、
前記処理中追跡キーを選択順に取得し、取得した前記処理中追跡キーごとに前記抽出手段１、前記抽出手段２、前記抽出手段３を実行することにより前記動作開始ログ、前記動作ログを分類する手段と、
前記分類済み動作開始ログと前記分類済み動作ログを表示する手段と
を備えたことを特徴とするプログラム動作追跡支援表示システム。
【請求項４】
請求項３に記載のプログラム動作追跡支援表示システムにおいて、
前記ログ解析環境では、前記分類済み動作開始ログを木構造での節とし、前記分類済み動作ログを木構造での葉として、前記組み込み済みプログラムの動作を木構造で表示することを特徴とするプログラム動作追跡支援表示システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムが出力するログの出力方法と出力箇所を指定し、出力されたログからプログラムの動作過程の追跡を支援するプログラム動作過程追跡支援表示方法及びシステムに関するものである。
【背景技術】
【０００２】
従来、プログラムの実行時にバグやエラーが発生した際に、それらの問題を突きとめるためにログを使用することが多く行われている。しかし、ログを大量に出力するプログラムでは、ログを解析し、原因となる箇所を特定することが難しく、プログラムを追跡することに時間がかかってしまう。それを回避すべく、プログラムの追跡に関して、必要なログを抽出して、専用のツールを使用してログの解析を容易にすることが行われている。そのような技術として、例えば下記特許文献１に記載のものが知られている。
【０００３】
下記特許文献１に記載のものは、プログラム中に予めロギング関数を組み込んでおき、ある条件に合致した場合にログを出力させ、必要なログのみをメモリに保存し、検索時に検索条件を指定して必要なログのみを抽出して整理するものである。ロギング関数は、区分、ロギング条件、データ長、プロセス名などのパラメータをもち、区分または区分とロギング条件に合致した場合にログを出力する関数である。またロギング関数で使用する区分は、単体テスト、複合テストなどテストの粒度の違いで使い分けるもので、０から２５５までの数字で割り当てられる。例えば、特定のログを参照する場合に、専用のツールを使用して区分と時刻をそれぞれ指定することで、必要なログを収集して解析するものである。
【特許文献１】特開２００１−３１８８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の技術における数字による区分は、テストの粒度ごとにログを分類・収集するために適当に数字を付けて区分けしただけのものであり、プログラムの動作追跡を行うため、という目的をもった区分ではない。従って、この区分によってプログラムの動作過程が分り易くなる、というものではなかった。
【０００５】
本発明の目的は、プログラムの動作過程が分るように、予めプログラムの流れを意味づける指標を含んだログ出力コードをプログラムに組み込み、ログ出力後に関連付けを行うことでプログラムの動作過程別にログを分類して表示するプログラム動作過程追跡支援表示方法及びシステムを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に係る発明は、コンピュータを用いて構築されたプログラム動作追跡支援表示システムにおけるプログラム動作追跡支援表示方法であって、コンピュータが備えるログ出力設定手段が、ログを取る対象のプログラムである組込前プログラム中のプログラム追跡開始箇所及びプログラム追跡箇所を設定する工程と、コンピュータが備えるログ出力設定反映手段が、前記組込前プログラムに対して、前記設定されたプログラム追跡開始箇所に、前記組込前プログラムの動作過程を示す追跡キーと前記追跡キーに従属する追跡値で構成される追跡属性を生成し登録追跡属性として登録するとともに、既に登録されている登録済み追跡属性と新たに生成された登録追跡属性を含む動作開始ログを出力するコードを組み込み、前記設定されたプログラム追跡箇所に、前記登録済み追跡属性を取得し該登録済み追跡属性を含んだ動作ログを出力するコードを組み込んで、組込後プログラムを生成する工程と、コンピュータが備えるプログラム実行手段が、前記組込後プログラムを実行し、前記プログラム追跡開始箇所に組み込まれたコードを実行することにより前記動作開始ログを出力し、前記プログラム追跡箇所に組み込まれたコードを実行することにより前記動作ログを出力する工程と、コンピュータが備える関連付け手段が、前記動作開始ログと前記動作ログ中の追跡属性を関連付ける工程と、コンピュータが備える表示手段が、前記関連付けた追跡属性を、該関連性が分るように表示する工程とを備えたことを特徴とする。
【０００７】
また請求項２に係る発明は、請求項１に記載のプログラム動作追跡支援表示方法において、前記動作開始ログと前記動作ログ中の追跡属性を関連付ける工程は、前記動作開始ログに含まれる前記登録済み追跡属性である動作開始ログ登録済み追跡属性と、前記動作開始ログに含まれる登録追跡属性である動作開始ログ登録追跡属性と、前記動作ログに含まれる前記登録済み追跡属性である動作ログ登録済み追跡属性とを抽出し、前記動作開始ログ登録済み追跡属性と前記動作開始ログ登録追跡属性とを関連付けることにより、前記動作開始ログ同士を関連付けし、２つの前記動作開始ログ登録追跡属性を関連付けることにより、前記動作開始ログ同士を関連付けし、前記動作開始ログ登録追跡属性と前記動作ログ登録済み追跡属性とを関連付けることにより、前記動作開始ログと前記動作ログとを関連付けするものであり、前記表示する工程は、前記動作開始ログ登録追跡属性が保持する前記追跡キーを順序づけて選択し、その追跡キーの順序に応じて、前記関連付けされた動作開始ログ及び動作ログを分類し、分類した動作開始ログと動作ログを表示するものであることを特徴とする。
【０００８】
請求項３に係る発明は、１つ以上のコンピュータを用いて構築された、プログラムにログ出力コードを組み込む箇所を設定するログ出力設定環境と、前記プログラムに前記ログ出力コードを組み込んだ組み込み済みプログラムを実行するプログラム実行環境と、前記組み込み済みプログラムが出力するログを解析するログ解析環境とを備え、前記ログ出力設定環境は、前記プログラムの動作過程を示す追跡キーと前記追跡キーに従属する追跡値で構成される追跡属性を定義する手段と、前記プログラムの追跡を開始するプログラム追跡開始箇所を定義する手段と、前記プログラム追跡開始箇所に対応する前記プログラムの命令箇所の前に、前記追跡属性を保持する追跡属性保持プログラムに前記追跡属性を登録追跡属性として登録する手段と、前記追跡属性保持プログラムに前記登録追跡属性の登録時に、前記追跡属性保持プログラムに登録済みである登録済み追跡属性と前記登録追跡属性を取得し、前記登録済み追跡属性と前記登録追跡属性を含んだ動作開始ログを出力するプログラム追跡開始処理を前記プログラムに組み込む手段と、前記プログラムを追跡するプログラム追跡箇所を定義する手段と、前記プログラム追跡箇所に対応する前記プログラムの命令箇所の後ろに、前記登録済み追跡属性を取得し、前記登録済み追跡属性を含んだ動作ログを出力するプログラム追跡処理を前記プログラムに組み込む手段と、前記プログラム追跡開始処理と前記プログラム追跡処理を組み込んだ前記組み込み済みプログラムを生成する手段とを備え、前記プログラム実行環境は、前記組み込み済みプログラムを実行する手段と、前記プログラム追跡開始箇所に対応する前記組み込み済みプログラムの命令が実行されたときに前記動作開始ログを出力する手段と、前記プログラム追跡箇所に対応する前記組み込み済みプログラムの命令が実行されたときに前記動作ログを出力する手段とを備え、前記ログ解析環境は、前記動作開始ログと前記動作ログを読み込む手段と、前記動作開始ログに含まれる前記登録済み追跡属性である動作開始ログ登録済み追跡属性と、前記動作開始ログに含まれる登録追跡属性である動作開始ログ登録追跡属性と、前記動作ログに含まれる前記登録済み追跡属性である動作ログ登録済み追跡属性を抽出する手段と、前記動作開始ログ登録済み追跡属性と前記動作開始ログ登録追跡属性を関連付け、前記動作開始ログ同士を関連付けする関連付け手段１と、２つの前記動作開始ログ登録追跡属性を関連付け、前記動作開始ログ同士を関連付けする関連付け手段２と、前記動作開始ログ登録追跡属性と前記動作ログ登録済み追跡属性を関連付け、前記動作開始ログと前記動作ログの関連付けする関連付け手段３と、前記動作開始ログ登録追跡属性が保持する前記追跡キーを順序づけて選択する追跡キー順序選択手段と、選択した前記追跡キーのうち一つを処理中追跡キーとして取得する手段と、前記ログ解析環境に読み込まれた前記動作開始ログ全てを分類対象集合として抽出する手段と、前記処理中追跡キーと合致する前記追跡キーを保持する前記動作開始ログ登録追跡属性を保持する動作開始ログを、前記分類対象集合から分類済み動作開始ログとして抽出する抽出手段１と、関連付け手段１、関連付け手段２、関連付け手段３を用いて、前記分類済み動作開始ログに関連付けられた前記動作開始ログ、前記動作ログを前記分類対象集合として抽出する抽出手段２と、取得済みである前記処理中追跡キー全てを保持する前記動作ログ登録済み追跡属性を保持する前記動作ログを、前記分類対象集合から分類済み動作ログとして抽出する抽出手段３と、前記処理中追跡キーを選択順に取得し、取得した前記処理中追跡キーごとに前記抽出手段１、前記抽出手段２、前記抽出手段３を実行することにより前記動作開始ログ、前記動作ログを分類する手段と、前記分類済み動作開始ログと前記分類済み動作ログを表示する手段とを備えたことを特徴とする。
【０００９】
請求項４に係る発明は、請求項３に記載のプログラム動作追跡支援表示システムにおいて、前記ログ解析環境では、前記分類済み動作開始ログを木構造での節とし、前記分類済み動作ログを木構造での葉として、前記組み込み済みプログラムの動作を木構造で表示することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ログを取る対象のプログラムの動作過程を表すログ出力コードを当該対象プログラムに組み込んでおくため、多くのログをユーザが定義した指標で分類することが可能となり、分類したログを専用の表示ツールで表示することで、プログラムの動作過程の追跡が容易となる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を用いて本発明を実施する場合の一形態を具体的に説明する。
【００１２】
図１は、本発明の実施形態に係るシステム構成図を示す。本システムは、ログ出力開発環境１と、アプリケーションサーバ２と、組込前プログラム８とを備える。ログ出力開発環境１は、ログ出力設定プログラム３、ログ出力設定反映プログラム４、関連付け定義プログラム５、及び、コンテキストツリービュー表示プログラム６が動作する環境であり、ログの出力設定や編集を行う部分である。アプリケーションサーバ２は、ログを取る対象であるプログラムが動作する環境であり、トラッキングコンテキスト管理プログラム７と組込後プログラム９が動作する。組込前プログラム８は、組込後プログラム９にログ出力コードが組み込まれる前のプログラムで、すでに完成済みのものである。組込前プログラム８（あるいは組込後プログラム９）は、ログを取る対象のプログラムである。
【００１３】
ログ出力開発環境１において、ログ出力設定プログラム３は、コンテキスト・ライフサイクルログ１０と実行情報ログ１１を出力させるためのコード（プログラム）を組込前プログラム８に組み込むための設定プログラムである。ログ出力設定プログラム３は、図３のコンテキスト・ライフサイクルログ設定画面３０を用いて組込前プログラム８中のトラッキングコンテキスト（組込後プログラム９の動作過程を表す）の生成箇所をユーザに設定させ、また図５の実行情報ログ設定画面５０を用いて組込前プログラム８中の実行情報ログ１１を出力するコードを組み込む箇所をユーザに設定させる。
【００１４】
ログ出力設定反映プログラム４は、ログ出力設定プログラム３からログ出力コードを組み込む箇所の設定情報を読み込み、組込前プログラム８のバイトコードを操作し、ログ出力コードを組み込むプログラムである。本実施形態では、バイトコード操作にJavassistを使用する。
【００１５】
関連付け定義プログラム５は、組込後プログラム９の実行中に出力されたコンテキスト・ライフサイクルログ１０と実行情報ログ１１の２種類のログをトラッキングコンテキストで関連付けるプログラムである（トラッキングコンテキストについては図２−１で説明する）。コンテキストツリービュー表示プログラム６は、組込後プログラム９の動作過程を追跡できるように、トラッキングコンテキストと関連付け定義プログラム５で関連付けした実行情報ログ１１を表示するプログラムである。
【００１６】
アプリケーションサーバ２において、トラッキングコンテキスト管理プログラム７は、コンテキストキーとコンテキスト値からなるトラッキングコンテキストを登録・管理するプログラムである（コンテキストキーとコンテキスト値については図２−１で説明する）。組込後プログラム９は、組込前プログラム８にログ出力設定反映プログラム４でログ出力コードを組み込んだプログラムである。
【００１７】
以上のように、ログ出力設定プログラム３により、組込前プログラム８中のトラッキングコンテキストを生成する箇所と実行情報ログを出力する箇所を設定し、その設定に応じてログ出力設定反映プログラム４により組込前プログラム８に所出のコードを組み込む。アプリケーションサーバ２上で組込後プログラム９を実行すると、上記設定箇所でコンテキスト・ライフサイクルログ１０や実行情報ログ１１が出力される。その後、関連付け定義プログラム５により、コンテキスト・ライフサイクルログ１０と実行情報ログ１１とをトラッキングコンテキストで関連付ける。コンテキストツリービュー表示プログラム６により、上記関連付けした実行情報ログ１１を表示する。これにより、組込後プログラム９の動作過程が追跡できるように実行情報ログ１１を参照することができる。なお、ログ出力開発環境１とアプリケーションサーバ２は、コンピュータ上で上述の各プログラムを動作させることにより実現しているものである。
【００１８】
図２−１は、トラッキングコンテキストの定義を示す図である。トラッキングコンテキスト２１は、コンテキストキー２２とコンテキスト値２３からなり、組込後プログラム９の動作過程を表す識別子である。
【００１９】
図２−２は、組込後プログラム９が実行されたとき、組込後プログラム９の動作過程を表すトラッキングコンテキストを出力する様子を表した図である。
【００２０】
矢印２４は、組込後プログラム９の実行の進度を表したものである。矢印２４の進行方向に進むにつれて、組込後プログラム９内の処理が次々と実行されていることを表す。
【００２１】
命令２５ａは、組込後プログラム９の実行時に処理される命令である。上述したログ出力設定プログラム３及びログ出力設定反映プログラム４により、この命令２５ａを実行する前の位置でトラッキングコンテキストを出力するコンテキスト・ライフサイクルログ出力処理のコードが組み込まれているものとする。そのコンテキスト・ライフサイクルログ出力処理によって、コンテキスト・ライフサイクルログ２５ｂが出力される。コンテキスト・ライフサイクルログ２５ｂに含まれるトラッキングコンテキスト（ここでは「ThreadID」というコンテキストキーと「TC01」というコンテキスト値からなるトラッキングコンテキスト）は、新たに生成されたトラッキングコンテキストであり、組込後プログラム９の動作追跡時の起点であることを表す。ここで新たに生成されたトラッキングコンテキストは、トラッキングコンテキスト管理プログラム７に登録される。
【００２２】
命令２５ｃと命令２５ｅは、命令２５ａと同様である。すなわち、命令２５ｃ，２５ｅの前にトラッキングコンテキストを出力するコードが組み込まれているので、これによりコンテキスト・ライフサイクルログ２５ｄ、２５ｆが出力される。新たに生成されたトラッキングコンテキストのトラッキングコンテキスト管理プログラム７への登録も、命令２５ａにおけるのと同様である。コンテキスト・ライフサイクルログ２５ｄ，２５ｆは、コンテキスト・ライフサイクルログ２５ｂと同様のものであり、２５ｄでは「SessionID」というコンテキストキーと「SC01」というコンテキスト値からなるトラッキングコンテキストが、２５ｆでは「RemoteID」というコンテキストキーと「RC01」というコンテキスト値からなるトラッキングコンテキストが、それぞれ出力されている。
【００２３】
命令２５ｇは組込後プログラム９の実行時に処理される命令である。上述したログ出力設定プログラム３及びログ出力設定反映プログラム４により、この命令２５ｇを実行した後の位置で生成されたトラッキングコンテキストを破棄する処理のコードが組み込まれているものとする。トラッキングコンテキストを破棄する処理によって、生成されたトラッキングコンテキスト（ここではコンテキストキー「RemoteID」とコンテキスト値「RC01」）がトラッキングコンテキスト管理プログラム７から削除され、削除を知らせるコンテキスト・ライフサイクルログが出力される。これにより、組込後プログラム９でトラッキングコンテキストが削除された箇所が、組込後プログラム９の動作追跡時の終点となる。
【００２４】
命令２５ｈと命令２５ｉは命令２５ｇと同様である。すなわち、命令２５ｈと命令２５ｉの後にトラッキングコンテキストを破棄するコードが組み込まれているので、これによりトラッキングコンテキストがトラッキングコンテキスト管理プログラム７から削除され、削除を知らせるコンテキスト・ライフサイクルログが出力される。これにより、組込後プログラム９でトラッキングコンテキストが削除された箇所が組込後プログラム９の動作追跡時の終点となる。命令２５ｈではコンテキストキー「SessionID」とコンテキスト値「SC01」からなるトラッキングコンテキストが、命令２５ｉではコンテキストキー「ThreadID」とコンテキスト値「TC01」からなるトラッキングコンテキストがそれぞれトラッキングコンテキスト管理プログラム７から削除される。
【００２５】
命令２６ａは、組込後プログラム９の実行時に処理される命令である。上述したログ出力設定プログラム３及びログ出力設定反映プログラム４により、この命令２６ａを実行するときに実行情報ログを出力する実行情報ログ出力処理のコードが組み込まれているものとする。その実行情報ログ出力処理によって、実行情報ログ２６ｂが出力される。実行情報ログ２６ｂには、生成済みのトラッキングコンテキスト（トラッキングコンテキスト管理プログラム７に登録されているもの）が出力される。命令２６ａの時点では「ThreadID/TC01」が生成済みであるので、実行情報ログ２６ｂではその生成済みトラッキングコンテキストが出力されている。これにより、実行情報ログと組込後プログラム９の命令との対応を取ることができ、特定のトラッキングコンテキストをもとに実行情報ログを辿ることで組込後プログラム９の命令を辿ることができ、組込後プログラム９の動作過程を追跡することができる。
【００２６】
命令２６ｃ，２６ｅ，２６ｇは、命令２６ａと同様である。すなわち、命令２６ｃ，２６ｅ，２６ｇを実行するときに実行情報ログを出力するコードが組み込まれているので、これにより実行情報ログ２６ｄ，２６ｆ，２６ｉが出力される。
【００２７】
矢印２７ａは、コンテキスト・ライフサイクルログ２５ｂが保持する、新たに生成されたトラッキングコンテキストによって識別された命令群の範囲を表す。矢印２７ｂも矢印２７ａと同様に、コンテキスト・ライフサイクルログ２５ｄが保持する、新たに生成されたトラッキングコンテキストによって識別された命令群の範囲を表す。矢印２７ｃも矢印２７ａと同様に、コンテキスト・ライフサイクルログ２５ｆが保持する、新たに生成されたトラッキングコンテキストによって識別された命令群の範囲を表す。なお、コンテキスト・ライフサイクルログと実行情報ログの具体的なログフォーマットについては、図６，７で詳しく説明する。
【００２８】
図３は、コンテキスト・ライフサイクルログ設定画面３０の例を示す。コンテキスト・ライフサイクルログ設定画面３０は、組込後プログラム９の動作過程を表すトラッキングコンテキスト２１の生成箇所を指定する画面である。ユーザがログ出力設定プログラム３を起動するとログ出力設定プログラム画面が表示されるが、該画面ではコンテキスト・ライフサイクルログタグ３５と実行情報ログタグ３６が表示される。図３は、ログ出力設定プログラム画面中でコンテキスト・ライフサイクルログ設定画面３０を表示する際に押すコンテキスト・ライフサイクルログタグ３５を押したときの画面を示している。なお、ログ出力設定プログラム３を起動したときの初期画面は、コンテキスト・ライフサイクルログ設定画面３０とする。
【００２９】
図３のコンテキスト・ライフサイクルログ設定画面３０において、トラッキングコンテキスト出力項目３１は、出力するトラッキングコンテキストを決定する項目である。３１ａ、３１ｂ、３１ｃはそれぞれ組込後プログラム９の動作過程を追跡する項目にユーザが任意に指定した名前である。追加ボタン３２は、新たにトラッキングコンテキスト出力項目３１を追加する場合に押すボタンである。削除ボタン３３は、トラッキングコンテキスト出力項目３１において設定したトラッキングコンテキスト２１を削除する場合に、削除する項目を選んでから押すボタンである。生成ボタン３４は、図３の画面で設定したコンテキスト・ライフサイクルログの設定と後述する図５の画面で設定した実行情報ログの設定を組込前プログラム８に反映させるために使用するボタンである。
【００３０】
図４−１は、トラッキングコンテキスト設定画面４０の例を示す。トラッキングコンテキスト設定画面４０は、組込後プログラム９の実行中にトラッキングコンテキスト２１を生成させる項目の追加を行う設定画面である。この画面４０は、図３の画面で追加ボタン３２を押したとき表示される。
【００３１】
コンテキスト名４１は、組込後プログラム９を追跡する動作過程を示す動作追跡名を入力する欄である。ここで入力した名前が、図３の画面３０で３１ａ，３１ｂ，３１ｃのように表示される。
【００３２】
パッケージ名４２ｂとクラス名４２ｃとメソッド名４２ｄとメソッドシグネチャ４２ｅは、それぞれトラッキングコンテキスト２１を出力する箇所のパッケージ名、クラス名、メソッド名、及びメソッドシグネチャを入力する欄である。それぞれの欄にトラッキングコンテキストを生成させる箇所を入力するが、この入力に関して、「＊」という文字が入力できる。「＊」は、例えばクラスの指定に「Action＊」と入力した場合、クラス名の先頭に"Action"という名前を持つクラス全てがコードを組み込む対象のクラスになることを意味する。
【００３３】
ルールタイプ４２ａは、「include」と「exclude」を持ち、どちらかを選択する。「include」が選択された場合は、４２ｂ〜４２ｅで指定されたパッケージ、クラス、メソッド、及びメソッドシグネチャが組込前プログラム８内でマッチする箇所に、後述するトラッキングコンテキストコード入力欄４３で記述されたコードが組み込まれ、プログラム実行中に当該コードが組み込まれた箇所でトラッキングコンテキストが生成出力される。「exclude」が選択された場合は、４２ｂ〜４２ｅで指定されたパッケージ、クラス、メソッド、及びメソッドシグネチャの箇所がコードを組み込む対象から外される。トラッキングコンテキストコード入力欄４３は、上記で指定した箇所に組み込むコードを記述する欄である。
【００３４】
追加ボタン４４は、トラッキングコンテキスト２１を出力する指定箇所を新たに追加するときに押すボタンである。削除ボタン４５は、トラッキングコンテキスト２１を出力する指定箇所を削除する場合に押すボタンである。
【００３５】
生成タグ４６は組込後プログラム９の実行中にトラッキングコンテキスト２１を生成させるための設定を行う画面に切り替えるタグである。トラッキングコンテキスト設定画面４０の初期画面は、生成タグ４６を押した時の画面とする。破棄タグ４７は生成したトラッキングコンテキスト２１をトラッキングコンテキスト管理プログラム７から削除するための設定を行う画面に切り替えるタグである。
【００３６】
図４−２は破棄タグ４７を押して表示される画面の例である。破棄タグ４７を押して表示される設定画面は図４−１の設定画面と変わらず、設定する項目も同様に変わらない。また設定項目の内容は、トラッキングコンテキスト２１の生成で設定した、トラッキングコンテキストコード入力欄４３以外の項目の内容が反映される。
【００３７】
図５は、実行情報ログ設定画面５０の例を示す。この画面は、図３の画面において、実行情報ログタグ３６を押すことにより表示される。実行情報ログ設定画面５０は、組込前プログラム８に実行情報ログを出力するコードを組み込む箇所を設定する画面である。
【００３８】
ルールタイプ５１ａ、パッケージ名５１ｂ、クラス名５１ｃ、メソッド名５１ｄ、及びメソッドシグネチャ５１ｅは、それぞれ、図４−１で説明したトラッキングコンテキスト２１を出力する箇所の設定項目４２ａ〜４２ｅと同様に、実行情報ログを出力するコードを組み込む箇所の設定項目である。追加ボタン５２は、実行情報ログを出力する指定箇所を追加する場合に押すボタンである。削除ボタン５３は、指定箇所を削除する場合に押すボタンである。実行情報ログを出力するコードは規定のものであるので、図４−１のコード入力欄４３のようなものは図５では不要である。
【００３９】
図６は、出力されるコンテキスト・ライフサイクルログ１０のログフォーマットを示す図である。時間情報６１は、当該コンテキスト・ライフサイクルログが組込後プログラム９から出力された時間を表す。生成済みコンテキストキー６２ａは、組込後プログラム９が当該コンテキスト・ライフサイクルログを出力する際にすでにトラッキングコンテキスト管理プログラム７に登録されているコンテキストキー２２を表す。生成済みコンテキスト値６２ｂは、組込後プログラム９が当該コンテキスト・ライフサイクルログを出力する際にすでにトラッキングコンテキスト管理プログラム７に登録されている前記コンテキストキー６２ａに従属するコンテキスト値２３を表す。生成済みトラッキングコンテキスト６２は、生成済みコンテキストキー６２ａと生成済みコンテキスト値６２ｂからなるトラッキングコンテキストを表す。
【００４０】
生成コンテキストキー６３ａは、組込後プログラム９が新たに生成したトラッキングコンテキストのコンテキストキーである。生成コンテキスト値６３ｂは、組込後プログラム９が新たに生成したトラッキングコンテキストのコンテキスト値である。生成トラッキングコンテキスト６３は、生成コンテキストキー６３ａと生成コンテキスト値６３ｂからなるトラッキングコンテキストを表す。生成済みコンテキストキー６２ａと生成済みコンテキスト値６２ｂとの間、及び、生成コンテキストキー６３ａと生成コンテキスト値６３ｂとの間は、それぞれ「/」で区切る。またトラッキングコンテキストごとに「：」で区切る。生成済みトラッキングコンテキスト６２は、複数列挙可能であり、生成トラッキングコンテキストが生成された順で出力される。
【００４１】
コンテキスト・ライフサイクルログファイル６４は、実際に出力されるコンテキスト・ライフサイクルログの例である。このコンテキスト・ライフサイクルログファイル６４では、１行で１つのコンテキスト・ライフサイクルログを表記している。
【００４２】
図７は、出力される実行情報ログ１１のログフォーマットを示す図である。時間情報７１は、組込後プログラム９から当該実行情報ログが出力された時間を表す。クラス名７２は、当該実行情報ログが出力されたクラスを表す。行番号７３は、当該実行情報ログを出力するクラスファイルの行の数値を表す。生成済みコンテキストキー７４ａは、実行情報ログ設定画面５０で指定した箇所においてトラッキングコンテキスト管理プログラム７が保持しているコンテキストキーを表す。生成済みコンテキスト値７４ｂは、実行情報ログ設定画面５０で指定した箇所においてトラッキングコンテキスト管理プログラム７が保持している生成済みコンテキストキー７４ａに従属したコンテキスト値を表す。生成済みトラッキングコンテキスト７４は、生成済みコンテキストキー７４ａと生成済みコンテキスト値７４ｂからなるトラッキングコンテキストである。生成済みコンテキストキー７４ａと生成済みコンテキスト値７４ｂとの間は「/」で区切る。またトラッキングコンテキストごとに「：」で区切る。生成済みトラッキングコンテキスト７４は、複数列挙可能であり、生成トラッキングコンテキストが生成された順で出力される。
【００４３】
実行情報ログファイル７５は、実際に出力される実行情報ログの例である。この実行情報ログファイル７５では、１行で１つの実行情報ログを表記している。
【００４４】
図８−１は、関連付け定義プログラム５の実行画面を示す図である。すでに組込後プログラム９が実行され、コンテキスト・ライフサイクルログ１０と実行情報ログ１１が出力されているものとする。これらのログを参照したいユーザは、関連付け定義プログラム５を起動し、これにより図８−１の画面が表示される。
【００４５】
アイコン８１は全てのログを表す図形である。アイコン８１の右にアイコン８１の名称が表示され、その名称は「ログ」と表示される。メニュー８２は、アイコン８１を右クリックした際に表示される項目である。「Correlation」８２ａは、メニュー８２の項目の一つで、関連付けの実行を開始することを指示する項目である。この項目を選択することにより、コンテキスト・ライフサイクルログ１０と実行情報ログ１１との関連付けが実行される。この関連付けについては、後に詳しく説明する。
【００４６】
関連付けを実行した後、メニュー８２の項目の一つである「Open Tree View」８２ｂを選択して、コンテキストツリービュー表示プログラム６の実行を指示する。
【００４７】
図８−２は、コンテキストツリービュー表示プログラム６を実行する際の実行方法を示す図である。図８−１の画面から「Open Tree View」８２ｂを選択すると、生成コンテキストキー一覧メニュー８３が表示される。生成コンテキストキー一覧メニュー８３は、上記「Correlation」８２ａを選択して関連付けを行った生成コンテキストキーの一覧を表示する。ただし、「決定」８５はメニュー８３に含まない。生成コンテキストキー一覧メニュー８３中の「ThreadID」８３ａと「SessionID」８３ｂは、生成コンテキストキーを表す。
【００４８】
生成コンテキストキー一覧サブメニュー８４は、生成コンテキストキー一覧メニュー８３で「ThreadID」８３ａを選択したときに表示されるサブメニューである。生成コンテキストキー一覧サブメニュー８４は、生成コンテキストキー一覧メニュー８３で選択されている「ThreadID」以外の生成コンテキストキーである「SessionID」８４ａと「決定」８４ｂを表示する。同様に、生成コンテキストキー一覧メニュー８３で「SessionID」８３ｂを選択したときに表示される生成コンテキストキー一覧サブメニュー８５を図示した。生成コンテキストキー一覧サブメニュー８５は、生成コンテキストキー一覧メニュー８３で選択されている「SessionID」以外の生成コンテキストキーである「ThreadID」８５ａと「決定」８５ｂを表示する。さらに、生成コンテキストキー一覧サブメニュー８４で「SessionID」８４ａを選択すると、その下位に生成コンテキストキー一覧サブメニュー８６が表示される。また、生成コンテキストキー一覧サブメニュー８５で「ThreadID」８５ａを選択すると、その下位に生成コンテキストキー一覧サブメニュー８７が表示される。生成コンテキストキー一覧サブメニュー８６や８７では、それまでに選択された生成コンテキストキー以外の生成コンテキストキーは無いので「決定」のみが表示されている。「決定」は、生成コンテキストキーを選択し終えた場合にクリックする項目である。「決定」を選択すると、そこまでに選択した生成コンテキストキーの順でコンテキストツリービュー表示プログラム６が実行される。
【００４９】
図９−１は、コンテキストツリービュー９１の画面の一例を表す図である。コンテキストツリービュー９１は、関連付け定義プログラム５によって関連付けされた実行情報ログを生成トラッキングコンテキストごとに分けて木構造で表示するものである。特に、コンテキストツリービュー９１は、図８−２で「ThreadID」８３ａ→「SessionID」８４ａ→「決定」の順に選択した場合の画面である。
【００５０】
アイコン９２は、コンテキストツリービュー９１のルートを表す。アイコン９２の右にアイコン９２の名称が表示され、動作過程を追跡するプログラム名が表示される。アイコン９３ａは、生成トラッキングコンテキストを表す。アイコン９３ａの隣にアイコン９３ａの名称が表示される。その名称は、関連付けで使用した生成コンテキストキーと生成コンテキスト値との組合せからなり、生成コンテキストキーと生成コンテキスト値の間を「/」で区切って表記する。アイコン９３ｂとアイコン９４ａとアイコン９４ｂはアイコン９３ａと同様である。アイコン９５ａは、関連付けした実行情報ログを表す。アイコン９５ｂとアイコン９５ｃもアイコン９５ａと同様である。線分９６は、生成トラッキングコンテキスト同士の関連や生成トラッキングコンテキストと実行情報ログとの関連を表す。
【００５１】
「Source Code」９７は、実行した組込後プログラム９のソースコードを表示するビューである。網掛け部分９８は、コンテキストツリービュー９１内の実行情報ログ９５ｂをクリックした際に、実行情報ログ９５ｂが出力された箇所に対応する命令を「Source Code」９７内で指し示す印である。実行情報ログ９５ａや実行情報ログ９５ｃでも、実行情報ログ９５ｂと同様に、各実行情報ログ９５ａや９５ｃをクリックすると、それらのログが出力された箇所に対応する命令が「Source Code」９７内で指し示される。
【００５２】
図９−２は、図９−１と異なるコンテキストツリービュー９１の画面の一例を示す図である。このコンテキストツリービューは、図８−２で「SessionID」８３ｂ→「ThreadID」８５ａ→「決定」の順に選択した場合の画面である。アイコン９４等は、図９−１のアイコンと同様のものである。実行情報ログのアイコンをクリックすると、「Source Code」９７内の対応する箇所が網掛け表示される点も同じである。
【００５３】
図１０−１は、コンテキスト・ライフサイクルログ内でのトラッキングコンテキスト２１の関連付けを示した図である。この図に示す関連付けは、図８−１の画面で「Correlation」８２ａを選択することによりメモリ上に生成される。
【００５４】
「生」１００ａは、生成トラッキングコンテキスト（図６の６３）を示している。「ThreadID」１００ｂは、「生」１００ａの生成コンテキストキーを表す。「TC01」１００ｃは、「生」１００ａの生成コンテキスト値を示している。コンテキスト・ライフサイクルログ１００は、「ThreadID」１００ｂと「TC01」１００ｃからなる「生」１００ａを含むログである。このコンテキスト・ライフサイクルログ１００は、図６のコンテキスト・ライフサイクルログファイル６４の１行目のコンテキスト・ライフサイクルログを読み出し、そこに含まれるトラッキングコンテキストに「生」１００ａを付してメモリ上に生成したものである。図６のコンテキスト・ライフサイクルログファイル６４の１行目のコンテキスト・ライフサイクルログを読み出したとき、読み出したトラッキングコンテキスト「ThreadID/TC01」が初めて出現したものであることを検出し（トラッキングコンテキスト管理プログラム７への登録情報を参照することで検出できる）、従ってこれは生成トラッキングコンテキストであるので、「生」１００ａが付されている。なお、図１０−１では、コンテキスト・ライフサイクルログ１００に時間情報などを図示していないが、読み出したログの情報は全てログ１００中に含まれるものとする。以下の他のログ１０１〜１０３についても同様である。
【００５５】
「済」１０１ａは、生成済みトラッキングコンテキスト（図６の６２）を示している。「ThreadID」１０１ｂは、「済」１０１ａの生成済みコンテキストキーである。「TC01」１０１ｃは、「済」１０１ａの生成済みコンテキスト値である。「生」１０１ｄは、「生」１００ａと同様に、「SessionID」１０１ｅという名称の生成コンテキストキーと「SC01」１０１ｆという値の生成コンテキスト値からなる生成トラッキングコンテキストであることを示している。コンテキスト・ライフサイクルログ１０１は、「済」１０１ａと「生」１０１ｄを含むログである。このコンテキスト・ライフサイクルログ１０１は、図６のコンテキスト・ライフサイクルログファイル６４の２行目のコンテキスト・ライフサイクルログを読み出し、そこに含まれる２つのトラッキングコンテキストにそれぞれ「済」１０１ａと「生」１０１ｄを付してメモリ上に生成したものである。図６のコンテキスト・ライフサイクルログファイル６４の２行目のコンテキスト・ライフサイクルログからは「ThreadID/TC01」と「SessionID/SC01」が読み出されるが、「ThreadID/TC01」は既に生成済みのトラッキングコンテキストであるので「済」１０１ａが付され、「SessionID/SC01」は初めて出現したものであるので「生」１０１ｄが付されている。なお、「SessionID/SC01」は、「ThreadID/TC01」の下位のトラッキングコンテキストとして初めて出現したものであると判断されるものである。従って、同じ「SessionID/SC01」であっても、後述するコンテキスト・ライフサイクルログ１０３が保持する「SessionID/SC01」は、「ThreadID/TC02」の下位なので、既に「生」１０１ｄのトラッキングコンテキストがあっても、「ThreadID/TC02」の下位の「SessionID/SC01」としては初めて出現したものであるので「生」１０１ｄが付される。
【００５６】
コンテキスト・ライフサイクルログ１０２は、コンテキスト・ライフサイクルログ１００と同様に、「生」１０２ａを含むログである。コンテキスト・ライフサイクルログ１０３は、コンテキスト・ライフサイクルログ１０１と同様に、「済」１０３ａと「生」１０３ｄを含むログである。これらのログ１０２，１０３は、それぞれ、上述したのと同様にして、図６のコンテキスト・ライフサイクルログファイル６４の３行目と４行目のコンテキスト・ライフサイクルログを読み出してメモリ上に生成したものである。
【００５７】
矢印１０４ａは、コンテキスト・ライフサイクルログ１００内の「生」１００ａのトラッキングコンテキストとコンテキスト・ライフサイクルログ１０１内の「済」１０１ａのトラッキングコンテキストとを関連付ける矢印である。「生」１００ａの「ThreadID」１００ｂ及び「TC01」１００ｃが、「済」１０１ａの「ThreadID」１０１ｂ及び「TC01」１０１ｃとそれぞれ等しいので、トラッキングコンテキスト２１の等しいもの同士をつなぐ矢印１０４ａを生成できる。この矢印１０４ａにより、トラッキングコンテキストを生成した順にコンテキスト・ライフサイクルログ１００とコンテキスト・ライフサイクルログ１０１を並び替えることができ、組込後プログラム９の動作過程をたどることができる。矢印１０４ｂも、同様にして、コンテキスト・ライフサイクルログ１０２と１０３との間で、トラッキングコンテキスト２１が等しいもの同士をつなぐことで生成する。
【００５８】
矢印１０５は、「生」１０１ｄの「SessionID」１０１ｅと「SC01」１０１ｆが、「生」１０３ｄの「SessionID」１０３ｅと「SC01」１０３ｆとそれぞれ等しく、トラッキングコンテキスト２１の等しいもの同士をつなぐことで、「生」１０１ｄと「生」１０３ｄが組込後プログラム９で同一の動作過程を示す矢印である。
【００５９】
図１０−２は、コンテキスト・ライフサイクルログと実行情報ログとの関連付けを示す図である。この図に示す関連付けは、図１０−１と同じく、図８−１の画面で「Correlation」８２ａを選択することによりメモリ上に生成される。コンテキスト・ライフサイクルログ１００，１０１，１０２，１０３及び矢印１０４ａ，１０４ｂ，１０５は、上記の図１０−１と同じものを示す。メモリ上に図１０−１のように関連付けをした上に、重ねて実行情報ログとの関連付けを追加するものである。
【００６０】
「ThreadID」１０６ｂは、生成済みコンテキストキーの名称を示している。「TC01」１０６ｃは、生成済みコンテキスト値の値を示している。実行情報ログ１０６は、「ThreadID」１０６ｂという名称の生成済みコンテキストキーと「TC01」１０６ｃという値の生成済みコンテキスト値からなる生成済みトラッキングコンテキストを含むログである。この実行情報ログ１０６は、図７の実行情報ログファイル７５の１行目の実行情報ログを読み出し、メモリ上に保持したものである。なお、図１０−２では、実行情報ログ１０６に時間情報などを図示していないが、読み出したログの情報は全てログ１０６中に含まれるものとする。以下の他の実行情報ログ１０７，１０８についても同様である。
【００６１】
実行情報ログ１０７は、実行情報ログ１０６と同様に、「ThreadID」１０７ｂという名称の生成済みコンテキストキーと「TC01」１０７ｃという値の生成済みコンテキスト値からなる生成済みトラッキングコンテキストと、「SessionID」１０７ｅという名称の生成済みコンテキストキーと「SC01」１０７ｆという値の生成済みコンテキスト値からなる生成済みトラッキングコンテキストを含むログであることを示している。この実行情報ログ１０７は、図７の実行情報ログファイル７５の２行目の実行情報ログを読み出し、メモリ上に保持したものである。
【００６２】
実行情報ログ１０８は、実行情報ログ１０６と同様に、「ThreadID」１０８ｂと「TC02」１０８ｃからなる生成済みトラッキングコンテキストと、「SessionID」１０８ｅと「SC01」１０８ｆからなる生成済みトラッキングコンテキストと、「RemoteID」１０８hと「RC01」１０８ｉからなる生成済みトラッキングコンテキストを含むログであることを示している。この実行情報ログ１０８は、図７の実行情報ログファイル７５の６行目の実行情報ログを読み出し、メモリ上に保持したものである。
【００６３】
矢印１０９ａは、コンテキスト・ライフサイクルログ１００内にある「ThreadID」１００ｂ及び「TC01」１００ｃの「生」１００ａと等しい生成済みトラッキングコンテキストを保持する実行情報ログ１０６，１０７を、それぞれ、「生」１００ａから単方向で関連付けて、コンテキスト・ライフサイクルログ１００が生成された後に実行情報ログ１０６，１０７が生成されたことを示す矢印である。
【００６４】
矢印１０９ｂと矢印１０９ｃと矢印１０９ｄは、矢印１０９ａと同様に、生成コンテキストキー２２と生成コンテキスト値２３が等しい生成済みトラッキングコンテキスト同士を関連付けることで、コンテキスト・ライフサイクルログ１０１，１０２，１０３が生成された後に実行情報ログ１０７，１０８，１０８がそれぞれ生成されたことを示す矢印である。
【００６５】
図１０−３は、図８−２で「ThreadID」８３ａ→「SessionID」８４ａ→「決定」８６の順に生成コンテキストキーを選択した場合に実行されるコンテキストツリービュー表示プログラム６の実行過程を示した図である。すでに関連付けは実行され、図１０−１及び図１０−２に示す情報がメモリ上に存在することを前提とする。
【００６６】
集合１１０は、関連付け定義プログラム５に読み込まれたコンテキスト・ライフサイクルログを全て抽出したグループを表す。すなわち、図１０−１及び図１０−２のようにメモリ上に生成された中のコンテキスト・ライフサイクルログ１００〜１０３等を全て抽出したものである。
【００６７】
「ThreadID」１１１ａは、生成コンテキストキーを表す。「TC01」１１１ｂは、生成コンテキスト値を表す。「Ｃ」１１１は、「ThreadID」１１１ａと「TC01」１１１ｂからなる生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログであることを表す。「Ｃ」１１１は、図１０−１及び図１０−２で説明したコンテキスト・ライフサイクルログ１００に対応するものである。
【００６８】
「Ｃ」１１２は、「Ｃ」１１１と同様に、「SessionID」と「SC01」からなる生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログであることを表す。「Ｃ」１１２は、図１０−１及び図１０−２で説明したコンテキスト・ライフサイクルログ１０１に対応するものである。
【００６９】
「Ｃ」１１３は、「Ｃ」１１１と同様に、「ThreadID」と「TC02」からなる生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログであることを表す。「Ｃ」１１３は、図１０−１及び図１０−２で説明したコンテキスト・ライフサイクルログ１０２に対応するものである。
【００７０】
「Ｃ」１１４は、「Ｃ」１１１と同様に、「SessionID」と「SC01」からなる生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログであることを表す。「Ｃ」１１４は、図１０−１及び図１０−２で説明したコンテキスト・ライフサイクルログ１０３に対応するものである。
【００７１】
集合１１５は、関連付け定義プログラム５により、「Ｃ」１１１と関連付けられたコンテキスト・ライフサイクルログと実行情報ログを全て抽出したグループを表す。
【００７２】
集合１１６は、集合１１５と同様に、関連付け定義プログラム５により「Ｃ」１１３と関連付けられたコンテキスト・ライフサイクルログと実行情報ログを全て抽出したグループを表す。
【００７３】
「ThreadID」１１７ａは、生成済みコンテキストキーを表す。「TC01」１１７ｂは、生成済みコンテキスト値を表す。「Ｅ」１１７は、「ThreadID」１１７ａと「TC01」１１７ｂからなる生成済みトラッキングコンテキストを保持する実行情報ログを表す。「Ｅ」１１７は、図１０−２で説明した実行情報ログ１０６に対応するものである。
【００７４】
「Ｅ」１１８は、「Ｅ」１１７と同様に、「ThreadID」と「TC01」からなる生成済みトラッキングコンテキストと「SessionID」と「SC01」からなる生成済みトラッキングコンテキストを保持する実行情報ログを表す。「Ｅ」１１８は、図１０−２で説明した実行情報ログ１０７に対応するものである。
【００７５】
「Ｃ」１１９は、「Ｃ」１１１と同様に、「SessionID」と「SC01」からなる生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログを表す。「Ｃ」１１９は、図１０−２で説明したコンテキスト・ライフサイクルログ１０１に対応するものである。
【００７６】
「Ｅ」１２０は、「Ｅ」１１７と同様に、「ThreadID」と「TC02」からなる生成済みトラッキングコンテキストと「SessionID」と「SC01」からなる生成済みトラッキングコンテキストと「RemoteID」と「RC01」からなる生成済みトラッキングコンテキストを保持する実行情報ログを表す。「Ｅ」１２０は、図１０−２で説明した実行情報ログ１０８に対応するものである。
【００７７】
「Ｃ」１２１は、「Ｃ」１１１と同様に、「SessionID」と「SC01」からなる生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログを表す。「Ｃ」１２１は、図１０−２で説明したコンテキスト・ライフサイクルログ１０３に対応するものである。
【００７８】
「葉」付き矢印１２２は、「Ｅ」１１７を集合１１５から選択してコンテキストツリービュー９１で葉として表示することを意味する。
【００７９】
集合１２３は、集合１１５と同様に、関連付け定義プログラム５により「Ｃ」１１９と関連付けられたコンテキスト・ライフサイクルログと実行情報ログを全て抽出したグループを表す。集合１２４は、集合１１５と同様に、関連付け定義プログラム５により「Ｃ」１２１と関連付けられたコンテキスト・ライフサイクルログと実行情報ログを全て抽出したグループを表す。
【００８０】
「Ｅ」１２５は、「Ｅ」１１７と同様に、「ThreadID」と「TC01」からなる生成済みトラッキングコンテキストと「SessionID」と「SC01」からなる生成済みトラッキングコンテキストを保持する実行情報ログを表す。「Ｅ」１２５は、図１０−２で説明した実行情報ログ１０７に対応するものである。
【００８１】
「Ｅ」１２６は、「Ｅ」１１７と同様に、「ThreadID」と「TC02」からなる生成済みトラッキングコンテキストと「SessionID」と「SC01」からなる生成済みトラッキングコンテキストと「RemoteID」と「RC01」からなる生成済みトラッキングコンテキストを保持する実行情報ログを表す。「Ｅ」１２６は、図１０−２で説明した実行情報ログ１０８に対応するものである。
【００８２】
「葉」付き矢印１２７は、「葉」付き矢印１２２と同様に、「Ｅ」１２５を集合１２３から選択してコンテキストツリービュー９１で葉として表示することを意味する。「葉」付き矢印１２８は、「葉」付き矢印１２２と同様に、「Ｅ」１２６を集合１２４から選択してコンテキストツリービュー９１で葉として表示することを意味する。「枝」付き矢印１２９ａは、「Ｃ」１１１と関連付けられたコンテキスト・ライフサイクルログと実行情報ログ全ての抽出を示し、かつ「Ｃ」１１１がコンテキストツリービュー９１で節の要素として表示されることを意味する。「枝」付き矢印１２９ｂは、「枝」付き矢印１２９ａと同様に、「Ｃ」１１３と関連付けられたコンテキスト・ライフサイクルログと実行情報ログ全ての抽出を示し、かつ「Ｃ」１１３がコンテキストツリービュー９１で節の要素として表示されることを意味する。「枝」付き矢印１２９ｃは、「枝」付き矢印１２９ａと同様に、「Ｃ」１１９と関連付けられたコンテキスト・ライフサイクルログと実行情報ログ全ての抽出を示し、かつ「Ｃ」１１９がコンテキストツリービュー９１で節の要素として表示されることを意味する。「枝」付き矢印１２９ｄは、「枝」付き矢印１２９ａと同様に、「Ｃ」１２１と関連付けられたコンテキスト・ライフサイクルログと実行情報ログ全ての抽出を示し、かつ「Ｃ」１２１がコンテキストツリービュー９１で節の要素として表示されることを意味する。
【００８３】
図１１は、本実施形態のシステム動作のフローチャート図である。
【００８４】
ログ出力開発環境１内のログ出力設定プログラム３を起動する（ステップ１１０１）。コンテキスト・ライフサイクルログ設定画面３０（図３）と実行情報ログ設定画面５０（図５）でそれぞれ出力する箇所を設定し、コンテキスト・ライフサイクルログ１０と実行情報ログ１１を出力するコードを組込前プログラム８に組み込む（ステップ１１０２、図１２参照）。ログ出力設定プログラム３の設定の終了後、組込後プログラム９をアプリケーションサーバ２上で実行する（ステップ１１０３）。
【００８５】
組込後プログラム９を実行すると、組込後プログラム９が、コンテキスト・ライフサイクルログ設定画面３０で指定したメソッドの実行前で生成トラッキングコンテキストをトラッキングコンテキスト管理プログラム７に登録する処理を実行し、生成トラッキングコンテキストと生成済みトラッキングコンテキストをトラッキングコンテキスト管理プログラム７から取得し、コンテキスト・ライフサイクルログ１０として出力する。また組込後プログラム９は、実行情報ログ設定画面５０で指定したメソッドの実行時にトラッキングコンテキスト管理プログラム７に登録してあるトラッキングコンテキスト２１を全て取得し、実行情報ログ１１として出力する（ステップ１１０４）。
【００８６】
ログ出力後、関連付け定義プログラム５を起動する（ステップ１１０５）。出力されたコンテキスト・ライフサイクルログ１０と実行情報ログ１１についてトラッキングコンテキスト２１をもとに３種類の関連付けを行う（ステップ１１０６、図１３参照）。関連付けした実行情報ログ１１をコンテキストツリービュー表示プログラム６で表示する（ステップ１１０７、図１４参照）。表示されたコンテキストツリービュー９１内の実行情報ログをクリックする（ステップ１１０８）。実行情報ログをクリックすると、クリックした実行情報ログのクラス名と行番号の情報をもとに、実行情報ログを出力した箇所が「Source Code」９７内に表示される（ステップ１１０９）。これにより組込後プログラム９の動作の追跡が可能となる。
【００８７】
図１２−１及び図１２−２は、図１１のステップ１１０２におけるログ出力設定プログラム３の操作のフローチャート図である。
【００８８】
ログ出力設定プログラム３でコンテキスト・ライフサイクルログタグ３５をクリックして、コンテキスト・ライフサイクルログ設定画面３０（図３）を開く（ステップ１２０１）。トラッキングコンテキスト出力項目３１を新たに追加する場合はステップ１２０３へ進み、追加しない場合はステップ１２０７へ進む（ステップ１２０２）。
【００８９】
追加する場合は、追加ボタン３２をクリックする（ステップ１２０３）。追加ボタン３２を押すと、トラッキングコンテキスト設定画面４０（図４−１）が起動する（ステップ１２０４）。トラッキングコンテキスト設定画面４０内のコンテキスト名称４１、ルールタイプ４２ａ、パッケージ名４２ｂ、クラス名４２ｃ、メソッド名４２ｄ、メソッドシグネチャ４２ｅ、及びトラッキングコンテキストコード入力欄４３をそれぞれ入力して、ログ出力コードを組込前プログラム８に組み込む箇所を指定する（ステップ１２０５）。設定項目は上から順に実行され、ログ出力設定反映プログラム４に反映される。
【００９０】
コンテキスト名称４１は、組込前プログラム８の動作過程を追跡する任意の名前を設定する。ルールタイプ４２ａは「include」か「exclude」のどちらかを選択する。パッケージ名４２ｂ、クラス名４２ｃ、メソッド名４２ｄ、及びメソッドシグネチャ４２ｅは、指定箇所に対するそれぞれの名称を入力する。トラッキングコンテキストコード入力欄４３に入力する内容は、トラッキングコンテキスト２１をトラッキングコンテキスト管理プログラム７に登録する処理である。
【００９１】
その入力例を、図４−１のトラッキングコンテキストコード入力欄４３内に示す。はじめに、String型の変数idを定義する。変数idは、取得したコンテキスト値２３を入力する際に使用する。次に、TrackingContextContainerクラスのgetInstanceメソッドを使用して、TrackingContextContainerクラスのインスタンスを取得する。TrackingContextContainerクラスはトラッキングコンテキスト管理プログラム７であり、トラッキングコンテキスト２１を登録して、コンテキスト・ライフサイクルログと実行情報ログに出力するクラスである。次に、doGetメソッドの第一引数にアクセスする$argsという変数を用意する。$args[]はObject型配列の変数で、０番目の要素が第一引数を表す。ここでは$args[0]がdoGetメソッドの第一引数であるHttpServletRequestクラスに対応する。$args[0]を使用してHttpServletRequestクラスのgetSessionメソッドを呼び、HttpSessionオブジェクトを取得する。次に、HttpSessionクラスのgetIdメソッドを使用して、セッションIDを取得し、変数idに代入する。セッションIDは、アプリケーションサーバ２が保持しているセッションを一意に識別できる値である。TrackingContextContainerクラスのsetContextメソッドを使用して、コンテキストキー２２とコンテキスト値２３をトラッキングコンテキスト管理プログラム７に登録する。setContextメソッドは、第一引数にコンテキストキー２２、第二引数にコンテキスト値２３をとる。setContextメソッドで使用するコンテキストキー２２について、組込後プログラム９の動作過程を識別できる任意の文字列を指定する。またsetContextメソッドで使用するコンテキスト値２３については、セッションＩＤが格納されている変数idを指定する。
【００９２】
以上のように入力した後、破棄タグ４７をクリックする（ステップ１２０６)。破棄タグ４７をクリックすると、生成されたトラッキングコンテキストを破棄する設定画面に変わり、未入力のトラッキングコンテキストコード入力欄４３にトラッキングコンテキスト２１を破棄するコードを入力する（ステップ１２０７）。トラッキングコンテキストコード入力欄以外の設定内容はトラッキングコンテキストの生成の際に設定した内容が反映されるので、既に入力されている。
【００９３】
その入力例を図４−２のトラッキングコンテキストコード入力欄４３内に示す。トラッキングコンテキストの生成する設定画面のトラッキングコンテキストコード入力欄４３内でトラッキングコンテキストを登録したtccオブジェクトと、TrackingContextContainerクラスのremoveContextメソッドを使用してトラッキングコンテキスト管理プログラム７に登録したトラッキングコンテキストを削除する。removeContextメソッドは引数に削除するトラッキングコンテキストのコンテキストキーをとる。
【００９４】
以上のように入力した後、終了ボタン４６をクリックする（ステップ１２０８）。他にトラッキングコンテキスト出力項目３１を追加する場合はステップ１２０２へ戻り、追加する手順を繰り返す。
【００９５】
トラッキングコンテキスト出力項目３１を追加するのでない場合はステップ１２０９に進む。トラッキングコンテキスト出力項目３１を削除する場合はステップ１２１０へ進み、削除しない場合はステップ１２１２へ進む（ステップ１２０９）。トラッキングコンテキスト出力項目３１を削除する場合は、削除する項目をクリックする（ステップ１２１０）。削除する項目をクリックした後に、削除ボタン３３をクリックすると、トラッキングコンテキスト出力項目３１から削除される（ステップ１２１１）。他にトラッキングコンテキスト出力項目を削除する場合はステップ１２０９へ戻り、削除する手順を繰り返す。
【００９６】
トラッキングコンテキスト出力項目３１を削除しない場合は、コンテキスト・ライフサイクルログの設定を終了し、実行情報ログタグ３６をクリックする（ステップ１２１２）。
【００９７】
組込前プログラム８に実行情報ログを出力する指定箇所を追加する場合はステップ１２１４へ進み、追加しない場合はステップ１２１６へ進む（ステップ１２１３）。指定箇所を追加する場合は、追加ボタン５２をクリックする（ステップ１２１４）。ルールタイプ５１ａ、パッケージ名５１ｂ、クラス名５１ｃ、メソッド名５１ｄ、及びメソッドシグネチャ５１ｅをそれぞれ入力し、実行情報ログの出力コードを組込前プログラム８に組み込む箇所を指定する（ステップ１２１５）他に追加する箇所がある場合はステップ１２１３へ戻り、追加する手順を繰り返す。
【００９８】
指定箇所を追加しない場合は、ステップ１２１６へ進む。指定箇所を削除する場合はステップ１２１７へ進み、削除しない場合はステップ１２１９へ進む（ステップ１２１６）。指定箇所を削除する場合、削除する項目をクリックする（ステップ１２１７）。その後に削除ボタン５３をクリックする（ステップ１２１８）。他に削除する箇所がある場合はステップ１２１６へ戻り、削除する手順を繰り返す。
【００９９】
削除する箇所がない場合は、生成ボタン３４をクリックする（ステップ１２１９）。生成ボタン３４をクリックすることで、ログ出力設定反映プログラム４がログ出力設定プログラム３の設定項目を読み込み、組込前プログラム８中の指定箇所にそれぞれのログ出力コードを組み込み、組込後プログラム９を生成する（ステップ１２２０）。
【０１００】
図１３は、図１１のステップ１１０６の関連付け定義プログラム５を実行する手順を示したフローチャート図である。
【０１０１】
図８−１においてアイコン８１を右クリックする（ステップ１３０１）。右クリックするとメニュー８２が表示される（ステップ１３０２）。メニュー８２の項目から「Correlation」８２ａを選択する（ステップ１３０３）。「Correlation」８２ａを選択すると、関連付け定義プログラム５が呼び出され（ステップ１３０４）、３種類の関連付けを実行する。
【０１０２】
まず１つ目の関連付けとして、コンテキスト・ライフサイクルログ内にある生成済みトラッキングコンテキストと、生成トラッキングコンテキストが等しい場合に、トラッキングコンテキスト２１の生成した順番を示す関連付けを行う（ステップ１３０５）。これは、図１０−１の矢印１０４ａ，１０４ｂを生成する関連付けである。２つ目の関連付けとして、コンテキスト・ライフサイクルログ内にある等しい生成トラッキングコンテキスト同士が存在する場合に、組込後プログラム９の同一の動作過程を示す関連付けを行う（ステップ１３０６）。これは、図１０−１の矢印１０５を生成する関連付けである。さらに、３つ目の関連付けとして、コンテキスト・ライフサイクルログ内の生成トラッキングコンテキストと、実行情報ログ内の生成済みトラッキングコンテキストが等しい場合に、コンテキスト・ライフサイクルログの後に実行情報ログが生成されたことを示す関連付けを行う（ステップ１３０７）。これは、図１０−２の矢印１０９ａ，１０９ｂ，１０９ｃ，１０９ｄを生成する関連付けである。
【０１０３】
図１４は、図１１のステップ１１０７のコンテキストツリービュー表示プログラム６の実行手順を示したフローチャート図である。
【０１０４】
関連付け定義プログラム５の実行後、アイコン８１を右クリックする（ステップ１４０１）。右クリックすると、メニュー８２が表示される（ステップ１４０２）。メニュー８２の項目の中から「Open Tree View」８２ｂを選択する（ステップ１４０３）。「Open Tree View」８２ｂを選択すると、生成コンテキストキー一覧メニュー８３が表示される（ステップ１４０４）。生成コンテキストキー一覧メニュー８３の中から生成コンテキストキーを選択する（ステップ１４０５）。生成コンテキストキー一覧メニュー８３で生成コンテキストキーを選択した後、生成コンテキストキー一覧サブメニュー８４，８５が表示され、そこにステップ１４０５で選択した生成コンテキストキー以外の生成コンテキストキーが表示される（ステップ１４０６）。選択する項目が生成コンテキストキーの場合はステップ１４０８へ進み、「決定」の場合はステップ１４０９へ進む（ステップ１４０７）。
【０１０５】
選択する項目が生成コンテキストキーの場合、その生成コンテキストキーを選択する（ステップ１４０８）。生成コンテキストキー選択後、ステップ１４０６へ戻り、そこまでに選択した生成コンテキストキー以外の生成コンテキストキーが生成コンテキストキー一覧サブメニューに表示される。選択する項目がステップ１４０７で「決定」の場合、「決定」を選択する（ステップ１４０９）。「決定」選択後、それまでに選択した生成コンテキストキーを、その選択の順で、生成コンテキストキーを保持する配列に格納する（ステップ１４１０）。生成コンテキストキーを配列に格納した後、コンテキストツリービュー表示プログラム６の実行が始まる（ステップ１４１１）。
【０１０６】
図１５は、図１４のステップ１４１１、すなわち図８−２で「決定」を選択した後に、選択された生成コンテキストキーの順でコンテキストツリービュー９１を表示する過程を示したフローチャート図である。ここでは、図８−２で「ThreadID」８３ａ、「SessionID」８４ａ、「決定」８６の順に生成コンテキストキーを選択した場合で説明する。また、コンテキストツリービュー表示プログラム６の実行過程を示した図１０−３と、図１０−３の実行結果を表示した図９−１を用いて説明する。
【０１０７】
生成コンテキストキーを選択順に配列に格納した後、図８−２で選択した生成コンテキストキーを順に格納した配列の各要素を指すための添え字を０に設定する（ステップ１５０１）。次に、関連付け定義プログラム５で関連付けされたコンテキスト・ライフサイクルログを全て抽出する（ステップ１５０２）。図１０−３では、抽出したコンテキスト・ライフサイクルログが「Ｃ」１１１、「Ｃ」１１２、「Ｃ」１１３、及び「Ｃ」１１４である。次に、現在の添え字に対応する配列要素を取得する（ステップ１５０３）。取得した配列要素が生成コンテキストキーの場合はステップ１５０５へ進み、「決定」の場合はステップ１５１２へ進む（ステップ１５０４）。
【０１０８】
ステップ１５０２で取得した配列要素が生成コンテキストキーの場合、ステップ１５０２で抽出したコンテキスト・ライフサイクルログの中から、取得した生成コンテキストキーを保持するコンテキスト・ライフサイクルログを選択する（ステップ１５０５）。図１０−３では、最初に取得した生成コンテキストキーが「ThreadID」であるので、「Ｃ」１１１と「Ｃ」１１３を選択する。
【０１０９】
次に、選択したコンテキスト・ライフサイクルログと関連付けられたコンテキスト・ライフサイクルログと実行情報ログを全て抽出する（ステップ１５０６）。図１０−３では「Ｃ」１１１（図１０−２の１００）に対して、図１０−２の矢印１０４ａと矢印１０９ａによって関連付けられた「Ｃ」１１９（図１０−２の１０１）と「Ｅ」１１７（図１０−２の１０６）と「Ｅ」１１８（図１０−２の１０７）を抽出する。同様に、「Ｃ」１１３（図１０−２の１０２）に対して、図１０−２の矢印１０４ｂと矢印１０９ｃによって関連付けられた「Ｃ」１２１（図１０−２の１０３）と「Ｅ」１２０（図１０−２の１０８）を抽出する。
【０１１０】
次に、選択したコンテキスト・ライフサイクルログを、コンテキストツリービューで節の要素として表示する（ステップ１５０７）。図１０−３では、「Ｃ」１１１をコンテキストツリービュー９１で節として表示することを「枝」付き矢印１２９ａで示している。「Ｃ」１１１は、図９−１の９３ａのように表示される。「Ｃ」１１１と同様に、「Ｃ」１１３をコンテキストツリービュー９１で節として表示することを「枝」付き矢印１２９ｂで示している。「Ｃ」１１３は、図９−１の９３ｂのように表示される。但し、選択したコンテキスト・ライフサイクルログの中で、同一の生成トラッキングコンテキストを保持するコンテキスト・ライフサイクルログが２個以上存在する場合、コンテキストツリービュー９１では１個の節として表示される。
【０１１１】
ステップ１５０６において抽出した実行情報ログの中に、これまで取得した全ての生成コンテキストキーのみを保持する実行情報ログがある場合はステップ１５０９へ進み、ない場合は１５１１へ進む（ステップ１５０８）。
【０１１２】
これまで取得した全ての生成コンテキストキーのみを保持する実行情報ログがある場合、該当する実行情報ログを選択する（ステップ１５０９）。図１０−３では、配列要素から取得した生成コンテキストキー「ThreadID」のみを保持する「Ｅ」１１７を選択する。選択した実行情報ログをコンテキストツリービュー９１の葉として表示し（ステップ１５１０）、ステップ１５１１へ進む。図１０−３では、選択した「Ｅ」１１７をコンテキストツリービュー９１の葉の要素として、図９−１のアイコン９５ａに表示することを、「葉」付き矢印１２２で示している。
【０１１３】
ステップ１５１０の処理終了後、またはステップ１５０８においてこれまで取得した全ての生成コンテキストキーのみを保持する実行情報ログがない場合、生成コンテキストキーを格納している配列の添え字に１を加えて（ステップ１５１１）、ステップ１５０３に戻り、上記の手順を繰り返す。図１０−３では、添え字に１を加えた値に対応する配列要素が「SessionID」であるので、ステップ１５０４から１５０５に進み、集合１１５から「Ｃ」１１９（図１０−２の１０１）を選択する（ステップ１５０５）。選択した「Ｃ」１１９に対して、図１０−２の矢印１０９ｂによって関連付けられた「Ｅ」１２５（図１０−２の１０７）を抽出する（ステップ１５０６）。選択した「Ｃ」１１９は、コンテキストツリービュー９１で「Ｃ」１１１の次の節の要素とし、図９−１の９４ａのように表示される（ステップ１５０７）。抽出した「Ｅ」１２５はこれまで取得した全ての生成コンテキストキー「ThreadID」と「SessionID」のみを保持する実行情報ログであるので、ステップ１５０８から１５０９へ進み、集合１２３から「Ｅ」１２５を選択して「葉」付き矢印１２７により、コンテキストツリービュー９１の葉の要素として表示する（ステップ１５０９，１５１０）。「Ｅ」１２５は、図９−１のアイコン９５ｂのように表示される。さらに、集合１１５と同様に集合１１６から「Ｃ」１２１を選択し、「Ｃ」１２１と図１０−２の矢印１０９ｄによって関連付けられた「Ｅ」１２６を抽出する。選択した「Ｃ」１２１はコンテキストツリービュー９１で「Ｃ」１１３の次の節の要素とし、「Ｃ」１２１は図９−１の９４ｂのように表示される。
【０１１４】
ステップ１５０４において、取得した配列要素が「決定」である場合、「決定」の一つ前で取得した生成コンテキストキーを保持するコンテキスト・ライフサイクルログと関連付けられた実行情報ログ全てをコンテキストツリービュー９１の葉の要素として表示する（ステップ１５１２）。図１０−３では、「SessionID」の次に取得した配列要素が「決定」であるので、集合１２４の「Ｅ」１２６を選択して「葉」付き矢印１２８により、コンテキストツリービュー９１で葉の要素として表示する。「Ｅ」１２６は、図９−１のアイコン９５ｃのように表示される。
【０１１５】
以上より、コンテキストツリービュー表示プログラム６の実行が完了する。完成したコンテキストツリービュー９１の例を図９−１と図９−２に示す。
【０１１６】
図９−２は、図８−２の「Open Tree View」８２ｂから「SessionID」８３ｂ、「ThreadID」８５ａ、「決定」８７の順で選択した際に表示されるコンテキストツリービュー９１の図である。
【図面の簡単な説明】
【０１１７】
【図１】本発明の一実施形態例を示すシステム構成図である。
【図２−１】トラッキングコンテキストのフォーマットを示す図である。
【図２−２】プログラムとトラッキングコンテキストとの関係を示す図である。
【図３】コンテキスト・ライフサイクルログ設定画面の画面例の図である。
【図４−１】トラッキングコンテキストの詳細設定を行う画面例の図である。
【図４−２】トラッキングコンテキストの詳細設定を行う画面例の図である。
【図５】実行情報ログの設定画面の画面例の図である。
【図６】コンテキスト・ライフサイクルログのログフォーマットを示す図である。
【図７】実行情報ログのログフォーマットを示す図である。
【図８−１】関連付け定義プログラムの実行方法を示す図である。
【図８−２】関連付け定義プログラムからコンテキストツリービュー表示プログラムの実行方法を示す図である。
【図９−１】コンテキストツリービューの表示画面の一例を示した図である。
【図９−２】コンテキストツリービューの表示画面の一例を示した図である。
【図１０−１】コンテキスト・ライフサイクルログ内での関連付けの構成を説明する図である。
【図１０−２】コンテキスト・ライフサイクルログと実行情報ログとの関連付けの構成を説明する図である。
【図１０−３】コンテキストツリービュー表示プログラムの実行過程を示した図である。
【図１１】本実施形態のシステム動作を示すフローチャート図である。
【図１２−１】ログ出力設定プログラムの設定画面の操作手順を示すフローチャート（その１）図である。
【図１２−２】ログ出力設定プログラムの設定画面の操作手順を示すフローチャート（その２）図である。
【図１３】関連付け定義プログラムの画面の操作手順を示すフローチャート図である。
【図１４】コンテキストツリービュー表示プログラムを実行してコンテキストツリービューを表示するまでの手順を示すフローチャート図である。
【図１５】コンテキストツリービュー表示プログラムの実行過程を示したフローチャート図である。
【符号の説明】
【０１１８】
１…ログ出力開発環境、２…アプリケーションサーバ、３…ログ出力設定プログラム、４…ログ出力設定反映プログラム、５…関連付け定義プログラム、６…コンテキストツリービュー表示プログラム、７…トラッキングコンテキスト管理プログラム、８…組込前プログラム、９…組込後プログラム、１０…コンテキスト・ライフサイクルログ、１１…実行情報ログ。
【図１】
2007065718.tif 000003
【図２−１】
2007065718.tif 000004
【図２−２】
2007065718.tif 000005
【図３】
2007065718.tif 000006
【図４−１】
2007065718.tif 000007
【図４−２】
2007065718.tif 000008
【図５】
2007065718.tif 000009
【図６】
2007065718.tif 000010
【図７】
2007065718.tif 000011
【図８−１】
2007065718.tif 000012
【図８−２】
2007065718.tif 000013
【図９−１】
2007065718.tif 000014
【図９−２】
2007065718.tif 000015
【図１０−１】
2007065718.tif 000016
【図１０−２】
2007065718.tif 000017
【図１０−３】
2007065718.tif 000018
【図１１】
2007065718.tif 000019
【図１２−１】
2007065718.tif 000020
【図１２−２】
2007065718.tif 000021
【図１３】
2007065718.tif 000022
【図１４】
2007065718.tif 000023
【図１５】
2007065718.tif 000024