(57)【要約】      （修正有）【課題】プログラム実行の実行状況をユーザに把握させること。【解決手段】プログラム実行状況表示システム１０１において、表示イベント単位情報生成部１０７は、イベント情報記憶部１０２からのイベント情報、プログラム構造情報記憶部１０３からのプログラム構造情報、軸情報記憶部１０４からの軸情報を入力として表示イベント単位情報を生成し、表示イベント単位記憶部１０５に記憶する。表示イベント情報生成部１０８は、イベント情報、表示イベント単位情報、プログラム構造情報を入力として表示イベント情報を生成し、表示イベント情報記憶部１０６に記憶する。オブジェクト生成部１０９は、表示イベント情報を入力としてイベントオブジェクトを生成し、また、軸オブジェクト生成部１１０は、軸情報を入力として軸オブジェクトを生成する。表示部１１１は、イベントオブジェクトと軸オブジェクトを用いてプログラム実行状況を表示する。【選択図】図１
2015167002.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行によって発生する２つ以上のイベントを表現する１つ以上のイベントオブジェクトを生成するプログラム情報生成システムであって、
前記プログラムの実行状況を描画する座標系の軸情報を記憶する軸情報記憶部と、
前記軸情報に基づいて前記座標系を表現する軸オブジェクトを生成する軸オブジェクト生成部と、
前記２つ以上のイベントそれぞれに関するイベント情報を記憶するイベント情報記憶部と、
前記２つ以上のイベントを発生させる前記プログラムの区間に関するプログラム構造情報を記憶するプログラム構造情報記憶部と、
前記２つ以上のイベントを表現する１つ以上の表示イベントに関する表示イベント情報を生成する表示イベント情報生成部と、
前記表示イベント情報を記憶する表示イベント情報記憶部と、
前記表示イベントの表示単位を示す表示イベント単位情報を記憶する表示イベント単位情報記憶部と、
前記表示イベント情報に基づいて前記１つ以上のイベントオブジェクトを生成するオブジェクト生成部と、
を備え、
前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含み、
前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含み、
前記表示イベント単位情報は、前記１つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含み、
前記表示イベント単位情報記憶部は、前記イベント情報記憶部に記憶された前記イベント情報を表現する前記１つ以上の表示イベントに関する前記表示イベント単位情報を記憶し、
各プログラム構造情報は、各プログラム構造情報を識別するプログラム構造識別情報と、各プログラム構造情報と包含関係にあるプログラム構造情報を特定する包含プログラム構造識別情報とを含み、
前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含み、
前記表示イベント情報生成部は、前記イベント情報と前記表示イベント単位情報と前記プログラム構造情報とに基づいて前記表示イベント情報を生成し、
前記オブジェクト生成部は、前記表示イベント情報記憶部に記憶された前記表示イベント情報の前記区間情報と、前記軸情報記憶部に記憶された前記軸情報とに基づいて、前記表示イベントを表す前記イベントオブジェクトの表示位置を決定する、
プログラム情報生成システム。
【請求項２】
前記表示イベント単位情報を生成する表示イベント単位情報生成部と、
をさらに備え、
前記軸情報は、前記連続軸が表す区間の描画最小単位を表す最小描画区間情報をさらに含み、
前記表示イベント単位情報は、前記軸情報の前記最小描画区間情報の区間以上の区間を持つ前記プログラム構造情報をさらに含み、
前記表示イベント単位情報生成部は、前記イベント情報記憶部の前記イベント情報と、前記プログラム構造情報記憶部の前記プログラム構造情報と、前記軸情報記憶部の前記連続軸の最小描画区間情報とを入力とし、前記最小描画区間情報と前記イベント情報と前記プログラム構造情報とに基づいて、前記表示イベント単位情報を生成する、
請求項１に記載のプログラム情報生成システム。
【請求項３】
前記表示イベント情報は、密度情報をさらに含み、
前記表示イベント情報生成部は、表示イベント単位情報のプログラム構造識別情報に基づいて特定された１つ以上のプログラム構造情報に関連する１つ以上のイベントの区間情報と、前記表示イベント情報の区間情報とに基づいて、前記密度情報を生成し、
前記イベントオブジェクト生成部は、前記密度情報に基づいて前記イベントオブジェクトの表示方式を決定する、
請求項２に記載のプログラム情報生成システム。
【請求項４】
前記表示イベント単位情報において、第１の表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報は、第２の表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報とは包含関係を持たず、
前記表示イベント単位情報生成部は、前記第１または第２の表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報と包含関係を持つプログラム構造情報を表示イベント単位情報としない、
請求項３に記載のプログラム情報生成システム。
【請求項５】
前記表示イベント情報は、前記表示イベントが複数のイベントと関連しているか否かを表す複数イベント関連情報を含み、
前記表示イベント情報生成部は、前記表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報に関連するイベント情報が複数あるか否かを判定し、当該判定結果に基づいて前記複数イベント表示情報を生成し、
前記イベントオブジェクト生成部は、前記表示イベント情報の前記複数イベント関連情報に基づいて、ユーザに対するアクションを含むイベントオブジェクトを生成する、
請求項３に記載のプログラム情報生成システム。
【請求項６】
前記イベントは、前記プログラムの実行単位であり、
前記連続軸は、前記プログラムの実行における時間軸である、
請求項１に記載のプログラム情報生成システム。
【請求項７】
前記イベントは、メモリアドレス空間へのアクセスであり、
前記連続軸は、前記メモリアドレス空間を表現するメモリアドレス軸である、
請求項１に記載のプログラム情報生成システム。
【請求項８】
プログラムの実行によって発生する２つ以上のイベントを表現する１つ以上のイベントオブジェクトを生成するプログラム情報生成方法であって、
前記プログラムの実行状況を描画する座標系の軸情報に基づいて前記座標系を表現する軸オブジェクトを生成し、
前記２つ以上のイベントそれぞれに関するイベント情報と、前記２つ以上のイベントを表現する１つ以上の表示イベントの表示単位を示す表示イベント単位情報とに基づいて、前記前記表示イベントに関する表示イベント情報を生成し、
前記表示イベント情報に基づいて前記１つ以上のイベントオブジェクトを生成する、
ことを含み、
前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含み、
前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含み、
前記表示イベント単位情報は、前記１つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含み、
前記表示イベント単位情報は、前記イベント情報を表現する前記１つ以上の表示イベントそれぞれに関し、
前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含み、
前記イベントオブジェクトの表示位置は、前記表示イベント情報の前記区間情報と前記軸情報とに基づいて決定される、
プログラム情報生成方法。
【請求項９】
プログラムの実行によって発生する２つ以上のイベントを表現する１つ以上のイベントオブジェクトを生成するコンピュータを機能させるためのプログラム情報生成プログラムであって、
前記プログラムの実行状況を描画する座標系の軸情報に基づいて前記座標系を表現する軸オブジェクトを生成するステップと、
前記２つ以上のイベントそれぞれに関するイベント情報と、前記２つ以上のイベントを表現する１つ以上の表示イベントの表示単位を示す表示イベント単位情報とに基づいて、前記前記表示イベントに関する表示イベント情報を生成するステップと、
前記表示イベント情報に基づいて前記１つ以上のイベントオブジェクトを生成するステップと、
を前記コンピュータに実行させ、
前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含み、
前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含み、
前記表示イベント単位情報は、前記１つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含み、
前記表示イベント単位情報は、前記イベント情報を表現する前記１つ以上の表示イベントそれぞれに関し、
前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含み、
前記イベントオブジェクトの表示位置は、前記表示イベント情報の前記区間情報と前記軸情報とに基づいて決定される、
プログラム情報生成プログラム。
【請求項１０】
請求項１に記載のプログラム情報生成システムと、
前記軸オブジェクトと前記１つ以上のイベントオブジェクトとを表示する表示部と、
を備える、プログラム情報表示システム。
【請求項１１】
請求項５に記載のプログラム情報生成システムと、
前記軸オブジェクトと前記１つ以上のイベントオブジェクトとを表示する表示部と、
を備え、
前記表示部は、ユーザインターフェースを備え、前記ユーザインターフェースの入力と前記イベントオブジェクトの前記アクションとに基づいて、前記アクションを実行する、
プログラム情報表示システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムに関する。
【背景技術】
【０００２】
従来、プログラムの実行トレースに基づいて実行されたプログラムのスレッドを表すスレッドオブジェクトとイベントとを、時間軸とスレッドとを軸要素する座標系に表示することで、ユーザによるプログラム解析をサポートするプログラム実行状況表示に関する技術が存在する。この技術は、プログラムの全実行状況のアクティビティを表示する領域と、特定範囲の詳細な実行状況をスレッド軸と時間軸とを用いて表示する領域とを持ち、全実行状況の表示する領域から特定範囲を指定する機能をユーザに提供することで、対話的にプログラムの全実行状況から特定箇所の詳細情報を表示することを可能としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許公開第２０１０／７６９８６８６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラム開発者のプログラム開発時に、プログラムの実行状況を表示することで動作の確認や性能最適化等を行う場合、従来のプログラム実行状況表示装置では、表示装置にプログラムの実行状況が表示されるため、その表示領域は表示装置のサイズに制限されてしまう。そのため、プログラムの詳細実行状況を表示する領域において大量のイベントを表示する場合は、例えば、表示装置の表示サイズ制約から全イベントの情報を同時に表示できない、全イベントの情報を同時に表示した際にイベントを表すオブジェクトの表示サイズが極めて小さいもしくは表示装置の描画性能で表示できない等、プログラムの詳細実行状況の把握が困難となる場合が存在する。
【０００５】
以下の実施形態では、大量の呼び出しが発生するような大規模プログラムにおいても、プログラム実行の実行状況をユーザに把握させることが可能なプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態にかかるプログラム情報生成システムは、プログラムの実行によって発生する２つ以上のイベントを表現する１つ以上のイベントオブジェクトを生成するプログラム情報生成システムであって、前記プログラムの実行状況を描画する座標系の軸情報を記憶する軸情報記憶部と、前記軸情報に基づいて前記座標系を表現する軸オブジェクトを生成する軸オブジェクト生成部と、前記２つ以上のイベントそれぞれに関するイベント情報を記憶するイベント情報記憶部と、前記２つ以上のイベントを発生させる前記プログラムの区間に関するプログラム構造情報を記憶するプログラム構造情報記憶部と、前記２つ以上のイベントを表現する１つ以上の表示イベントに関する表示イベント情報を生成する表示イベント情報生成部と、前記表示イベント情報を記憶する表示イベント情報記憶部と、前記表示イベントの表示単位を示す表示イベント単位情報を記憶する表示イベント単位情報記憶部と、前記表示イベント情報に基づいて前記１つ以上のイベントオブジェクトを生成するオブジェクト生成部と、を備えてもよい。前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含んでもよい。前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含んでもよい。前記表示イベント単位情報は、前記１つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含んでもよい。前記表示イベント単位情報記憶部は、前記イベント情報記憶部に記憶された前記イベント情報を表現する前記１つ以上の表示イベントに関する前記表示イベント単位情報を記憶してもよい。各プログラム構造情報は、各プログラム構造情報を識別するプログラム構造識別情報と、各プログラム構造情報と包含関係にあるプログラム構造情報を特定する包含プログラム構造識別情報とを含んでもよい。前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含んでもよい。前記表示イベント情報生成部は、前記イベント情報と前記表示イベント単位情報と前記プログラム構造情報とに基づいて前記表示イベント情報を生成してもよい。前記オブジェクト生成部は、前記表示イベント情報記憶部に記憶された前記表示イベント情報の前記区間情報と、前記軸情報記憶部に記憶された前記軸情報とに基づいて、前記表示イベントを表す前記イベントオブジェクトの表示位置を決定してもよい。
【０００７】
また、実施形態にかかるプログラム情報表示システムは、上述のプログラム情報生成システムと、前記軸オブジェクトと前記１つ以上のイベントオブジェクトとを表示する表示部と、を備えてもよい。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係るプログラム実行状況表示装置（システム）の概要構成例を示すブロック図。
【図２】実施形態１で例示するプログラムを示す図。
【図３】図２に示すプログラムの実行状況を例示する図。
【図４】従来技術によるプログラム実行状況の表示例を示す図。
【図５】従来技術によるプログラム実行状況の他の表示例を示す図。
【図６】実施形態１にかかるプログラム実行状況表示の概略動作例を示すフローチャート。
【図７Ａ】実施形態１にかかるプログラム構造情報の例を示す図（その１）。
【図７Ｂ】実施形態１にかかるプログラム構造情報の例を示す図（その２）。
【図７Ｃ】実施形態１にかかるプログラム構造情報の例を示す図（その３）。
【図７Ｄ】実施形態１にかかるプログラム構造情報の例を示す図（その４）。
【図７Ｅ】実施形態１にかかるプログラム構造情報の例を示す図（その５）。
【図７Ｆ】実施形態１にかかるプログラム構造情報の例を示す図（その６）。
【図７Ｇ】実施形態１にかかるプログラム構造情報の例を示す図（その７）。
【図７Ｈ】実施形態１にかかるプログラム構造情報の例を示す図（その８）。
【図７Ｉ】実施形態１にかかるプログラム構造情報の例を示す図（その９）。
【図８Ａ】実施形態１にかかるイベント情報の例を示す図（その１）。
【図８Ｂ】実施形態１にかかるイベント情報の例を示す図（その２）。
【図８Ｃ】実施形態１にかかるイベント情報の例を示す図（その３）。
【図８Ｄ】実施形態１にかかるイベント情報の例を示す図（その４）。
【図９Ａ】実施形態１にかかる軸情報の例を示す図（その１）。
【図９Ｂ】実施形態１にかかる軸情報の例を示す図（その２）。
【図９Ｃ】実施形態１にかかる軸情報の例を示す図（その３）。
【図９Ｄ】実施形態１にかかる軸情報の例を示す図（その４）。
【図１０Ａ】実施形態１にかかる表示イベント単位情報の例を示す図（その１）。
【図１０Ｂ】実施形態１にかかる表示イベント単位情報の例を示す図（その２）。
【図１１】実施形態１にかかる表示イベント単位情報の生成例を示す図。
【図１２Ａ】実施形態１にかかる表示イベント情報の例を示す図（その１）。
【図１２Ｂ】実施形態１にかかる表示イベント情報の例を示す図（その２）。
【図１２Ｃ】実施形態１にかかる表示イベント情報の例を示す図（その３）。
【図１３】実施形態１によるプログラム実行状況の表示例を示す図。
【図１４】実施形態１によるプログラム実行状況の他の表示例を示す図。
【図１５】実施形態２においてプログラム情報生成装置（システム）が実行するプログラムの一例を示す図。
【図１６】従来技術によるプログラム実行状況の表示例を示す図。
【図１７】従来技術によるプログラム実行状況の他の表示例を示す図。
【図１８Ａ】実施形態２にかかるデータ構造情報の例を示す図（その１）。
【図１８Ｂ】実施形態２にかかるデータ構造情報の例を示す図（その２）。
【図１８Ｃ】実施形態２にかかるデータ構造情報の例を示す図（その３）。
【図１８Ｄ】実施形態２にかかるデータ構造情報の例を示す図（その４）。
【図１８Ｅ】実施形態２にかかるデータ構造情報の例を示す図（その５）。
【図１９Ａ】実施形態２にかかるアクセス情報の例を示す図（その１）。
【図１９Ｂ】実施形態２にかかるアクセス情報の例を示す図（その２）。
【図２０】実施形態２にかかる軸情報の例を示す図。
【図２１Ａ】実施形態２にかかる表示アクセス単位情報の例を示す図（その１）。
【図２１Ｂ】実施形態２にかかる表示アクセス単位情報の例を示す図（その２）。
【図２２】実施形態２にかかる表示アクセス単位情報の生成例を示す図。
【図２３Ａ】実施形態２にかかる表示アクセス情報の例を示す図（その１）。
【図２３Ｂ】実施形態２にかかる表示アクセス情報の例を示す図（その２）。
【図２４】実施形態２によるプログラム実行状況の他の表示例を示す図。
【図２５】実施形態２によるプログラム実行状況の他の表示例を示す図。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、例示する実施形態にかかるプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムを詳細に説明する。
【００１０】
（実施形態１）
まず、実施形態１にかかるプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムについて、図面を参照して詳細に説明する。
【００１１】
図１は、実施形態１に係るプログラム実行状況表示装置（システム）の概要構成例を示すブロック図である。プログラム実行状況表示装置（システム）１０１は、イベント情報記憶部１０２、プログラム構造情報記憶部１０３、軸情報記憶部１０４、表示イベント単位情報記憶部１０５、表示イベント情報記憶部１０６、表示イベント単位情報生成部１０７、表示イベント情報生成部１０８、オブジェクト生成部１０９、軸オブジェクト生成部１１０、表示部１１１、および入力部１１２を備える。
【００１２】
なお、本実施形態において、プログラムとは、コンピュータへ指示する命令を、特定の言語や形式で記述したものである。また、イベントとは、プログラムやプロセスの実行時に発生する処理の単位とする。このイベントは、たとえば関数やループや条件分岐等のプログラムの構成単位であってもよいし、メモリアクセス、命令実行、スレッド生成、同期処理等の特定の処理であってもよい。
【００１３】
以下の説明では、図２に示すプログラムを実行した際の実行状況を表示する例を述べる。図２に示すように、プログラム２０１は、関数“ＦＵＮＣＴＩＯＮ”２０２内で、繰り返し処理を表すループ“ＬＯＯＰ＿Ａ”２０３と“ＴＡＳＫ＿Ｃ”２０９とを実行するプログラムである。“ＬＯＯＰ＿Ａ”２０３は、“ＢＬＯＣＫ＿Ａ”２０４”と“ＢＬＯＣＫ＿Ｂ”２０５とからなり、条件分岐結果に基づいてどちらかを実行するループである。また、“ＢＬＯＣＫ＿Ａ”２０４は、“ＴＡＳＫ＿Ａ０”２０６と“ＴＡＳＫ＿Ａ１”２０７とからなる処理であり、“ＢＬＯＣＫ＿Ｂ”２０５は、“ＴＡＳＫ＿Ｂ”２０８からなる処理である。
【００１４】
以上のようなプログラム２０１の実行状況は、図３に示すように、イベント“ＴＡＳＫ＿Ａ０”とイベント“ＴＡＳＫ＿Ａ１”３０１とイベント“ＴＡＳＫ＿Ｂ”３０２とを含むループ“ＬＯＯＰ＿Ａ”３０３を６００回実行した後、“ＴＡＳＫ＿Ｃ”３０４を１回実行する内容となる。
【００１５】
本実施形態では、図３に示すプログラム実行状況が、時間軸を含む平面または空間に表示される。本実施形態において、時間軸は、イベントの実行時間を表す軸である。
【００１６】
一般的に、プログラムの実行状況を表示する表示装置の表示画面サイズもしくは表示ウインドウサイズには限りがある。そのため、時間軸に一度に表示可能な要素数には限りがある。図４および図５に、上記プログラム実行状況の従来技術による表示例を示す。
【００１７】
図４は、時間軸要素の表示サイズを固定した例である。この場合、同時に表示可能な実行期間が限られている（図４では“０”〜“１０”の実行期間）ため、時間軸の全要素を同時に表示できない場合が生じ得る。そのような場合、スクロールバーなどで表示範囲をスライドさせることで、非表示の範囲を確認することは可能であるが、プログラム実行状況全体を俯瞰できないため、プログラム実行状況全体をユーザに把握させ難い場合がある。
【００１８】
また、図５は、時間軸の全要素を同時に表示する場合を示す。この場合、従来技術では、時間軸要素の表示サイズが表示画面サイズもしくは表示ウインドウサイズから決定される。そのため、表示装置の描画性能次第では複数のイベントが描画最小単位（たとえば解像度）以下のサイズとなってしまい、１つ１つのイベントを区別できない場合が生じ得る。例えば、図５に示す例では、“ＢＬＯＣＫ＿Ａ”に含まれるイベント“ＴＡＳＫ＿Ａ０”５０２と、“ＴＡＳＫ＿Ａ１”５０３と、“ＢＬＯＣＫ＿Ｂ”に含まれるイベント“ＴＡＳＫ＿Ｂ”５０４との実行時間をそれぞれ把握することは困難である。
【００１９】
そこで本実施形態では、描画性能で表示できないイベントをプログラム構造の階層構造に基づいてまとめて表示するとともに、描画性能で表示できないイベントについての情報を表示することで、プログラム実行状況全体をまとめて表示した場合でもその全体をユーザに把握させることを可能にする。なお、本実施形態では、描画性能で表示できないイベントについての情報として、密度情報を用いる。密度情報の詳細については、後述において触れる。
【００２０】
つづいて、本実施形態にかかるプログラム実行状況表示装置（システム）の概略動作について、図面を用いて詳細に説明する。図６は、実施形態１にかかるプログラム実行状況表示の概略動作例を示すフローチャートである。図６に示すように、本動作では、まず、表示イベント単位情報生成部１０７は、イベント情報記憶部１０２からイベント情報を入力し、プログラム構造情報記憶部１０３からプログラム構造情報を入力し、軸情報記憶部１０４から軸情報を入力し、入力したイベント情報とプログラム構造情報と軸情報とから表示イベント単位情報を生成する（ステップＳ６０１）。生成された表示イベント単位情報は、表示イベント単位記憶部１０５に記憶される。
【００２１】
次に、表示イベント情報生成部１０８は、イベント情報記憶部１０２からイベント情報を入力とし、表示イベント単位記憶部１０５から表示イベント単位情報を入力し、プログラム構造情報記憶部１０３からプログラム構造情報を入力し、入力したイベント情報と表示イベント単位情報とプログラム構造情報とから表示イベント情報を生成する（ステップＳ６０２）。生成された表示イベント情報は、表示イベント情報記憶部１０６に記憶される。
【００２２】
次に、オブジェクト生成部１０９は、表示イベント情報記憶部１０６の表示イベント情報を入力し、入力した表示イベント情報からイベントオブジェクトを生成する（ステップＳ６０３）。また、軸オブジェクト生成部１１０は、軸情報記憶部から軸情報を入力し、入力した軸情報から軸オブジェクトを生成する（ステップＳ６０４）。
【００２３】
以上のように、イベントオブジェクトと軸オブジェクトとが生成されると、表示部１１１は、これらイベントオブジェクトと軸オブジェクトとを入力し、入力したイベントオブジェクトと軸オブジェクトを用いてプログラム実行状況を表示する（ステップＳ６０５）。
【００２４】
つぎに、本実施形態にかかるプログラム実行状況表示装置（システム）の各部の詳細な構成および動作について、以下に説明する。
【００２５】
・プログラム構造情報記憶部
プログラム構造情報記憶部１０３は、少なくとも１つのプログラム構造情報を記憶する記憶部である。このプログラム構造情報記憶部１０３は、ＰＣ（パーソナルコンピュータ）等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。ここで、プログラム構造情報とは、１つのプログラム構造情報を特定するプログラム構造識別情報と、プログラム階層情報と、包含関係にあるプログラム構造情報を特定する包含プログラム構造識別情報とを含む。
【００２６】
本実施形態では、包含プログラム構造識別情報は、第１のプログラム構造情報とこの第１のプログラム構造情報を包含する第２のプログラム構造情報との間に第１のプログラム構造情報を包含する第３のプログラム構造情報を含まない“隣接する”第２の包含プログラム構造情報を識別する情報であるとする。
【００２７】
図７Ａ〜図７Ｉに、図２に例示したプログラム２０１に関するプログラム構造情報の一例を示す。図７Ａに示す“ＦＵＮＣＴＩＯＮ“のプログラム構造情報７０１は、プログラム構造識別情報が“０”、プログラム階層情報が“ＦＵＮＣＴＩＯＮ”、包含プログラム構造識別情報が“なし”の情報であり、図２に示すプログラム２０１全体の範囲を表す階層構造である。したがって、プログラム構造情報７０１には、包含プログラム構造情報が存在しない。また、図７Ｂに示す“ＬＯＯＰ＿Ａ”のプログラム構造情報７０２は、プログラム構造識別情報が“１”、プログラム階層情報が“ＬＯＯＰ＿Ａ”、包含プログラム構造識別情報が“０”の情報であり、図２に示すプログラム２０１における“ＬＯＯＰ＿Ａ”２０３の範囲を表す階層構造である。したがって、プログラム構造情報７０２は、“ＦＵＮＣＴＩＯＮ”のプログラム構造情報７０１に包含されるプログラム構造情報であることを示す包含プログラム構造識別情報“０”が付与されている。
【００２８】
プログラム２０１における他のプログラム構造情報７０３〜７０９も同様に、プログラム構造識別情報にそれぞれを一意に識別するための識別子“２”〜“９”が付与され、プログラム階層情報にそれぞれの階層情報を表す文字列が付与され、包含プログラム構造識別情報にそれぞれを包含するプログラム構造情報を識別するためのプログラム構造識別情報が付与されている。
【００２９】
ここで、プログラム階層情報は、プログラムの特定階層を示す情報である。これは、例えば、ファイル、関数、ループ、条件分岐などのプログラムの階層情報であってもよいし、配列、構造体などのデータ構造の集合やその部分集合を示す情報であってもよい。また、プログラム構造識別情報は、プログラム構造情報記憶部に含まれる複数のプログラム構造情報から１つのプログラム構造情報を特定する情報である。これは、例えば、プログラム構造の固有名であっても良いし、プログラム構造のＩＤであってもよい。なお、プログラム構造識別情報とプログラム階層情報とは、何れか一方にまとめることも可能である。
【００３０】
包含プログラム構造識別情報は、プログラム構造を包含するプログラム構造情報を特定する識別情報である。１つの識別情報は、プログラム構造情報記憶部１０３のプログラム構造情報のプログラム構造識別情報の１つと対応する。また、包含するプログラム構造情報がない場合において、包含プログラム構造識別情報は、“ない”ことを示す情報であればよく、例えば“ＮＵＬＬ”であってもよいし、“無”であってもよい。さらに、包含プログラム構造識別情報は、１つであってもよいし、複数であってもよい。さらにまた、包含プログラム構造識別情報は、第１のプログラム構造情報とこの第１のプログラム構造情報を包含する第２のプログラム構造情報との間に第１のプログラム構造情報を包含する第３のプログラム構造情報を含まない“隣接する”第２の包含プログラム構造情報を識別する情報であってもよいし、第１のプログラム構造情報とこの第１のプログラム構造情報を包含する第２のプログラム構造情報との間に第１のプログラム構造情報を包含する第３のプログラム構造情報を含む“隣接しない”第２の包含プログラム構造情報を識別する情報であってもよい。
【００３１】
・イベント情報記憶部
イベント情報記憶部１０２は、少なくとも２つのイベント情報を記憶する記憶部である。このイベント情報記憶部１０２は、ＰＣ（パーソナルコンピュータ）等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。また、イベント情報とは、プログラム実行時に実行されたイベントの情報であり、区間情報と、プログラム構造識別情報と、イベント属性情報とを含む。
【００３２】
本実施形態では、実行時間が１サイクルのイベント“ＴＡＳＫ＿Ａ０”２０６と、実行時間が８サイクルのイベント“ＴＡＳＫ＿Ａ１”２０７と、実行時間が１サイクルのイベント“ＴＡＳＫ＿Ｂ”２０８とをそれぞれ３００回繰り返し実行した後、実行時間が３０００サイクル“ＴＡＳＫ＿Ｃ“２０９を実行した際のプログラム実行状況を表示した場合を示している。
【００３３】
図８Ａ〜図８Ｄに、本実施形態にかかるイベント情報の例を示す。例えば、図８Ａに示すイベント情報８０１は、“ＴＡＳＫ＿Ａ０”２０６の１回目の実行を示し、実行開始時刻が“０”、実行終了時刻が“１”、プログラム構造識別情報が“４”、属性情報が“ＢＬＯＣＫ＿Ａ”である。また、図８Ｂに示すイベント情報８０２は、“ＴＡＳＫ＿Ａ１”２０７の１回目の実行を示し、実行開始時刻が“１”、実行終了時刻が“９”、プログラム構造識別情報が“５”、属性情報が“ＢＬＯＣＫ＿Ａ”である。図８Ｃに示すイベント情報８０３は、“ＴＡＳＫ＿Ｂ”２０８の１回目の実行を示し、実行開始時刻が“９”、実行終了時刻が“１０”、プログラム構造識別情報が“７”、属性情報が“ＢＬＯＣＫ＿Ｂ”である。図８Ｄに示すイベント情報８０４は、“ＴＡＳＫ＿Ｃ”２０９の１回目の実行を示し、実行開始時刻が“３０００”、実行終了時刻が“６０００”、プログラム構造識別情報が“８”、属性情報が“ＴＡＳＫ＿Ｃ”である。ただし、これらのようなイベント情報は、イタレーションによる繰り返しを含む全てのイベントに対して生成されている。
【００３４】
なお、区間情報は、イベントの実行開始時刻と実行期間が定義される情報である。これは、例えば、実行開始時刻と実行期間からなる情報であってもよいし、実行開始時刻と実行終了時刻からなる情報であってもよし、実行期間と実行終了時刻からなる情報であってもよし、イベントの実行開始時刻であってもよいし、イベントの終了時刻であってもよい。また、実行開始時刻、実行終了時刻、および、実行期間は、時間情報である。これらは、例えば、プログラム実行時におけるプロセッサ時刻であってもよいし、プロセッサ時刻に基づいて生成した時間情報であってもよい。
【００３５】
さらに、属性情報は、イベントに関する情報である。これは、例えば、実行トレース情報であってもよいし、プログラムの静的情報であってもよいし、プログラムの実行環境情報であってもよい。
【００３６】
実行トレース情報は、プログラム実行時に取得可能な実行時の状況を表す情報である。これは、例えば、イベントを実行したプロセッサコア情報であってもよいし、イベント実行した命令情報であってもよいし、イベント実行期間であってもよいし、イベントが実行したメモリアクセス情報であってもよいし、イベントが実行した関数コール回数であってもよいし、イベント内の変数の値であってもよいし、イベントがループイタレーションである場合において何回目のイタレーションであるかの情報であってもよし、イベントが割り込み処理であるかの情報であってもよし、配列や構造体などのデータ構造であってもよいし、データ構造のメモリアドレス区間であってもよいし、データ構造の先頭メモリアドレスであってもよいし、データ構造の終端メモリアドレスであってもよい。
【００３７】
プログラムの静的情報は、ソースコードもしくはソースコード管理システムから得られる静的な情報である。これは、例えば、ソースコード上の位置情報であってもよいし、ソフトウェアプログラム構造情報であってもよいし、ソースコードのコンパイル情報であってもよいし、ソースコードのバージョン情報であってもよいし、プログラムがカーネルプログラムであるかの情報であってもよいし、プログラムがユーザプログラムであるかの情報であってもよい。
【００３８】
プログラムの実行環境情報は、プログラムを実行した際の環境の情報である。これは、例えば、プロセッサコア名であってもよいし、サーバ名であってもよいし、サーバの仕様情報であってもよい。
【００３９】
・軸情報記憶部
軸情報記憶部１０４は、時系列情報と、少なくとも１つ以上の属性軸情報と、少なくとも１つ以上の表示属性特定情報とからなる軸情報を記憶する記憶部である。この軸情報記憶部１０４は、ＰＣ（パーソナルコンピュータ）等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。
【００４０】
ここで、軸情報は、時間軸情報、属性軸情報および表示属性特定情報からなる情報である。時間軸情報は、表示装置の最小描画単位が表す期間を示す情報と、時間軸方向の表示範囲を示す表示範囲情報である。属性軸情報は、軸の要素名と、その表示位置情報とを示す情報であり、イベント情報のイベント属性情報に対応する情報である。
【００４１】
図９Ａ〜図９Ｄに、本実施形態にかかる軸情報の例を示す。図９Ａに示す時間軸情報９０１は、最小描画単位を“１００”とし、表示範囲情報を“０−５０００”としている。これは、最小描画単位が１００サイクルを表すことと、表示範囲が０サイクルから５０００サイクルであることとを示している。また、“ＢＬＯＣＫ＿Ａ”の属性軸情報９０２（図９Ｂ参照）、“ＢＬＯＣＫ＿Ｂ”の属性軸情報９０３（図９Ｃ参照）、および、“ＴＡＳＫ＿Ｃ”の属性軸情報９０４（図９Ｄ参照）は、表示位置がそれぞれ１００、２００、３００であることを示す。
【００４２】
上記において、時間軸情報は、表示装置の最小描画単位が表す情報を示す情報である。これは、例えば、１表示間隔当たりの期間情報であってもよいし、１期間当たりの表示間隔情報であってもよいし、表示間隔とその表示間隔が表す期間情報からなる情報であってもよい。また、時間軸情報は、プログラム実行状況表示装置が事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと１画面で表示する実行時間情報に基づいて生成してもよい。
【００４３】
属性軸情報は、属性軸の要素名と、その表示位置情報とである。属性軸の要素名には、各イベント情報のイベント属性情報に対応する情報が存在する。属性軸の要素名のいずれかは、属性軸に対応するイベント情報のイベント属性情報と一致する。属性軸の要素名は、プログラム実行状況表示装置が事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよい。
【００４４】
表示位置情報は、表示装置の画面上の属性軸の要素名を表示する位置を表す情報である。この表示位置情報は、プログラム実行状況表示装置が事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと１画面で表示する属性軸の要素数に基づいて生成してもよい。
【００４５】
・表示イベント単位情報記憶部
表示イベント単位情報記憶部１０５は、少なくとも１つ以上のプログラム表示単位情報を記憶する記憶部である。この表示イベント単位情報記憶部１０５は、ＰＣ（パーソナルコンピュータ）等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。
【００４６】
ここで、表示イベント単位情報は、イベントの表示単位を定義する情報である。この表示イベント単位情報は、たとえば、最小描画区間単位情報の区間以上の区間を持つプログラム構造単位であり且つ１つ以上のイベント情報に関連するプログラム構造識別情報を含む。ただし、これに限定されず、プログラム構造情報を特定する情報であってもよいし、プログラム構造情報であってもよい。
【００４７】
図１０Ａおよび図１０Ｂに、本実施形態にかかる表示イベント単位情報の例を示す。図１０Ａに示す表示イベント単位情報１００１は、プログラム構造識別情報が“１”である。図１０Ｂに示す表示イベント単位情報１００２は、プログラム構造識別情報が“８”である。
【００４８】
・表示イベント単位情報生成部
表示イベント単位生成部１０７は、イベント情報記憶部１０２のイベント情報と、プログラム構造情報記憶部１０３のプログラム構造情報と、軸情報記憶部１０４の軸情報とを入力し、入力したイベント情報とプログラム構造情報と軸情報とに基づいて、プログラム構造の区間情報を計算する。次に、表示イベント単位生成部１０７は、同一の隣接する包含プログラム構造情報を持つ１つ以上のプログラム構造情報の区間情報が軸情報の時間軸情報が示す最小描画単位情報が表す区間以上であるプログラム構造情報を特定する。次に、表示イベント単位生成部１０７は、１つ以上の特定されたプログラム構造情報から互いに包含関係に無く、最下層のプログラム構造情報で構成されるプログラム構造情報を選択し、そのプログラム構造情報のプログラム構造識別情報を表示イベント単位情報として生成する。
【００４９】
プログラム構造の区間情報は、同じプログラム構造であるイベント情報の区間情報に基づいて計算されていればよく、例えば、区間情報の最大値であってもよいし、最小値であってもよいし、平均であってもよい。
【００５０】
ここで、図１１を用いて、表示イベント単位情報の生成例を述べる。表示イベント単位生成部１０７は、イベント情報に基づいて各プログラム構造における区間情報を計算する。本例では、プログラム構造の区間情報が最小区間情報として計算される。図１１に、各プログラム構造とその最小区間情報を示す。プログラム構造１１０１、１１０２、１１０３、１１０４、１１０５、１１０６、１１０７、１１０８および１１０９は、それぞれプログラム構造情報７０１、７０２、７０３、７０４、７０５、７０６、７０７、７０８および７０９に対応する。また、最小区間情報１１０１〜１１０９の実行時間は、それぞれ、６０００サイクル、３０００サイクル、１０サイクル、９サイクル、１サイクル、８サイクル、１サイクル、１サイクル、および、３０００サイクルである。表示イベント単位生成部１０７は、時間軸情報の最小描画単位情報の区間“１００”以上を満足する最小区間情報を持つプログラム構造１１０１、１１０２および１１０９を特定し、さらに、同一の隣接包含プログラム構造情報を持つ全てのプログラム構造情報が時間軸情報の最小描画単位情報の区間“１００”以上を満足する最小区間情報を持つプログラム構造１１０１、１１０２および１１０９を特定する。ここで、選択されたプログラム構造１１０１、１１０２および１１０９のうち、互いに包含関係なく且つ最小区間情報が最小であるプログラム構造１１０２および１１０９を表示イベント単位とし、そのプログラム構造を示すプログラム構造情報のプログラム構造識別情報に基づいて、表示イベント単位情報１００１および１００２が生成される。
【００５１】
また、たとえば最小描画単位情報の区間が区間“９”である場合には、プログラム構造１１０１、１１０２、１１０３、１１０４および１１０９を特定し、さらに、同一の隣接包含プログラム構造情報を持つ全てのプログラム構造情報が時間軸情報の最小描画単位情報の区間“９”以上を満足する最小区間情報を持つプログラム構造１１０１、１１０２、１１０３および１１０９を特定する。ここで、選択されたプログラム構造１１０１、１１０２、１１０３及び１１０９のうち、互いに包含関係なく且つ最小区間情報が最小であるプログラム構造１１０３および１１０９を表示イベント単位とし、そのプログラム構造を示すプログラム構造情報のプログラム構造識別情報に基づいて、表示イベント単位情報が生成される。その場合、図１０Ａに示す表示イベント単位情報１００１は、プログラム構造識別情報が“２”となる。
【００５２】
なお、上述した表示イベント単位情報は、時間軸情報９０１の時間軸描画範囲に基づいて描画範囲内に含まれるイベント情報に対して生成されてもよいし、全てのイベント情報に対して生成されてもよい。
【００５３】
・表示イベント情報記憶部
表示イベント情報記憶部１０６は、少なくとも１つ以上の表示イベント情報を記憶する記憶部である。この表示イベント情報記憶部１０６は、ＰＣ（パーソナルコンピュータ）等の情報処理装置に組み込まれたバッファやメモリストレージ等であってもよいし、情報処理承知に接続されるストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。
【００５４】
ここで、表示イベント情報は、区間情報と、属性情報と、密度情報と、複数イベント表示イベント情報と、統計情報とを含む。複数イベント表示イベント情報は、表示イベントが複数のイベントを表しているか否かの情報である。
【００５５】
図１２Ａ〜図１２Ｃに、表示イベント情報の例を示す。本実施形態において、区間情報は実行開始情報と実行終了情報とからなり、密度情報は表示イベントが表す区間とその区間内でイベントが実際に実行された区間との比とし、統計情報はイベント数とする。図１２Ａに示す表示イベント情報１２０１は、実行開始情報を“０”、実行終了情報を“３０００”、属性情報を“ＢＬＯＣＫ＿Ａ”、密度情報を“０．９”、複数イベント表示情報を“ＴＲＵＥ”、イベント数を“６００”とする情報である。また、図１２Ｂに示す表示イベント情報１２０２は、実行開始情報を“０”、実行終了情報を“３０００”、属性情報を“ＢＬＯＣＫ＿Ｂ”、密度情報を“０．１”、複数イベント表示情報を“ＴＲＵＥ”、イベント数を“３００”とする情報である。さらに、図１２Ｃに示す表示イベント情報１２０３は、実行開始情報を“３０００”、実行終了情報を“１”、属性情報を“ＴＡＳＫ＿Ｃ”、密度情報を“１”、複数イベント表示情報を“ＦＡＬＳＥ”、イベント数を“１”とする情報である。
【００５６】
・表示イベント情報生成部
表示イベント情報生成部１０８は、イベント情報記憶部１０２のイベント情報と、プログラム構造情報記憶部１０３のプログラム構造情報と、表示イベント単位情報記憶部１０５の表示イベント単位情報とを入力し、表示イベント単位情報のプログラム構造識別情報およびイベント情報の属性情報に基づいて表示イベントを決定する。また、表示イベント情報生成部１０８は、表示イベント毎に、区間情報、属性情報、密度情報、複数イベント表示情報および統計情報を含む表示イベント情報を生成する。表示イベント情報の属性情報は、表示イベントに含まれるイベントの属性情報に基づいて決定される。区間情報は、表示イベントに含まれるイベントの区間情報に基づいて決定される。複数イベント表示情報は、表示イベントに含まれるイベント数に基づいて決定される。統計情報は、表示イベントに含まれるイベントのイベント情報に基づいて決定される。
【００５７】
ここで、表示イベント情報の生成について、表示イベント単位情報１００１に着目して説明する。まず、表示イベント単位情報１００１のプログラム構造識別情報“１”とプログラム構造情報とに基づいて、包含するプログラム構造情報のプログラム構造識別情報“２”、“３”、“４”、“５”を特定する。次に、特定されたプログラム構造識別情報を持つイベント情報を選択し、プログラム構造識別情報“１”のプログラム構造情報“ＬＯＯＰ＿Ａ”で区切られる単位をイベント情報の属性情報毎に１つの表示イベントとする。本実施形態では、プログラム構造識別情報“１”のプログラム構造情報を持つイベント情報は、プログラム２０１において“ＴＡＳＫ＿Ａ０”２０６、“ＴＡＳＫ＿Ａ１”２０７および“ＴＡＳＫ＿Ｂ”２０８である。したがって、“ＴＡＳＫ＿Ａ０”２０６、“ＴＡＳＫ＿Ａ１”２０７および“ＴＡＳＫ＿Ｂ”２０８に対応する全イベント情報が“ＬＯＯＰ＿Ａ”で１つに区切られ、その区間情報が全イベント情報の区間情報に基づいて決定される。“ＬＯＯＰ＿Ａ”の区間情報は、“ＴＡＳＫ＿Ａ０”２０６、“ＴＡＳＫ＿Ａ１”２０７および“ＴＡＳＫ＿Ｂ”２０８に対応する全イベント情報の区間情報を包含する区間情報であり、実行開始時間を“０”とし、実行終了時間を“３０００”とする。
【００５８】
次に、区切られたイベント情報に対して、属性情報毎に１つの表示イベントを生成する。例えば、属性情報“ＢＬＯＣＫ＿Ａ”の表示イベントは、“ＴＡＳＫ＿Ａ０”２０６とＴＡＳＫ＿Ａ１”２０７とに対応する全イベントを表す。そこで、属性情報“ＢＬＯＣＫ＿Ａ”の表示イベント情報１２０１を生成する例を説明する。属性情報“ＢＬＯＣＫ＿Ａ”の表示イベントの区間情報は、プログラム構造“ＬＯＯＰ＿Ａ“の区間情報であり、実行開始時間を“０”とし、実行終了時間を“３０００”とし、表示イベント情報１２０１の属性情報を“ＢＬＯＣＫ＿Ａ”とし、統計情報を表示イベントが表すイベント数である“１２００“とし、複数イベント表示情報を”ＴＲＵＥ“とし、密度情報を表示イベントが表す区間とその区間内でイベントが実際に実行された区間との比を求める式“（１ｘ３００＋８ｘ３００）÷（３０００）”に基づいて“０．９”とする。表示イベント情報生成部１０８は、これらの情報を含む表示イベント情報１２０１を生成する。
【００５９】
また、密度情報は、表示イベントが表すイベントとその区間情報とに基づいて計算される情報である。これは、例えば、表示イベントが表す区間とその区間内でイベントが実際に実行された区間との比であってもよし、表示イベントが表す区間とその区間内で実行されたイベントの実行区間の総和との比であってもよいし、表示イベントが表す区間内で実行されたイベントの実行区間の平均値であってもよい。
【００６０】
さらに、統計情報は、表示イベントが表すイベントに関連する情報であり、例えば、表示イベントが表すイベント数であってもよいし、イベントが動作する区間情報であってもよいし、イベントが動作する区間のその総和であってもよい。
【００６１】
・オブジェクト生成部
オブジェクト生成部１０９は、表示イベント情報記憶部１０６に記憶される表示イベント情報と、軸情報記憶部１０４に記憶される軸情報とを入力し、入力した表示イベント情報の区間情報と軸情報の時間軸情報とに基づいて、時間軸方向の表示位置と表示サイズとを決定する。また、オブジェクト生成部１０９は、表示イベント情報の属性情報と軸情報の属性軸情報とに基づいて属性軸方向の表示位置を決定し、表示イベント情報の密度情報に基づいて表示方式を決定し、表示イベント情報の複数イベント表示情報に基づいてユーザ入力に対するアクションを決定し、イベントを表すイベントオブジェクトを生成する。
【００６２】
ここで、イベントオブジェクトの生成について、表示イベント情報１２０１に着目して説明する。オブジェクト生成部１０９は、まず、軸情報の時間軸情報９０１と、表示イベント情報１２０１の実行開始情報“０”および実行終了情報“３０００”とに基づいて、時間軸方向の表示サイズと表示位置とを決定する。また、オブジェクト生成部１０９は、軸情報の属性軸情報９０２に基づいて属性軸方向の表示位置を決定し、表示イベント情報１２０１の密度情報に基づいて表示方式を決定し、表示イベント情報１２０１の複数イベント表示情報に基づいてユーザのイベントオブジェクトへのユーザ入力に対するアクションを決定する。
【００６３】
表示方式の決定では、たとえば密度情報に基づいてイベントオブジェクトの色を決定してもよいし、複数イベント表示情報が“ＴＲＵＥ”である場合にはイベント数等の情報をテキストで表示すると決定してもよいし、複数イベント表示情報が“ＦＡＬＳＥ”でない場合には区間情報を表示すると決定してもよい。なお、表示方式は、密度情報に基づいて決定されればよく、密度情報の差異が分かる表示方式であれば如何様にも変形することができる。密度情報の差異は、例えば色の濃淡で表現されてもよいし、色の輝度で表現されてもよい。
【００６４】
また、ユーザ入力に対するアクションは、複数イベント表示情報が異なる表示イベント間で異なるアクションとなればよい。アクションの違いとしては、例えば統計情報の表示の有無であってもよいし、アクション自体の有無であってもよい。
【００６５】
・軸オブジェクト生成部
軸オブジェクト生成部１１０は、軸情報記憶部１０４から軸情報を入力し、時間軸オブジェクトと属性軸オブジェクトとを生成する。軸オブジェクト生成部１１０は、まず、時間軸情報に基づいて、表示装置の表示間隔１当たり時刻“１００”を表し且つ描画範囲が“０”から“５０００”までの時間軸オブジェクトを生成する。次に、軸オブジェクト生成部１１０は、属性軸情報の属性軸名をラベルとし、そのラベルを表示位置情報に基づいて配置する属性軸オブジェクトを生成する。例えば、“ＢＬＯＣＫ＿Ａ”の属性軸情報において、ラベルを“ＢＬＯＣＫ＿Ａ”、表示位置を“１００”とする属性軸オブジェクトを生成する。
【００６６】
・表示部
表示部１１１は、軸オブジェクト生成部１１０で生成された軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて、軸オブジェクトを画面上に描画する。時間軸オブジェクトは一定区間ごとに時刻情報のラベルを表示し、属性軸オブジェクトは属性ラベルを表示する。表示部１１１は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズの軸オブジェクトを表示してもよいし、表示可能なサイズの軸オブジェクトにサイズを変換して表示してもよい。
【００６７】
また、表示部１１１は、オブジェクト生成部１０９で生成されたイベントオブジェクトを入力し、イベントオブジェクトが持つ表示位置情報に基づいて、イベントオブジェクトを画面上に描画する。本実施形態では、図１３に示すように、表示イベント情報１２０１、１２０２および１２０３を表すイベントオブジェクトをそれぞれ順に１３０１、１３０２および１３０３として表示する。また、時間軸オブジェクトを１３０４、属性軸オブジェクトを１３０５、属性軸ラベルを１３０６，１３０７および１３０８として表示する。
【００６８】
また、表示部１１１は、入力部１１２を用いたユーザからの入力を受け付け、ユーザの入力に基づいて、イベントオブジェクトに定義されたアクションを表示する。例えば図１４に示すように、表示イベント情報１２０２のイベントオブジェクト１４０２にマウスオーバー等のユーザからの入力があった場合、たとえばその統計情報である“イベント数：６０”１４０４を表示する。
【００６９】
以上のように、本実施形態によれば、プログラム構造に基づいてイベントがまとめて表示されるため、大量のイベントが実行されるプログラムの実行状況をユーザに容易に把握させることが可能となる。
【００７０】
なお、本実施形態では、時間軸として、１つの時間軸オブジェクトを表示する場合を例示したが、これに限定されるものではない。たとえば互いに異なる期間を示す複数の時間軸オブジェクトを一画面に表示し、これらに対して各属性軸オブジェクトのイベントオブジェクトを表示してもよい。
【００７１】
（実施形態２）
つぎに、実施形態２について、図面を参照して詳細に説明する。実施形態１では、プログラムの実況状況をプログラム構造に基づいて表示していた。これに対し、実施形態２では、プログラム実行時のメモリアドレス空間へのアクセスをデータ構造に基づいて表示するプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムを例示する。
【００７２】
本実施形態にかかるプログラム情報生成装置（システム）は、実施形態１で説明したプログラム情報生成装置（システム）１０１と同様の構成であってよい。ただし、実施形態１における「イベント」は「アクセス」と読み替えられ、「プログラム構造」は「データ構造」と読み替えられるものとする。また、軸情報としては、時間軸の代わりに、メモリアドレス軸が用いられるとする。
【００７３】
図１５に、実施形態２においてプログラム情報生成装置（システム）１０１が実行するプログラムの一例を示す。図１５に示すように、プログラム１５０１は、メモリメモリアドレス空間表記Ａ［０］［０］〜Ａ［９］［９］で示されるメモリアドレス空間に対し、ループ１５０２の“ＡＣＣＥＳＳ（Ａ［０］[ｉ]）”によりメモリアドレス空間表記Ａ［０］［０］〜Ａ［０］［９］で示される部分メモリアドレス空間へアクセスし、ループ１５０３の“ＡＣＣＥＳＳ（Ａ［１］[ｉ]）”によりメモリアドレス空間表記Ａ［１］［０］〜Ａ［１］［４］で示される部分メモリアドレス区間へアクセスするプログラムである。ここで、メモリアドレス空間表記は、プログラム上の記述でメモリアドレス空間を表すものであればよく、例えば、Ｃ言語においては変数であってもよいし、配列であってもよいし、構造体であってもよい。
【００７４】
以上のようなプログラム１５０１を実行した際のメモリアドレス空間へのアクセス状況を表示装置に表示する場合、全てのメモリアドレス空間を１画面または１つのウィンドウに表示しようとすると、図１６に示すように、表示装置の描画性能次第では１つ１つのアクセスを区別できない場合が生じ得る。一方で、メモリアドレス空間の一部を１画面または１つのウィンドウに表示する場合では、図１７に示すように、メモリアドレス軸の全要素を同時に表示できない場合が生じ得る。そのような場合、スクロールバーなどで表示範囲をスライドさせることで、非表示の範囲を確認することは可能であるが、メモリアドレス空間全体に対するアクセス状況を俯瞰できないため、アクセス状況全体をユーザに把握させ難い場合がある。
【００７５】
そこで本実施形態では、描画性能で表示できないアクセスをデータ構造の階層構造に基づいてまとめて表示するとともに、描画性能で表示できないアクセスについての情報を表示することで、アクセス状況全体をまとめて表示した場合でもその全体をユーザに把握させることを可能にする。なお、本実施形態では、実施形態１と同様に、描画性能で表示できないアクセスについての情報として、密度情報を用いる。
【００７６】
本実施形態２にかかるプログラム実行状況表示装置（システム）の概略動作は、実施形態１において図６を用いて説明した動作と同様であってよい。ただし、ただし、実施形態１における「イベント」は「アクセス」と読み替えられ、「プログラム構造」は「データ構造」と読み替えられるものとする。
【００７７】
つぎに、本実施形態において、プログラム実行状況表示装置（システム）の各部が記憶または生成する情報について、以下に図面を参照して詳細に説明する。
【００７８】
・データ構造情報
図１８Ａ〜図１８Ｃは、図１５に例示したプログラム１５０１がアクセスするメモリアドレス空間のデータ構造情報の例を示す図である。これらのデータ構造情報は、実施形態１において図７Ａ〜図７Ｉを用いて例示したプログラム構造情報の代替となるものである。
【００７９】
図１８Ａに示すメモリアドレス空間表記Ａ［］［］のアクセス先となるメモリアドレス空間のデータ構造情報１８０１は、データ構造識別情報が“Ａ［］［］”、データ階層情報が“Ａ［］［］”、包含データ構造識別情報が“なし”の情報であり、メモリアドレス空間全体を表す階層構造である。したがって、データ構造情報１８０１には、包含データ構造情報が存在しない。
【００８０】
また、図１８Ｂに示すメモリアドレス空間表記Ａ［０］［］のアクセス先となる部分メモリアドレス空間のデータ構造情報１８０２は、データ構造識別情報が“Ａ［０］［］”、データ階層情報が“Ａ［０］［］”、包含データ構造識別情報が“Ａ［］［］”の情報である。データ構造情報１８０２には、メモリアドレス空間表記Ａ［］［］のデータ構造情報１８０１に包含されるデータ構造情報であることを示す包含データ構造識別情報“Ａ［］［］”が付与されている。
【００８１】
同様に、図１８Ｃに示すメモリアドレス空間表記Ａ［１］［］のアクセス先となる部分メモリアドレス空間のデータ構造情報１８０３は、データ構造識別情報が“Ａ［１］［］”、データ階層情報が“Ａ［１］［］”、包含データ構造識別情報が“Ａ［］［］”の情報である。データ構造情報１８０３には、メモリアドレス空間表記Ａ［］［］のデータ構造情報１８０１に包含されるデータ構造情報であることを示す包含データ構造識別情報“Ａ［］［］”が付与されている。
【００８２】
さらに、図１８Ｄに示すメモリアドレス空間表記Ａ［０］［０］〜Ａ［０］［９］のアクセス先となる部分メモリアドレス空間のデータ構造情報１８１１〜１８２０は、それぞれ、データ構造識別情報が“Ａ［０］［０］”〜“Ａ［０］［９］”、データ階層情報が“Ａ［０］［０］”〜“Ａ［０］［９］”、包含データ構造識別情報が共通して“Ａ［０］［］”の情報である。データ構造情報１８０３には、メモリアドレス空間表記Ａ［０］［］のデータ構造情報１８０２に包含されるデータ構造情報であることを示す包含データ構造識別情報“Ａ［０］［］”が付与されている。
【００８３】
同様に、図１８Ｅに示すメモリアドレス空間表記Ａ［１］［０］〜Ａ［１］［９］のアクセス先となる部分メモリアドレス空間のデータ構造情報１８２１〜１８３０は、それぞれ、データ構造識別情報が“Ａ［１］［０］”〜“Ａ［１］［９］”、データ階層情報が“Ａ［１］［０］”〜“Ａ［１］［９］”、包含データ構造識別情報が共通して“Ａ［１］［］”の情報である。データ構造情報１８０３には、メモリアドレス空間表記Ａ［１］［］のデータ構造情報１８０３に包含されるデータ構造情報であることを示す包含データ構造識別情報“Ａ［１］［］”が付与されている。
【００８４】
・アクセス情報
図１９Ａおよび図１９Ｂは、図１５に例示したプログラム１５０１を実行することによって発生するアクセスのアクセス情報の例を示す図である。これらのアクセス情報は、実施形態１において図８Ａ〜図８Ｄを用いて例示したイベント情報の代替となるものである。
【００８５】
図１９Ａは、図１５のプログラム１５０１におけるループ１５０２を実行した際に発生するアクセスのアクセス情報１９０１〜１９１０を示す。たとえば、アクセス情報１９０１は、ループ１５０２の１回目のイテレーション実行（ｉが０である場合）を示し、始点メモリアドレス情報が“０ｘ００００００００”、終点メモリアドレス情報が“０ｘ００００ＦＦＦＦ”、データ構造識別情報が“Ａ［０］［０］”、アクセス回数が“１”である。また、アクセス情報１９０９は、ループ１５０２の１０回目のイテレーション実行（ｉが９である場合）を示し、始点メモリアドレス情報が“０ｘ０００９ＦＦＦＦ”、終点メモリアドレス情報が“０ｘ０００ＡＦＦＦＦ”、データ構造識別情報が“Ａ［０］［９］”、アクセス回数が“１”である。
【００８６】
一方、図１９Ｂは、図１５のプログラム１５０１におけるループ１５０３を実行した際に発生するアクセスのアクセス情報１９１１〜１９１５を示す。たとえば、アクセス情報１９１１は、ループ１５０３の１回目のイテレーション実行（ｉが０である場合）を示し、始点メモリアドレス情報が“０ｘ００Ｆ０００００”、終点メモリアドレス情報が“０ｘ００Ｆ０ＦＦＦＦ”、データ構造識別情報が“Ａ［１］［０］”、アクセス回数が“１”である。また、アクセス情報１９１９は、ループ１５０３の５回目のイテレーション実行（ｉが４である場合）を示し、始点メモリアドレス情報が“０ｘ００Ｆ９ＦＦＦＦ”、終点メモリアドレス情報が“０ｘ００ＦＡＦＦＦＦ”、データ構造識別情報が“Ａ［１］［９］”、アクセス回数が“１”である。
【００８７】
・軸情報
図２０は、本実施形態にかかる軸情報の例を示す。図２０に示すように、本実施形態にかかる軸情報２００１は、最小描画区間単位情報２００２を“０ｘＦＦＦＦ”とし、メモリアドレス軸描画範囲情報２００３を“０−０ｘ１００００００００”としている。これは、最小描画単位がメモリアドレス空間の幅０ｘＦＦＦＦを表すことと、表示範囲がメモリアドレス空間におけるメモリアドレス０からメモリアドレス０ｘ１００００００００であることとを示している。
【００８８】
・表示アクセス単位情報
図２１Ａおよび図２１Ｂは、本実施形態にかかる表示アクセス単位情報の例を示す。これらの表示アクセス単位情報は、実施形態１において図１０Ａ〜図１０Ｃを用いて例示した表示イベント単位情報の代替となるものである。図２１Ａに示す表示アクセス単位情報２１０１は、データ構造識別情報が“Ａ［０］[]”である。一方、図２１Ｂに示す表示アクセス単位情報２１０２は、データ構造識別情報が“Ａ［１］[]”である。
【００８９】
ここで、図２２を用いて、表示アクセス単位情報の生成例を述べる。表示アクセス単位情報の生成では、アクセス情報に基づいて各データ構造における区間情報が計算される。本例では、データ構造の区間情報が最小区間情報として計算される。図２２に、各データ構造とその最小区間情報を示す。データ構造２２００、２２０１、２２０２、…２２１０、２２１１Ａ〜２２１１Ｊ、２２１２Ａ〜２２１２Ｊ、…、２２２０Ａ〜２２２０Ｊのうち、データ構造２２００、２２０１および２２０２は、それぞれデータ構造情報１８０１、１８０２、１８０３に対応し、また、データ構造２２１１Ａ〜２２１１Ｊおよび２２１２Ａ〜２２１２Ｊは、データ構造情報１８１１〜１８２０および１８２１〜１８３０に対応する。
【００９０】
表示アクセス単位情報の生成では、メモリアドレス軸情報の最小描画区間単位情報２００２の区間“０ｘＦＦＦＦ”以上を満足する最小区間情報を持つデータ構造２２００、２２０１〜２２１０を特定し、さらに、同一の隣接包含データ構造情報を持つ全てのデータ構造情報がメモリアドレス軸情報の最小描画区間単位情報の区間“０ｘＦＦＦＦ”以上を満足する最小区間情報を持つデータ構造２２００、２２０１〜２２１０を特定する。ここで、選択されたデータ構造２２００、２２０１〜２２１０のうち、互いに包含関係なく、最小区間情報が最小であり且つプログラム１５０１の実行によってアクセスされるデータ構造２２０１および２２０２が表示アクセス単位とされ、そのデータ構造を示すデータ構造情報のデータ構造識別情報に基づいて、表示アクセス単位情報２１０１および２１０２が生成される。
【００９１】
・表示アクセス情報
図２３Ａおよび図２３Ｂは、本実施形態にかかる表示アクセス情報の例を示す。これらの表示アクセス情報は、実施形態１において図１２Ａ〜図１２Ｃを用いて例示した表示イベント情報の代替となるものである。
【００９２】
本実施形態において、区間情報は始点メモリアドレス情報と終点メモリアドレス情報とからなり、密度情報は表示アクセスが表す区間とその区間内で実際にアクセスが発生した区間との比とし、統計情報はアクセスされた要素数とする。図２３Ａに示す表示アクセス情報２３０１は、始点メモリアドレス情報を“０ｘ００００００００”、終点メモリアドレス情報を“０ｘ０００ＡＦＦＦＦ”、属性情報を“Ａ［０］[]”、密度情報を“１．０”、複数アクセス表示情報を“ＴＲＵＥ”、要素数を“１０”とする情報である。また、図２３Ｂに示す表示アクセス情報２３０２は、始点メモリアドレス情報を“０ｘ００Ｆ０００００”、終点メモリアドレス情報を“０ｘ００ＦＡＦＦＦＦ”、属性情報を“Ａ［１］[]”、密度情報を“０．５”、複数アクセス表示情報を“ＴＲＵＥ”、要素数を“５”とする情報である。
【００９３】
本実施形態において、オブジェクト生成部１０９は、表示アクセス情報記憶部（表示イベント情報記憶部１０６に相当）に記憶される表示アクセス情報と、軸情報記憶部１０４に記憶される軸情報とを入力し、入力した表示アクセス情報の区間情報と軸情報のメモリアドレス軸情報とに基づいて、メモリアドレス軸方向の表示位置と表示サイズとを決定する。また、オブジェクト生成部１０９は、表示アクセス情報の密度情報に基づいて表示方式を決定し、表示アクセス情報の複数アクセス表示情報に基づいてユーザ入力に対するアクションを決定し、アクセスを表すアクセスオブジェクト（イベントオブジェクトに相当）を生成する。
【００９４】
なお、本実施形態では、密度情報を、表示アクセスが表す区間とその区間内で実際にアクセスが発生した区間との比としたが、これに限定されるものではない。たとえば、表示アクセスが表す区間とその区間内で実際にアクセスが発生した区間との比に統計情報として用いる要素数を加えた値を密度情報として用いるなど、種々変形することが可能である。
【００９５】
また、本実施形態では、軸情報として属性軸を用いていないが、たとえばマルチコアなど、複数のプロセッサから同一メモリアドレス空間へのアクセスがある場合には、実施形態１と同様に、属性軸を用いて各プロセッサからのアクセスを分離して表示してもよい。
【００９６】
また、表示部１１１は、実施形態１と同様に、軸オブジェクト生成部１１０で生成された軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて、軸オブジェクトを画面上に描画する。この際、マルチコア対応の場合には、属性軸オブジェクトとして属性ラベルを表示してもよい。
【００９７】
また、表示部１１１は、オブジェクト生成部１０９で生成されたアクセスオブジェクトを入力し、アクセスオブジェクトが持つ表示位置情報に基づいて、アクセスオブジェクトを画面上に描画する。本実施形態では、図２４に示すように、表示アクセス情報２３０１および２３０２を表すアクセスオブジェクトをそれぞれ順に２４０２および２４０２として表示する。また、メモリアクセス軸オブジェクト２４０４を表示する。なお、実施形態１と同様に、表示部１１１は、入力部１１２を用いたユーザからの入力を受け付け、ユーザの入力に基づいて、イベントオブジェクトに定義されたアクションを表示してもよい。
【００９８】
また、実施形態１と同様、表示部１１１は、入力部１１２を用いたユーザからの入力を受け付け、ユーザの入力に基づいて、アクセスオブジェクトに定義されたアクションを表示する。例えば図２５に示すように、表示アクセス情報２３０１のイベントオブジェクト２４０２にマウスオーバー等のユーザからの入力があった場合、たとえばその統計情報である“要素数：１０”２５０４を表示する。
【００９９】
以上のように、本実施形態によれば、プログラム実行時のメモリアドレス空間へのアクセスがデータ構造に基づいて表示されるため、大量のアクセスが発生するプログラムの実行状況をユーザに容易に把握させることが可能となる。
【０１００】
なお、本実施形態では、メモリアドレス空間表記Ａ［０］［０］のようなデータ構造における最小単位に対するアクセス命令を前提として説明したが、これに限るものではない。たとえばＣ言語における“ｍｅｍｓｅｔ”のような、メモリアドレス空間表記Ａ[０]［］などの中規模単位へのアクセス命令に対しても同様に、本実施形態を適用することが可能である。
【０１０１】
また、上記実施形態では、１つのメモリアドレス空間に対しては１つの属性軸とした場合を説明したが、これに限るものではない。たとえば上記において、変数Ａ［０］[]による中規模単位でのアクセスと、メモリアドレス空間表記Ａ［１］[]による中規模単位でのアクセスとを、別の属性軸としてもよい。その場合、属性軸毎にメモリアドレス軸を設定してもよい。
【０１０２】
さらに、上記実施形態では、メモリアドレス空間へのアクセスをデータ構造に基づいてまとめて表示する場合を例示したが、これに限るものではない。たとえばアクセスをプログラム構造（データアクセス命令）に基づいてまとめて表示するようにも構成することが可能である。
【０１０３】
上記実施形態およびその変形例は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、仕様等に応じて種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施形態が可能であることは上記記載から自明である。例えば実施形態に対して適宜例示した変形例は、他の実施形態と組み合わせることも可能であることは言うまでもない。
【符号の説明】
【０１０４】
１０１…プログラム実行状況表示装置（システム）、１０２…イベント情報記憶部、１０３…プログラム構造情報記憶部、１０４…軸情報記憶部、１０５…表示イベント単位情報記憶部、１０６…表示イベント情報記憶部、１０７…表示イベント単位情報生成部、１０８…表示イベント情報生成部、１０９…オブジェクト生成部、１１０…軸オブジェクト生成部、１１１…表示部、１１２…入力部
【図１】
2015167002.tif 000003
【図２】
2015167002.tif 000004
【図３】
2015167002.tif 000005
【図４】
2015167002.tif 000006
【図５】
2015167002.tif 000007
【図６】
2015167002.tif 000008
【図７Ａ】
2015167002.tif 000009
【図７Ｂ】
2015167002.tif 000010
【図７Ｃ】
2015167002.tif 000011
【図７Ｄ】
2015167002.tif 000012
【図７Ｅ】
2015167002.tif 000013
【図７Ｆ】
2015167002.tif 000014
【図７Ｇ】
2015167002.tif 000015
【図７Ｈ】
2015167002.tif 000016
【図７Ｉ】
2015167002.tif 000017
【図８Ａ】
2015167002.tif 000018
【図８Ｂ】
2015167002.tif 000019
【図８Ｃ】
2015167002.tif 000020
【図８Ｄ】
2015167002.tif 000021
【図９Ａ】
2015167002.tif 000022
【図９Ｂ】
2015167002.tif 000023
【図９Ｃ】
2015167002.tif 000024
【図９Ｄ】
2015167002.tif 000025
【図１０Ａ】
2015167002.tif 000026
【図１０Ｂ】
2015167002.tif 000027
【図１１】
2015167002.tif 000028
【図１２Ａ】
2015167002.tif 000029
【図１２Ｂ】
2015167002.tif 000030
【図１２Ｃ】
2015167002.tif 000031
【図１３】
2015167002.tif 000032
【図１４】
2015167002.tif 000033
【図１５】
2015167002.tif 000034
【図１６】
2015167002.tif 000035
【図１７】
2015167002.tif 000036
【図１８Ａ】
2015167002.tif 000037
【図１８Ｂ】
2015167002.tif 000038
【図１８Ｃ】
2015167002.tif 000039
【図１８Ｄ】
2015167002.tif 000040
【図１８Ｅ】
2015167002.tif 000041
【図１９Ａ】
2015167002.tif 000042
【図１９Ｂ】
2015167002.tif 000043
【図２０】
2015167002.tif 000044
【図２１Ａ】
2015167002.tif 000045
【図２１Ｂ】
2015167002.tif 000046
【図２２】
2015167002.tif 000047
【図２３Ａ】
2015167002.tif 000048
【図２３Ｂ】
2015167002.tif 000049
【図２４】
2015167002.tif 000050
【図２５】
2015167002.tif 000051
【手続補正書】
【提出日】平成27年2月20日(2015.2.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
【特許文献１】米国特許第７６９８６８６号明細書