JP6189232B2 - プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム - Google Patents

プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム Download PDF

Info

Publication number
JP6189232B2
JP6189232B2 JP2014041853A JP2014041853A JP6189232B2 JP 6189232 B2 JP6189232 B2 JP 6189232B2 JP 2014041853 A JP2014041853 A JP 2014041853A JP 2014041853 A JP2014041853 A JP 2014041853A JP 6189232 B2 JP6189232 B2 JP 6189232B2
Authority
JP
Japan
Prior art keywords
information
event
display
program
unit
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.)
Expired - Fee Related
Application number
JP2014041853A
Other languages
English (en)
Other versions
JP2015167002A (ja
Inventor
黒田 亮
亮 黒田
新肖 李
新肖 李
秀則 松崎
秀則 松崎
信明 東條
信明 東條
真由子 肥塚
真由子 肥塚
暢康 中島
暢康 中島
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014041853A priority Critical patent/JP6189232B2/ja
Priority to US14/627,305 priority patent/US9536330B2/en
Publication of JP2015167002A publication Critical patent/JP2015167002A/ja
Application granted granted Critical
Publication of JP6189232B2 publication Critical patent/JP6189232B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Landscapes

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

Description

本発明の実施形態は、プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムに関する。
従来、プログラムの実行トレースに基づいて実行されたプログラムのスレッドを表すスレッドオブジェクトとイベントとを、時間軸とスレッドとを軸要素する座標系に表示することで、ユーザによるプログラム解析をサポートするプログラム実行状況表示に関する技術が存在する。この技術は、プログラムの全実行状況のアクティビティを表示する領域と、特定範囲の詳細な実行状況をスレッド軸と時間軸とを用いて表示する領域とを持ち、全実行状況の表示する領域から特定範囲を指定する機能をユーザに提供することで、対話的にプログラムの全実行状況から特定箇所の詳細情報を表示することを可能としている。
米国特許第7698686号明細書
プログラム開発者のプログラム開発時に、プログラムの実行状況を表示することで動作の確認や性能最適化等を行う場合、従来のプログラム実行状況表示装置では、表示装置にプログラムの実行状況が表示されるため、その表示領域は表示装置のサイズに制限されてしまう。そのため、プログラムの詳細実行状況を表示する領域において大量のイベントを表示する場合は、例えば、表示装置の表示サイズ制約から全イベントの情報を同時に表示できない、全イベントの情報を同時に表示した際にイベントを表すオブジェクトの表示サイズが極めて小さいもしくは表示装置の描画性能で表示できない等、プログラムの詳細実行状況の把握が困難となる場合が存在する。
以下の実施形態では、大量の呼び出しが発生するような大規模プログラムにおいても、プログラム実行の実行状況をユーザに把握させることが可能なプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムを提供することを目的とする。
実施形態にかかるプログラム情報生成システムは、プログラムの実行によって発生する2つ以上のイベントを表現する1つ以上のイベントオブジェクトを生成するプログラム情報生成システムであって、前記プログラムの実行状況を描画する座標系の軸情報を記憶する軸情報記憶部と、前記軸情報に基づいて前記座標系を表現する軸オブジェクトを生成する軸オブジェクト生成部と、前記2つ以上のイベントそれぞれに関するイベント情報を記憶するイベント情報記憶部と、前記2つ以上のイベントを発生させる前記プログラムの区間に関するプログラム構造情報を記憶するプログラム構造情報記憶部と、前記2つ以上のイベントを表現する1つ以上の表示イベントに関する表示イベント情報を生成する表示イベント情報生成部と、前記表示イベント情報を記憶する表示イベント情報記憶部と、前記表示イベントの表示単位を示す表示イベント単位情報を記憶する表示イベント単位情報記憶部と、前記表示イベント情報に基づいて前記1つ以上のイベントオブジェクトを生成するオブジェクト生成部と、を備えてもよい。前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含んでもよい。前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含んでもよい。前記表示イベント単位情報は、前記1つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含んでもよい。前記表示イベント単位情報記憶部は、前記イベント情報記憶部に記憶された前記イベント情報を表現する前記1つ以上の表示イベントに関する前記表示イベント単位情報を記憶してもよい。各プログラム構造情報は、各プログラム構造情報を識別するプログラム構造識別情報と、各プログラム構造情報と包含関係にあるプログラム構造情報を特定する包含プログラム構造識別情報とを含んでもよい。前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含んでもよい。前記表示イベント情報生成部は、前記イベント情報と前記表示イベント単位情報と前記プログラム構造情報とに基づいて前記表示イベント情報を生成してもよい。前記オブジェクト生成部は、前記表示イベント情報記憶部に記憶された前記表示イベント情報の前記区間情報と、前記軸情報記憶部に記憶された前記軸情報とに基づいて、前記表示イベントを表す前記イベントオブジェクトの表示位置を決定してもよい。
また、実施形態にかかるプログラム情報表示システムは、上述のプログラム情報生成システムと、前記軸オブジェクトと前記1つ以上のイベントオブジェクトとを表示する表示部と、を備えてもよい。
実施形態1に係るプログラム実行状況表示装置(システム)の概要構成例を示すブロック図。 実施形態1で例示するプログラムを示す図。 図2に示すプログラムの実行状況を例示する図。 従来技術によるプログラム実行状況の表示例を示す図。 従来技術によるプログラム実行状況の他の表示例を示す図。 実施形態1にかかるプログラム実行状況表示の概略動作例を示すフローチャート。 実施形態1にかかるプログラム構造情報の例を示す図(その1)。 実施形態1にかかるプログラム構造情報の例を示す図(その2)。 実施形態1にかかるプログラム構造情報の例を示す図(その3)。 実施形態1にかかるプログラム構造情報の例を示す図(その4)。 実施形態1にかかるプログラム構造情報の例を示す図(その5)。 実施形態1にかかるプログラム構造情報の例を示す図(その6)。 実施形態1にかかるプログラム構造情報の例を示す図(その7)。 実施形態1にかかるプログラム構造情報の例を示す図(その8)。 実施形態1にかかるプログラム構造情報の例を示す図(その9)。 実施形態1にかかるイベント情報の例を示す図(その1)。 実施形態1にかかるイベント情報の例を示す図(その2)。 実施形態1にかかるイベント情報の例を示す図(その3)。 実施形態1にかかるイベント情報の例を示す図(その4)。 実施形態1にかかる軸情報の例を示す図(その1)。 実施形態1にかかる軸情報の例を示す図(その2)。 実施形態1にかかる軸情報の例を示す図(その3)。 実施形態1にかかる軸情報の例を示す図(その4)。 実施形態1にかかる表示イベント単位情報の例を示す図(その1)。 実施形態1にかかる表示イベント単位情報の例を示す図(その2)。 実施形態1にかかる表示イベント単位情報の生成例を示す図。 実施形態1にかかる表示イベント情報の例を示す図(その1)。 実施形態1にかかる表示イベント情報の例を示す図(その2)。 実施形態1にかかる表示イベント情報の例を示す図(その3)。 実施形態1によるプログラム実行状況の表示例を示す図。 実施形態1によるプログラム実行状況の他の表示例を示す図。 実施形態2においてプログラム情報生成装置(システム)が実行するプログラムの一例を示す図。 従来技術によるプログラム実行状況の表示例を示す図。 従来技術によるプログラム実行状況の他の表示例を示す図。 実施形態2にかかるデータ構造情報の例を示す図(その1)。 実施形態2にかかるデータ構造情報の例を示す図(その2)。 実施形態2にかかるデータ構造情報の例を示す図(その3)。 実施形態2にかかるデータ構造情報の例を示す図(その4)。 実施形態2にかかるデータ構造情報の例を示す図(その5)。 実施形態2にかかるアクセス情報の例を示す図(その1)。 実施形態2にかかるアクセス情報の例を示す図(その2)。 実施形態2にかかる軸情報の例を示す図。 実施形態2にかかる表示アクセス単位情報の例を示す図(その1)。 実施形態2にかかる表示アクセス単位情報の例を示す図(その2)。 実施形態2にかかる表示アクセス単位情報の生成例を示す図。 実施形態2にかかる表示アクセス情報の例を示す図(その1)。 実施形態2にかかる表示アクセス情報の例を示す図(その2)。 実施形態2によるプログラム実行状況の他の表示例を示す図。 実施形態2によるプログラム実行状況の他の表示例を示す図。
以下、添付図面を参照しながら、例示する実施形態にかかるプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムを詳細に説明する。
(実施形態1)
まず、実施形態1にかかるプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムについて、図面を参照して詳細に説明する。
図1は、実施形態1に係るプログラム実行状況表示装置(システム)の概要構成例を示すブロック図である。プログラム実行状況表示装置(システム)101は、イベント情報記憶部102、プログラム構造情報記憶部103、軸情報記憶部104、表示イベント単位情報記憶部105、表示イベント情報記憶部106、表示イベント単位情報生成部107、表示イベント情報生成部108、オブジェクト生成部109、軸オブジェクト生成部110、表示部111、および入力部112を備える。
なお、本実施形態において、プログラムとは、コンピュータへ指示する命令を、特定の言語や形式で記述したものである。また、イベントとは、プログラムやプロセスの実行時に発生する処理の単位とする。このイベントは、たとえば関数やループや条件分岐等のプログラムの構成単位であってもよいし、メモリアクセス、命令実行、スレッド生成、同期処理等の特定の処理であってもよい。
以下の説明では、図2に示すプログラムを実行した際の実行状況を表示する例を述べる。図2に示すように、プログラム201は、関数“FUNCTION”202内で、繰り返し処理を表すループ“LOOP_A”203と“TASK_C”209とを実行するプログラムである。“LOOP_A”203は、“BLOCK_A”204”と“BLOCK_B”205とからなり、条件分岐結果に基づいてどちらかを実行するループである。また、“BLOCK_A”204は、“TASK_A0”206と“TASK_A1”207とからなる処理であり、“BLOCK_B”205は、“TASK_B”208からなる処理である。
以上のようなプログラム201の実行状況は、図3に示すように、イベント“TASK_A0”とイベント“TASK_A1”301とイベント“TASK_B”302とを含むループ“LOOP_A”303を600回実行した後、“TASK_C”304を1回実行する内容となる。
本実施形態では、図3に示すプログラム実行状況が、時間軸を含む平面または空間に表示される。本実施形態において、時間軸は、イベントの実行時間を表す軸である。
一般的に、プログラムの実行状況を表示する表示装置の表示画面サイズもしくは表示ウインドウサイズには限りがある。そのため、時間軸に一度に表示可能な要素数には限りがある。図4および図5に、上記プログラム実行状況の従来技術による表示例を示す。
図4は、時間軸要素の表示サイズを固定した例である。この場合、同時に表示可能な実行期間が限られている(図4では“0”〜“10”の実行期間)ため、時間軸の全要素を同時に表示できない場合が生じ得る。そのような場合、スクロールバーなどで表示範囲をスライドさせることで、非表示の範囲を確認することは可能であるが、プログラム実行状況全体を俯瞰できないため、プログラム実行状況全体をユーザに把握させ難い場合がある。
また、図5は、時間軸の全要素を同時に表示する場合を示す。この場合、従来技術では、時間軸要素の表示サイズが表示画面サイズもしくは表示ウインドウサイズから決定される。そのため、表示装置の描画性能次第では複数のイベントが描画最小単位(たとえば解像度)以下のサイズとなってしまい、1つ1つのイベントを区別できない場合が生じ得る。例えば、図5に示す例では、“BLOCK_A”に含まれるイベント“TASK_A0”502と、“TASK_A1”503と、“BLOCK_B”に含まれるイベント“TASK_B”504との実行時間をそれぞれ把握することは困難である。
そこで本実施形態では、描画性能で表示できないイベントをプログラム構造の階層構造に基づいてまとめて表示するとともに、描画性能で表示できないイベントについての情報を表示することで、プログラム実行状況全体をまとめて表示した場合でもその全体をユーザに把握させることを可能にする。なお、本実施形態では、描画性能で表示できないイベントについての情報として、密度情報を用いる。密度情報の詳細については、後述において触れる。
つづいて、本実施形態にかかるプログラム実行状況表示装置(システム)の概略動作について、図面を用いて詳細に説明する。図6は、実施形態1にかかるプログラム実行状況表示の概略動作例を示すフローチャートである。図6に示すように、本動作では、まず、表示イベント単位情報生成部107は、イベント情報記憶部102からイベント情報を入力し、プログラム構造情報記憶部103からプログラム構造情報を入力し、軸情報記憶部104から軸情報を入力し、入力したイベント情報とプログラム構造情報と軸情報とから表示イベント単位情報を生成する(ステップS601)。生成された表示イベント単位情報は、表示イベント単位記憶部105に記憶される。
次に、表示イベント情報生成部108は、イベント情報記憶部102からイベント情報を入力とし、表示イベント単位記憶部105から表示イベント単位情報を入力し、プログラム構造情報記憶部103からプログラム構造情報を入力し、入力したイベント情報と表示イベント単位情報とプログラム構造情報とから表示イベント情報を生成する(ステップS602)。生成された表示イベント情報は、表示イベント情報記憶部106に記憶される。
次に、オブジェクト生成部109は、表示イベント情報記憶部106の表示イベント情報を入力し、入力した表示イベント情報からイベントオブジェクトを生成する(ステップS603)。また、軸オブジェクト生成部110は、軸情報記憶部から軸情報を入力し、入力した軸情報から軸オブジェクトを生成する(ステップS604)。
以上のように、イベントオブジェクトと軸オブジェクトとが生成されると、表示部111は、これらイベントオブジェクトと軸オブジェクトとを入力し、入力したイベントオブジェクトと軸オブジェクトを用いてプログラム実行状況を表示する(ステップS605)。
つぎに、本実施形態にかかるプログラム実行状況表示装置(システム)の各部の詳細な構成および動作について、以下に説明する。
・プログラム構造情報記憶部
プログラム構造情報記憶部103は、少なくとも1つのプログラム構造情報を記憶する記憶部である。このプログラム構造情報記憶部103は、PC(パーソナルコンピュータ)等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。ここで、プログラム構造情報とは、1つのプログラム構造情報を特定するプログラム構造識別情報と、プログラム階層情報と、包含関係にあるプログラム構造情報を特定する包含プログラム構造識別情報とを含む。
本実施形態では、包含プログラム構造識別情報は、第1のプログラム構造情報とこの第1のプログラム構造情報を包含する第2のプログラム構造情報との間に第1のプログラム構造情報を包含する第3のプログラム構造情報を含まない“隣接する”第2の包含プログラム構造情報を識別する情報であるとする。
図7A〜図7Iに、図2に例示したプログラム201に関するプログラム構造情報の一例を示す。図7Aに示す“FUNCTION“のプログラム構造情報701は、プログラム構造識別情報が“0”、プログラム階層情報が“FUNCTION”、包含プログラム構造識別情報が“なし”の情報であり、図2に示すプログラム201全体の範囲を表す階層構造である。したがって、プログラム構造情報701には、包含プログラム構造情報が存在しない。また、図7Bに示す“LOOP_A”のプログラム構造情報702は、プログラム構造識別情報が“1”、プログラム階層情報が“LOOP_A”、包含プログラム構造識別情報が“0”の情報であり、図2に示すプログラム201における“LOOP_A”203の範囲を表す階層構造である。したがって、プログラム構造情報702は、“FUNCTION”のプログラム構造情報701に包含されるプログラム構造情報であることを示す包含プログラム構造識別情報“0”が付与されている。
プログラム201における他のプログラム構造情報703〜709も同様に、プログラム構造識別情報にそれぞれを一意に識別するための識別子“2”〜“9”が付与され、プログラム階層情報にそれぞれの階層情報を表す文字列が付与され、包含プログラム構造識別情報にそれぞれを包含するプログラム構造情報を識別するためのプログラム構造識別情報が付与されている。
ここで、プログラム階層情報は、プログラムの特定階層を示す情報である。これは、例えば、ファイル、関数、ループ、条件分岐などのプログラムの階層情報であってもよいし、配列、構造体などのデータ構造の集合やその部分集合を示す情報であってもよい。また、プログラム構造識別情報は、プログラム構造情報記憶部に含まれる複数のプログラム構造情報から1つのプログラム構造情報を特定する情報である。これは、例えば、プログラム構造の固有名であっても良いし、プログラム構造のIDであってもよい。なお、プログラム構造識別情報とプログラム階層情報とは、何れか一方にまとめることも可能である。
包含プログラム構造識別情報は、プログラム構造を包含するプログラム構造情報を特定する識別情報である。1つの識別情報は、プログラム構造情報記憶部103のプログラム構造情報のプログラム構造識別情報の1つと対応する。また、包含するプログラム構造情報がない場合において、包含プログラム構造識別情報は、“ない”ことを示す情報であればよく、例えば“NULL”であってもよいし、“無”であってもよい。さらに、包含プログラム構造識別情報は、1つであってもよいし、複数であってもよい。さらにまた、包含プログラム構造識別情報は、第1のプログラム構造情報とこの第1のプログラム構造情報を包含する第2のプログラム構造情報との間に第1のプログラム構造情報を包含する第3のプログラム構造情報を含まない“隣接する”第2の包含プログラム構造情報を識別する情報であってもよいし、第1のプログラム構造情報とこの第1のプログラム構造情報を包含する第2のプログラム構造情報との間に第1のプログラム構造情報を包含する第3のプログラム構造情報を含む“隣接しない”第2の包含プログラム構造情報を識別する情報であってもよい。
・イベント情報記憶部
イベント情報記憶部102は、少なくとも2つのイベント情報を記憶する記憶部である。このイベント情報記憶部102は、PC(パーソナルコンピュータ)等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。また、イベント情報とは、プログラム実行時に実行されたイベントの情報であり、区間情報と、プログラム構造識別情報と、イベント属性情報とを含む。
本実施形態では、実行時間が1サイクルのイベント“TASK_A0”206と、実行時間が8サイクルのイベント“TASK_A1”207と、実行時間が1サイクルのイベント“TASK_B”208とをそれぞれ300回繰り返し実行した後、実行時間が3000サイクル“TASK_C“209を実行した際のプログラム実行状況を表示した場合を示している。
図8A〜図8Dに、本実施形態にかかるイベント情報の例を示す。例えば、図8Aに示すイベント情報801は、“TASK_A0”206の1回目の実行を示し、実行開始時刻が“0”、実行終了時刻が“1”、プログラム構造識別情報が“4”、属性情報が“BLOCK_A”である。また、図8Bに示すイベント情報802は、“TASK_A1”207の1回目の実行を示し、実行開始時刻が“1”、実行終了時刻が“9”、プログラム構造識別情報が“5”、属性情報が“BLOCK_A”である。図8Cに示すイベント情報803は、“TASK_B”208の1回目の実行を示し、実行開始時刻が“9”、実行終了時刻が“10”、プログラム構造識別情報が“7”、属性情報が“BLOCK_B”である。図8Dに示すイベント情報804は、“TASK_C”209の1回目の実行を示し、実行開始時刻が“3000”、実行終了時刻が“6000”、プログラム構造識別情報が“8”、属性情報が“TASK_C”である。ただし、これらのようなイベント情報は、イタレーションによる繰り返しを含む全てのイベントに対して生成されている。
なお、区間情報は、イベントの実行開始時刻と実行期間が定義される情報である。これは、例えば、実行開始時刻と実行期間からなる情報であってもよいし、実行開始時刻と実行終了時刻からなる情報であってもよし、実行期間と実行終了時刻からなる情報であってもよし、イベントの実行開始時刻であってもよいし、イベントの終了時刻であってもよい。また、実行開始時刻、実行終了時刻、および、実行期間は、時間情報である。これらは、例えば、プログラム実行時におけるプロセッサ時刻であってもよいし、プロセッサ時刻に基づいて生成した時間情報であってもよい。
さらに、属性情報は、イベントに関する情報である。これは、例えば、実行トレース情報であってもよいし、プログラムの静的情報であってもよいし、プログラムの実行環境情報であってもよい。
実行トレース情報は、プログラム実行時に取得可能な実行時の状況を表す情報である。これは、例えば、イベントを実行したプロセッサコア情報であってもよいし、イベント実行した命令情報であってもよいし、イベント実行期間であってもよいし、イベントが実行したメモリアクセス情報であってもよいし、イベントが実行した関数コール回数であってもよいし、イベント内の変数の値であってもよいし、イベントがループイタレーションである場合において何回目のイタレーションであるかの情報であってもよし、イベントが割り込み処理であるかの情報であってもよし、配列や構造体などのデータ構造であってもよいし、データ構造のメモリアドレス区間であってもよいし、データ構造の先頭メモリアドレスであってもよいし、データ構造の終端メモリアドレスであってもよい。
プログラムの静的情報は、ソースコードもしくはソースコード管理システムから得られる静的な情報である。これは、例えば、ソースコード上の位置情報であってもよいし、ソフトウェアプログラム構造情報であってもよいし、ソースコードのコンパイル情報であってもよいし、ソースコードのバージョン情報であってもよいし、プログラムがカーネルプログラムであるかの情報であってもよいし、プログラムがユーザプログラムであるかの情報であってもよい。
プログラムの実行環境情報は、プログラムを実行した際の環境の情報である。これは、例えば、プロセッサコア名であってもよいし、サーバ名であってもよいし、サーバの仕様情報であってもよい。
・軸情報記憶部
軸情報記憶部104は、時系列情報と、少なくとも1つ以上の属性軸情報と、少なくとも1つ以上の表示属性特定情報とからなる軸情報を記憶する記憶部である。この軸情報記憶部104は、PC(パーソナルコンピュータ)等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。
ここで、軸情報は、時間軸情報、属性軸情報および表示属性特定情報からなる情報である。時間軸情報は、表示装置の最小描画単位が表す期間を示す情報と、時間軸方向の表示範囲を示す表示範囲情報である。属性軸情報は、軸の要素名と、その表示位置情報とを示す情報であり、イベント情報のイベント属性情報に対応する情報である。
図9A〜図9Dに、本実施形態にかかる軸情報の例を示す。図9Aに示す時間軸情報901は、最小描画単位を“100”とし、表示範囲情報を“0−5000”としている。これは、最小描画単位が100サイクルを表すことと、表示範囲が0サイクルから5000サイクルであることとを示している。また、“BLOCK_A”の属性軸情報902(図9B参照)、“BLOCK_B”の属性軸情報903(図9C参照)、および、“TASK_C”の属性軸情報904(図9D参照)は、表示位置がそれぞれ100、200、300であることを示す。
上記において、時間軸情報は、表示装置の最小描画単位が表す情報を示す情報である。これは、例えば、1表示間隔当たりの期間情報であってもよいし、1期間当たりの表示間隔情報であってもよいし、表示間隔とその表示間隔が表す期間情報からなる情報であってもよい。また、時間軸情報は、プログラム実行状況表示装置が事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと1画面で表示する実行時間情報に基づいて生成してもよい。
属性軸情報は、属性軸の要素名と、その表示位置情報とである。属性軸の要素名には、各イベント情報のイベント属性情報に対応する情報が存在する。属性軸の要素名のいずれかは、属性軸に対応するイベント情報のイベント属性情報と一致する。属性軸の要素名は、プログラム実行状況表示装置が事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよい。
表示位置情報は、表示装置の画面上の属性軸の要素名を表示する位置を表す情報である。この表示位置情報は、プログラム実行状況表示装置が事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと1画面で表示する属性軸の要素数に基づいて生成してもよい。
・表示イベント単位情報記憶部
表示イベント単位情報記憶部105は、少なくとも1つ以上のプログラム表示単位情報を記憶する記憶部である。この表示イベント単位情報記憶部105は、PC(パーソナルコンピュータ)等の情報処理装置に組み込まれたバッファやメモリやストレージ等であってもよいし、情報処理装置に接続されたストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。
ここで、表示イベント単位情報は、イベントの表示単位を定義する情報である。この表示イベント単位情報は、たとえば、最小描画区間単位情報の区間以上の区間を持つプログラム構造単位であり且つ1つ以上のイベント情報に関連するプログラム構造識別情報を含む。ただし、これに限定されず、プログラム構造情報を特定する情報であってもよいし、プログラム構造情報であってもよい。
図10Aおよび図10Bに、本実施形態にかかる表示イベント単位情報の例を示す。図10Aに示す表示イベント単位情報1001は、プログラム構造識別情報が“1”である。図10Bに示す表示イベント単位情報1002は、プログラム構造識別情報が“8”である。
・表示イベント単位情報生成部
表示イベント単位生成部107は、イベント情報記憶部102のイベント情報と、プログラム構造情報記憶部103のプログラム構造情報と、軸情報記憶部104の軸情報とを入力し、入力したイベント情報とプログラム構造情報と軸情報とに基づいて、プログラム構造の区間情報を計算する。次に、表示イベント単位生成部107は、同一の隣接する包含プログラム構造情報を持つ1つ以上のプログラム構造情報の区間情報が軸情報の時間軸情報が示す最小描画単位情報が表す区間以上であるプログラム構造情報を特定する。次に、表示イベント単位生成部107は、1つ以上の特定されたプログラム構造情報から互いに包含関係に無く、最下層のプログラム構造情報で構成されるプログラム構造情報を選択し、そのプログラム構造情報のプログラム構造識別情報を表示イベント単位情報として生成する。
プログラム構造の区間情報は、同じプログラム構造であるイベント情報の区間情報に基づいて計算されていればよく、例えば、区間情報の最大値であってもよいし、最小値であってもよいし、平均であってもよい。
ここで、図11を用いて、表示イベント単位情報の生成例を述べる。表示イベント単位生成部107は、イベント情報に基づいて各プログラム構造における区間情報を計算する。本例では、プログラム構造の区間情報が最小区間情報として計算される。図11に、各プログラム構造とその最小区間情報を示す。プログラム構造1101、1102、1103、1104、1105、1106、1107、1108および1109は、それぞれプログラム構造情報701、702、703、704、705、706、707、708および709に対応する。また、最小区間情報1101〜1109の実行時間は、それぞれ、6000サイクル、3000サイクル、10サイクル、9サイクル、1サイクル、8サイクル、1サイクル、1サイクル、および、3000サイクルである。表示イベント単位生成部107は、時間軸情報の最小描画単位情報の区間“100”以上を満足する最小区間情報を持つプログラム構造1101、1102および1109を特定し、さらに、同一の隣接包含プログラム構造情報を持つ全てのプログラム構造情報が時間軸情報の最小描画単位情報の区間“100”以上を満足する最小区間情報を持つプログラム構造1101、1102および1109を特定する。ここで、選択されたプログラム構造1101、1102および1109のうち、互いに包含関係なく且つ最小区間情報が最小であるプログラム構造1102および1109を表示イベント単位とし、そのプログラム構造を示すプログラム構造情報のプログラム構造識別情報に基づいて、表示イベント単位情報1001および1002が生成される。
また、たとえば最小描画単位情報の区間が区間“9”である場合には、プログラム構造1101、1102、1103、1104および1109を特定し、さらに、同一の隣接包含プログラム構造情報を持つ全てのプログラム構造情報が時間軸情報の最小描画単位情報の区間“9”以上を満足する最小区間情報を持つプログラム構造1101、1102、1103および1109を特定する。ここで、選択されたプログラム構造1101、1102、1103及び1109のうち、互いに包含関係なく且つ最小区間情報が最小であるプログラム構造1103および1109を表示イベント単位とし、そのプログラム構造を示すプログラム構造情報のプログラム構造識別情報に基づいて、表示イベント単位情報が生成される。その場合、図10Aに示す表示イベント単位情報1001は、プログラム構造識別情報が“2”となる。
なお、上述した表示イベント単位情報は、時間軸情報901の時間軸描画範囲に基づいて描画範囲内に含まれるイベント情報に対して生成されてもよいし、全てのイベント情報に対して生成されてもよい。
・表示イベント情報記憶部
表示イベント情報記憶部106は、少なくとも1つ以上の表示イベント情報を記憶する記憶部である。この表示イベント情報記憶部106は、PC(パーソナルコンピュータ)等の情報処理装置に組み込まれたバッファやメモリストレージ等であってもよいし、情報処理承知に接続されるストレージ等であってもよいし、ネットワーク上に配置されたネットワークストレージ等であってもよい。
ここで、表示イベント情報は、区間情報と、属性情報と、密度情報と、複数イベント表示イベント情報と、統計情報とを含む。複数イベント表示イベント情報は、表示イベントが複数のイベントを表しているか否かの情報である。
図12A〜図12Cに、表示イベント情報の例を示す。本実施形態において、区間情報は実行開始情報と実行終了情報とからなり、密度情報は表示イベントが表す区間とその区間内でイベントが実際に実行された区間との比とし、統計情報はイベント数とする。図12Aに示す表示イベント情報1201は、実行開始情報を“0”、実行終了情報を“3000”、属性情報を“BLOCK_A”、密度情報を“0.9”、複数イベント表示情報を“TRUE”、イベント数を“600”とする情報である。また、図12Bに示す表示イベント情報1202は、実行開始情報を“0”、実行終了情報を“3000”、属性情報を“BLOCK_B”、密度情報を“0.1”、複数イベント表示情報を“TRUE”、イベント数を“300”とする情報である。さらに、図12Cに示す表示イベント情報1203は、実行開始情報を“3000”、実行終了情報を“1”、属性情報を“TASK_C”、密度情報を“1”、複数イベント表示情報を“FALSE”、イベント数を“1”とする情報である。
・表示イベント情報生成部
表示イベント情報生成部108は、イベント情報記憶部102のイベント情報と、プログラム構造情報記憶部103のプログラム構造情報と、表示イベント単位情報記憶部105の表示イベント単位情報とを入力し、表示イベント単位情報のプログラム構造識別情報およびイベント情報の属性情報に基づいて表示イベントを決定する。また、表示イベント情報生成部108は、表示イベント毎に、区間情報、属性情報、密度情報、複数イベント表示情報および統計情報を含む表示イベント情報を生成する。表示イベント情報の属性情報は、表示イベントに含まれるイベントの属性情報に基づいて決定される。区間情報は、表示イベントに含まれるイベントの区間情報に基づいて決定される。複数イベント表示情報は、表示イベントに含まれるイベント数に基づいて決定される。統計情報は、表示イベントに含まれるイベントのイベント情報に基づいて決定される。
ここで、表示イベント情報の生成について、表示イベント単位情報1001に着目して説明する。まず、表示イベント単位情報1001のプログラム構造識別情報“1”とプログラム構造情報とに基づいて、包含するプログラム構造情報のプログラム構造識別情報“2”、“3”、“4”、“5”を特定する。次に、特定されたプログラム構造識別情報を持つイベント情報を選択し、プログラム構造識別情報“1”のプログラム構造情報“LOOP_A”で区切られる単位をイベント情報の属性情報毎に1つの表示イベントとする。本実施形態では、プログラム構造識別情報“1”のプログラム構造情報を持つイベント情報は、プログラム201において“TASK_A0”206、“TASK_A1”207および“TASK_B”208である。したがって、“TASK_A0”206、“TASK_A1”207および“TASK_B”208に対応する全イベント情報が“LOOP_A”で1つに区切られ、その区間情報が全イベント情報の区間情報に基づいて決定される。“LOOP_A”の区間情報は、“TASK_A0”206、“TASK_A1”207および“TASK_B”208に対応する全イベント情報の区間情報を包含する区間情報であり、実行開始時間を“0”とし、実行終了時間を“3000”とする。
次に、区切られたイベント情報に対して、属性情報毎に1つの表示イベントを生成する。例えば、属性情報“BLOCK_A”の表示イベントは、“TASK_A0”206とTASK_A1”207とに対応する全イベントを表す。そこで、属性情報“BLOCK_A”の表示イベント情報1201を生成する例を説明する。属性情報“BLOCK_A”の表示イベントの区間情報は、プログラム構造“LOOP_A“の区間情報であり、実行開始時間を“0”とし、実行終了時間を“3000”とし、表示イベント情報1201の属性情報を“BLOCK_A”とし、統計情報を表示イベントが表すイベント数である“1200“とし、複数イベント表示情報を”TRUE“とし、密度情報を表示イベントが表す区間とその区間内でイベントが実際に実行された区間との比を求める式“(1x300+8x300)÷(3000)”に基づいて“0.9”とする。表示イベント情報生成部108は、これらの情報を含む表示イベント情報1201を生成する。
また、密度情報は、表示イベントが表すイベントとその区間情報とに基づいて計算される情報である。これは、例えば、表示イベントが表す区間とその区間内でイベントが実際に実行された区間との比であってもよし、表示イベントが表す区間とその区間内で実行されたイベントの実行区間の総和との比であってもよいし、表示イベントが表す区間内で実行されたイベントの実行区間の平均値であってもよい。
さらに、統計情報は、表示イベントが表すイベントに関連する情報であり、例えば、表示イベントが表すイベント数であってもよいし、イベントが動作する区間情報であってもよいし、イベントが動作する区間のその総和であってもよい。
・オブジェクト生成部
オブジェクト生成部109は、表示イベント情報記憶部106に記憶される表示イベント情報と、軸情報記憶部104に記憶される軸情報とを入力し、入力した表示イベント情報の区間情報と軸情報の時間軸情報とに基づいて、時間軸方向の表示位置と表示サイズとを決定する。また、オブジェクト生成部109は、表示イベント情報の属性情報と軸情報の属性軸情報とに基づいて属性軸方向の表示位置を決定し、表示イベント情報の密度情報に基づいて表示方式を決定し、表示イベント情報の複数イベント表示情報に基づいてユーザ入力に対するアクションを決定し、イベントを表すイベントオブジェクトを生成する。
ここで、イベントオブジェクトの生成について、表示イベント情報1201に着目して説明する。オブジェクト生成部109は、まず、軸情報の時間軸情報901と、表示イベント情報1201の実行開始情報“0”および実行終了情報“3000”とに基づいて、時間軸方向の表示サイズと表示位置とを決定する。また、オブジェクト生成部109は、軸情報の属性軸情報902に基づいて属性軸方向の表示位置を決定し、表示イベント情報1201の密度情報に基づいて表示方式を決定し、表示イベント情報1201の複数イベント表示情報に基づいてユーザのイベントオブジェクトへのユーザ入力に対するアクションを決定する。
表示方式の決定では、たとえば密度情報に基づいてイベントオブジェクトの色を決定してもよいし、複数イベント表示情報が“TRUE”である場合にはイベント数等の情報をテキストで表示すると決定してもよいし、複数イベント表示情報が“FALSE”でない場合には区間情報を表示すると決定してもよい。なお、表示方式は、密度情報に基づいて決定されればよく、密度情報の差異が分かる表示方式であれば如何様にも変形することができる。密度情報の差異は、例えば色の濃淡で表現されてもよいし、色の輝度で表現されてもよい。
また、ユーザ入力に対するアクションは、複数イベント表示情報が異なる表示イベント間で異なるアクションとなればよい。アクションの違いとしては、例えば統計情報の表示の有無であってもよいし、アクション自体の有無であってもよい。
・軸オブジェクト生成部
軸オブジェクト生成部110は、軸情報記憶部104から軸情報を入力し、時間軸オブジェクトと属性軸オブジェクトとを生成する。軸オブジェクト生成部110は、まず、時間軸情報に基づいて、表示装置の表示間隔1当たり時刻“100”を表し且つ描画範囲が“0”から“5000”までの時間軸オブジェクトを生成する。次に、軸オブジェクト生成部110は、属性軸情報の属性軸名をラベルとし、そのラベルを表示位置情報に基づいて配置する属性軸オブジェクトを生成する。例えば、“BLOCK_A”の属性軸情報において、ラベルを“BLOCK_A”、表示位置を“100”とする属性軸オブジェクトを生成する。
・表示部
表示部111は、軸オブジェクト生成部110で生成された軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて、軸オブジェクトを画面上に描画する。時間軸オブジェクトは一定区間ごとに時刻情報のラベルを表示し、属性軸オブジェクトは属性ラベルを表示する。表示部111は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズの軸オブジェクトを表示してもよいし、表示可能なサイズの軸オブジェクトにサイズを変換して表示してもよい。
また、表示部111は、オブジェクト生成部109で生成されたイベントオブジェクトを入力し、イベントオブジェクトが持つ表示位置情報に基づいて、イベントオブジェクトを画面上に描画する。本実施形態では、図13に示すように、表示イベント情報1201、1202および1203を表すイベントオブジェクトをそれぞれ順に1301、1302および1303として表示する。また、時間軸オブジェクトを1304、属性軸オブジェクトを1305、属性軸ラベルを1306,1307および1308として表示する。
また、表示部111は、入力部112を用いたユーザからの入力を受け付け、ユーザの入力に基づいて、イベントオブジェクトに定義されたアクションを表示する。例えば図14に示すように、表示イベント情報1202のイベントオブジェクト1402にマウスオーバー等のユーザからの入力があった場合、たとえばその統計情報である“イベント数:60”1404を表示する。
以上のように、本実施形態によれば、プログラム構造に基づいてイベントがまとめて表示されるため、大量のイベントが実行されるプログラムの実行状況をユーザに容易に把握させることが可能となる。
なお、本実施形態では、時間軸として、1つの時間軸オブジェクトを表示する場合を例示したが、これに限定されるものではない。たとえば互いに異なる期間を示す複数の時間軸オブジェクトを一画面に表示し、これらに対して各属性軸オブジェクトのイベントオブジェクトを表示してもよい。
(実施形態2)
つぎに、実施形態2について、図面を参照して詳細に説明する。実施形態1では、プログラムの実況状況をプログラム構造に基づいて表示していた。これに対し、実施形態2では、プログラム実行時のメモリアドレス空間へのアクセスをデータ構造に基づいて表示するプログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システムを例示する。
本実施形態にかかるプログラム情報生成装置(システム)は、実施形態1で説明したプログラム情報生成装置(システム)101と同様の構成であってよい。ただし、実施形態1における「イベント」は「アクセス」と読み替えられ、「プログラム構造」は「データ構造」と読み替えられるものとする。また、軸情報としては、時間軸の代わりに、メモリアドレス軸が用いられるとする。
図15に、実施形態2においてプログラム情報生成装置(システム)101が実行するプログラムの一例を示す。図15に示すように、プログラム1501は、メモリメモリアドレス空間表記A[0][0]〜A[9][9]で示されるメモリアドレス空間に対し、ループ1502の“ACCESS(A[0][i])”によりメモリアドレス空間表記A[0][0]〜A[0][9]で示される部分メモリアドレス空間へアクセスし、ループ1503の“ACCESS(A[1][i])”によりメモリアドレス空間表記A[1][0]〜A[1][4]で示される部分メモリアドレス区間へアクセスするプログラムである。ここで、メモリアドレス空間表記は、プログラム上の記述でメモリアドレス空間を表すものであればよく、例えば、C言語においては変数であってもよいし、配列であってもよいし、構造体であってもよい。
以上のようなプログラム1501を実行した際のメモリアドレス空間へのアクセス状況を表示装置に表示する場合、全てのメモリアドレス空間を1画面または1つのウィンドウに表示しようとすると、図16に示すように、表示装置の描画性能次第では1つ1つのアクセスを区別できない場合が生じ得る。一方で、メモリアドレス空間の一部を1画面または1つのウィンドウに表示する場合では、図17に示すように、メモリアドレス軸の全要素を同時に表示できない場合が生じ得る。そのような場合、スクロールバーなどで表示範囲をスライドさせることで、非表示の範囲を確認することは可能であるが、メモリアドレス空間全体に対するアクセス状況を俯瞰できないため、アクセス状況全体をユーザに把握させ難い場合がある。
そこで本実施形態では、描画性能で表示できないアクセスをデータ構造の階層構造に基づいてまとめて表示するとともに、描画性能で表示できないアクセスについての情報を表示することで、アクセス状況全体をまとめて表示した場合でもその全体をユーザに把握させることを可能にする。なお、本実施形態では、実施形態1と同様に、描画性能で表示できないアクセスについての情報として、密度情報を用いる。
本実施形態2にかかるプログラム実行状況表示装置(システム)の概略動作は、実施形態1において図6を用いて説明した動作と同様であってよい。ただし、ただし、実施形態1における「イベント」は「アクセス」と読み替えられ、「プログラム構造」は「データ構造」と読み替えられるものとする。
つぎに、本実施形態において、プログラム実行状況表示装置(システム)の各部が記憶または生成する情報について、以下に図面を参照して詳細に説明する。
・データ構造情報
図18A〜図18Cは、図15に例示したプログラム1501がアクセスするメモリアドレス空間のデータ構造情報の例を示す図である。これらのデータ構造情報は、実施形態1において図7A〜図7Iを用いて例示したプログラム構造情報の代替となるものである。
図18Aに示すメモリアドレス空間表記A[][]のアクセス先となるメモリアドレス空間のデータ構造情報1801は、データ構造識別情報が“A[][]”、データ階層情報が“A[][]”、包含データ構造識別情報が“なし”の情報であり、メモリアドレス空間全体を表す階層構造である。したがって、データ構造情報1801には、包含データ構造情報が存在しない。
また、図18Bに示すメモリアドレス空間表記A[0][]のアクセス先となる部分メモリアドレス空間のデータ構造情報1802は、データ構造識別情報が“A[0][]”、データ階層情報が“A[0][]”、包含データ構造識別情報が“A[][]”の情報である。データ構造情報1802には、メモリアドレス空間表記A[][]のデータ構造情報1801に包含されるデータ構造情報であることを示す包含データ構造識別情報“A[][]”が付与されている。
同様に、図18Cに示すメモリアドレス空間表記A[1][]のアクセス先となる部分メモリアドレス空間のデータ構造情報1803は、データ構造識別情報が“A[1][]”、データ階層情報が“A[1][]”、包含データ構造識別情報が“A[][]”の情報である。データ構造情報1803には、メモリアドレス空間表記A[][]のデータ構造情報1801に包含されるデータ構造情報であることを示す包含データ構造識別情報“A[][]”が付与されている。
さらに、図18Dに示すメモリアドレス空間表記A[0][0]〜A[0][9]のアクセス先となる部分メモリアドレス空間のデータ構造情報1811〜1820は、それぞれ、データ構造識別情報が“A[0][0]”〜“A[0][9]”、データ階層情報が“A[0][0]”〜“A[0][9]”、包含データ構造識別情報が共通して“A[0][]”の情報である。データ構造情報1803には、メモリアドレス空間表記A[0][]のデータ構造情報1802に包含されるデータ構造情報であることを示す包含データ構造識別情報“A[0][]”が付与されている。
同様に、図18Eに示すメモリアドレス空間表記A[1][0]〜A[1][9]のアクセス先となる部分メモリアドレス空間のデータ構造情報1821〜1830は、それぞれ、データ構造識別情報が“A[1][0]”〜“A[1][9]”、データ階層情報が“A[1][0]”〜“A[1][9]”、包含データ構造識別情報が共通して“A[1][]”の情報である。データ構造情報1803には、メモリアドレス空間表記A[1][]のデータ構造情報1803に包含されるデータ構造情報であることを示す包含データ構造識別情報“A[1][]”が付与されている。
・アクセス情報
図19Aおよび図19Bは、図15に例示したプログラム1501を実行することによって発生するアクセスのアクセス情報の例を示す図である。これらのアクセス情報は、実施形態1において図8A〜図8Dを用いて例示したイベント情報の代替となるものである。
図19Aは、図15のプログラム1501におけるループ1502を実行した際に発生するアクセスのアクセス情報1901〜1910を示す。たとえば、アクセス情報1901は、ループ1502の1回目のイテレーション実行(iが0である場合)を示し、始点メモリアドレス情報が“0x00000000”、終点メモリアドレス情報が“0x0000FFFF”、データ構造識別情報が“A[0][0]”、アクセス回数が“1”である。また、アクセス情報1909は、ループ1502の10回目のイテレーション実行(iが9である場合)を示し、始点メモリアドレス情報が“0x0009FFFF”、終点メモリアドレス情報が“0x000AFFFF”、データ構造識別情報が“A[0][9]”、アクセス回数が“1”である。
一方、図19Bは、図15のプログラム1501におけるループ1503を実行した際に発生するアクセスのアクセス情報1911〜1915を示す。たとえば、アクセス情報1911は、ループ1503の1回目のイテレーション実行(iが0である場合)を示し、始点メモリアドレス情報が“0x00F00000”、終点メモリアドレス情報が“0x00F0FFFF”、データ構造識別情報が“A[1][0]”、アクセス回数が“1”である。また、アクセス情報1919は、ループ1503の5回目のイテレーション実行(iが4である場合)を示し、始点メモリアドレス情報が“0x00F9FFFF”、終点メモリアドレス情報が“0x00FAFFFF”、データ構造識別情報が“A[1][9]”、アクセス回数が“1”である。
・軸情報
図20は、本実施形態にかかる軸情報の例を示す。図20に示すように、本実施形態にかかる軸情報2001は、最小描画区間単位情報2002を“0xFFFF”とし、メモリアドレス軸描画範囲情報2003を“0−0x100000000”としている。これは、最小描画単位がメモリアドレス空間の幅0xFFFFを表すことと、表示範囲がメモリアドレス空間におけるメモリアドレス0からメモリアドレス0x100000000であることとを示している。
・表示アクセス単位情報
図21Aおよび図21Bは、本実施形態にかかる表示アクセス単位情報の例を示す。これらの表示アクセス単位情報は、実施形態1において図10A〜図10Cを用いて例示した表示イベント単位情報の代替となるものである。図21Aに示す表示アクセス単位情報2101は、データ構造識別情報が“A[0][]”である。一方、図21Bに示す表示アクセス単位情報2102は、データ構造識別情報が“A[1][]”である。
ここで、図22を用いて、表示アクセス単位情報の生成例を述べる。表示アクセス単位情報の生成では、アクセス情報に基づいて各データ構造における区間情報が計算される。本例では、データ構造の区間情報が最小区間情報として計算される。図22に、各データ構造とその最小区間情報を示す。データ構造2200、2201、2202、…2210、2211A〜2211J、2212A〜2212J、…、2220A〜2220Jのうち、データ構造2200、2201および2202は、それぞれデータ構造情報1801、1802、1803に対応し、また、データ構造2211A〜2211Jおよび2212A〜2212Jは、データ構造情報1811〜1820および1821〜1830に対応する。
表示アクセス単位情報の生成では、メモリアドレス軸情報の最小描画区間単位情報2002の区間“0xFFFF”以上を満足する最小区間情報を持つデータ構造2200、2201〜2210を特定し、さらに、同一の隣接包含データ構造情報を持つ全てのデータ構造情報がメモリアドレス軸情報の最小描画区間単位情報の区間“0xFFFF”以上を満足する最小区間情報を持つデータ構造2200、2201〜2210を特定する。ここで、選択されたデータ構造2200、2201〜2210のうち、互いに包含関係なく、最小区間情報が最小であり且つプログラム1501の実行によってアクセスされるデータ構造2201および2202が表示アクセス単位とされ、そのデータ構造を示すデータ構造情報のデータ構造識別情報に基づいて、表示アクセス単位情報2101および2102が生成される。
・表示アクセス情報
図23Aおよび図23Bは、本実施形態にかかる表示アクセス情報の例を示す。これらの表示アクセス情報は、実施形態1において図12A〜図12Cを用いて例示した表示イベント情報の代替となるものである。
本実施形態において、区間情報は始点メモリアドレス情報と終点メモリアドレス情報とからなり、密度情報は表示アクセスが表す区間とその区間内で実際にアクセスが発生した区間との比とし、統計情報はアクセスされた要素数とする。図23Aに示す表示アクセス情報2301は、始点メモリアドレス情報を“0x00000000”、終点メモリアドレス情報を“0x000AFFFF”、属性情報を“A[0][]”、密度情報を“1.0”、複数アクセス表示情報を“TRUE”、要素数を“10”とする情報である。また、図23Bに示す表示アクセス情報2302は、始点メモリアドレス情報を“0x00F00000”、終点メモリアドレス情報を“0x00FAFFFF”、属性情報を“A[1][]”、密度情報を“0.5”、複数アクセス表示情報を“TRUE”、要素数を“5”とする情報である。
本実施形態において、オブジェクト生成部109は、表示アクセス情報記憶部(表示イベント情報記憶部106に相当)に記憶される表示アクセス情報と、軸情報記憶部104に記憶される軸情報とを入力し、入力した表示アクセス情報の区間情報と軸情報のメモリアドレス軸情報とに基づいて、メモリアドレス軸方向の表示位置と表示サイズとを決定する。また、オブジェクト生成部109は、表示アクセス情報の密度情報に基づいて表示方式を決定し、表示アクセス情報の複数アクセス表示情報に基づいてユーザ入力に対するアクションを決定し、アクセスを表すアクセスオブジェクト(イベントオブジェクトに相当)を生成する。
なお、本実施形態では、密度情報を、表示アクセスが表す区間とその区間内で実際にアクセスが発生した区間との比としたが、これに限定されるものではない。たとえば、表示アクセスが表す区間とその区間内で実際にアクセスが発生した区間との比に統計情報として用いる要素数を加えた値を密度情報として用いるなど、種々変形することが可能である。
また、本実施形態では、軸情報として属性軸を用いていないが、たとえばマルチコアなど、複数のプロセッサから同一メモリアドレス空間へのアクセスがある場合には、実施形態1と同様に、属性軸を用いて各プロセッサからのアクセスを分離して表示してもよい。
また、表示部111は、実施形態1と同様に、軸オブジェクト生成部110で生成された軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて、軸オブジェクトを画面上に描画する。この際、マルチコア対応の場合には、属性軸オブジェクトとして属性ラベルを表示してもよい。
また、表示部111は、オブジェクト生成部109で生成されたアクセスオブジェクトを入力し、アクセスオブジェクトが持つ表示位置情報に基づいて、アクセスオブジェクトを画面上に描画する。本実施形態では、図24に示すように、表示アクセス情報2301および2302を表すアクセスオブジェクトをそれぞれ順に2402および2402として表示する。また、メモリアクセス軸オブジェクト2404を表示する。なお、実施形態1と同様に、表示部111は、入力部112を用いたユーザからの入力を受け付け、ユーザの入力に基づいて、イベントオブジェクトに定義されたアクションを表示してもよい。
また、実施形態1と同様、表示部111は、入力部112を用いたユーザからの入力を受け付け、ユーザの入力に基づいて、アクセスオブジェクトに定義されたアクションを表示する。例えば図25に示すように、表示アクセス情報2301のイベントオブジェクト2402にマウスオーバー等のユーザからの入力があった場合、たとえばその統計情報である“要素数:10”2504を表示する。
以上のように、本実施形態によれば、プログラム実行時のメモリアドレス空間へのアクセスがデータ構造に基づいて表示されるため、大量のアクセスが発生するプログラムの実行状況をユーザに容易に把握させることが可能となる。
なお、本実施形態では、メモリアドレス空間表記A[0][0]のようなデータ構造における最小単位に対するアクセス命令を前提として説明したが、これに限るものではない。たとえばC言語における“memset”のような、メモリアドレス空間表記A[0][]などの中規模単位へのアクセス命令に対しても同様に、本実施形態を適用することが可能である。
また、上記実施形態では、1つのメモリアドレス空間に対しては1つの属性軸とした場合を説明したが、これに限るものではない。たとえば上記において、変数A[0][]による中規模単位でのアクセスと、メモリアドレス空間表記A[1][]による中規模単位でのアクセスとを、別の属性軸としてもよい。その場合、属性軸毎にメモリアドレス軸を設定してもよい。
さらに、上記実施形態では、メモリアドレス空間へのアクセスをデータ構造に基づいてまとめて表示する場合を例示したが、これに限るものではない。たとえばアクセスをプログラム構造(データアクセス命令)に基づいてまとめて表示するようにも構成することが可能である。
上記実施形態およびその変形例は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、仕様等に応じて種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施形態が可能であることは上記記載から自明である。例えば実施形態に対して適宜例示した変形例は、他の実施形態と組み合わせることも可能であることは言うまでもない。
101…プログラム実行状況表示装置(システム)、102…イベント情報記憶部、103…プログラム構造情報記憶部、104…軸情報記憶部、105…表示イベント単位情報記憶部、106…表示イベント情報記憶部、107…表示イベント単位情報生成部、108…表示イベント情報生成部、109…オブジェクト生成部、110…軸オブジェクト生成部、111…表示部、112…入力部

Claims (11)

  1. プログラムの実行によって発生する2つ以上のイベントを表現する1つ以上のイベントオブジェクトを生成するプログラム情報生成システムであって、
    前記プログラムの実行状況を描画する座標系の軸情報を記憶する軸情報記憶部と、
    前記軸情報に基づいて前記座標系を表現する軸オブジェクトを生成する軸オブジェクト生成部と、
    前記2つ以上のイベントそれぞれに関するイベント情報を記憶するイベント情報記憶部と、
    前記2つ以上のイベントを発生させる前記プログラムの区間に関するプログラム構造情報を記憶するプログラム構造情報記憶部と、
    前記2つ以上のイベントを表現する1つ以上の表示イベントに関する表示イベント情報を生成する表示イベント情報生成部と、
    前記表示イベント情報を記憶する表示イベント情報記憶部と、
    前記表示イベントの表示単位を示す表示イベント単位情報を記憶する表示イベント単位情報記憶部と、
    前記表示イベント情報に基づいて前記1つ以上のイベントオブジェクトを生成するオブジェクト生成部と、
    を備え、
    前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含み、
    前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含み、
    前記表示イベント単位情報は、前記1つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含み、
    前記表示イベント単位情報記憶部は、前記イベント情報記憶部に記憶された前記イベント情報を表現する前記1つ以上の表示イベントに関する前記表示イベント単位情報を記憶し、
    各プログラム構造情報は、各プログラム構造情報を識別するプログラム構造識別情報と、各プログラム構造情報と包含関係にあるプログラム構造情報を特定する包含プログラム構造識別情報とを含み、
    前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含み、
    前記表示イベント情報生成部は、前記イベント情報と前記表示イベント単位情報と前記プログラム構造情報とに基づいて前記表示イベント情報を生成し、
    前記オブジェクト生成部は、前記表示イベント情報記憶部に記憶された前記表示イベント情報の前記区間情報と、前記軸情報記憶部に記憶された前記軸情報とに基づいて、前記表示イベントを表す前記イベントオブジェクトの表示位置を決定する、
    プログラム情報生成システム。
  2. 前記表示イベント単位情報を生成する表示イベント単位情報生成部と、
    をさらに備え、
    前記軸情報は、前記連続軸が表す区間の描画最小単位を表す最小描画区間情報をさらに含み、
    前記表示イベント単位情報は、前記軸情報の前記最小描画区間情報の区間以上の区間を持つ前記プログラム構造情報をさらに含み、
    前記表示イベント単位情報生成部は、前記イベント情報記憶部の前記イベント情報と、前記プログラム構造情報記憶部の前記プログラム構造情報と、前記軸情報記憶部の前記連続軸の最小描画区間情報とを入力とし、前記最小描画区間情報と前記イベント情報と前記プログラム構造情報とに基づいて、前記表示イベント単位情報を生成する、
    請求項1に記載のプログラム情報生成システム。
  3. 前記表示イベント情報は、密度情報をさらに含み、
    前記表示イベント情報生成部は、表示イベント単位情報のプログラム構造識別情報に基づいて特定された1つ以上のプログラム構造情報に関連する1つ以上のイベントの区間情報と、前記表示イベント情報の区間情報とに基づいて、前記密度情報を生成し、
    前記イベントオブジェクト生成部は、前記密度情報に基づいて前記イベントオブジェクトの表示方式を決定する、
    請求項2に記載のプログラム情報生成システム。
  4. 前記表示イベント単位情報において、第1の表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報は、第2の表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報とは包含関係を持たず、
    前記表示イベント単位情報生成部は、前記第1または第2の表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報と包含関係を持つプログラム構造情報を表示イベント単位情報としない、
    請求項3に記載のプログラム情報生成システム。
  5. 前記表示イベント情報は、前記表示イベントが複数のイベントと関連しているか否かを表す複数イベント関連情報を含み、
    前記表示イベント情報生成部は、前記表示イベント単位情報のプログラム構造識別情報が示すプログラム構造情報に関連するイベント情報が複数あるか否かを判定し、当該判定結果に基づいて前記複数イベント表示情報を生成し、
    前記イベントオブジェクト生成部は、前記表示イベント情報の前記複数イベント関連情報に基づいて、ユーザに対するアクションを含むイベントオブジェクトを生成する、
    請求項3に記載のプログラム情報生成システム。
  6. 前記イベントは、前記プログラムの実行単位であり、
    前記連続軸は、前記プログラムの実行における時間軸である、
    請求項1に記載のプログラム情報生成システム。
  7. 前記イベントは、メモリアドレス空間へのアクセスであり、
    前記連続軸は、前記メモリアドレス空間を表現するメモリアドレス軸である、
    請求項1に記載のプログラム情報生成システム。
  8. プログラムの実行によって発生する2つ以上のイベントを表現する1つ以上のイベントオブジェクトを生成するプログラム情報生成方法であって、
    前記プログラムの実行状況を描画する座標系の軸情報に基づいて前記座標系を表現する軸オブジェクトを生成し、
    前記2つ以上のイベントそれぞれに関するイベント情報と、前記2つ以上のイベントを表現する1つ以上の表示イベントの表示単位を示す表示イベント単位情報とに基づいて、前記前記表示イベントに関する表示イベント情報を生成し、
    前記表示イベント情報に基づいて前記1つ以上のイベントオブジェクトを生成する、
    ことを含み、
    前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含み、
    前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含み、
    前記表示イベント単位情報は、前記1つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含み、
    前記表示イベント単位情報は、前記イベント情報を表現する前記1つ以上の表示イベントそれぞれに関し、
    前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含み、
    前記イベントオブジェクトの表示位置は、前記表示イベント情報の前記区間情報と前記軸情報とに基づいて決定される、
    プログラム情報生成方法。
  9. プログラムの実行によって発生する2つ以上のイベントを表現する1つ以上のイベントオブジェクトを生成するコンピュータを機能させるためのプログラム情報生成プログラムであって、
    前記プログラムの実行状況を描画する座標系の軸情報に基づいて前記座標系を表現する軸オブジェクトを生成するステップと、
    前記2つ以上のイベントそれぞれに関するイベント情報と、前記2つ以上のイベントを表現する1つ以上の表示イベントの表示単位を示す表示イベント単位情報とに基づいて、前記前記表示イベントに関する表示イベント情報を生成するステップと、
    前記表示イベント情報に基づいて前記1つ以上のイベントオブジェクトを生成するステップと、
    を前記コンピュータに実行させ、
    前記軸情報は、前記イベント情報の区間情報に関連する連続軸の表示範囲情報を含み、
    前記イベント情報は、前記区間情報と前記プログラム構造識別情報とを含み、
    前記表示イベント単位情報は、前記1つ以上の表示イベントに関連するイベント情報のプログラム構造識別情報を含み、
    前記表示イベント単位情報は、前記イベント情報を表現する前記1つ以上の表示イベントそれぞれに関し、
    前記表示イベント情報は、当該表示イベント情報に関連するイベントの区間情報を含み、
    前記イベントオブジェクトの表示位置は、前記表示イベント情報の前記区間情報と前記軸情報とに基づいて決定される、
    プログラム情報生成プログラム。
  10. 請求項1に記載のプログラム情報生成システムと、
    前記軸オブジェクトと前記1つ以上のイベントオブジェクトとを表示する表示部と、
    を備える、プログラム情報表示システム。
  11. 請求項5に記載のプログラム情報生成システムと、
    前記軸オブジェクトと前記1つ以上のイベントオブジェクトとを表示する表示部と、
    を備え、
    前記表示部は、ユーザインターフェースを備え、前記ユーザインターフェースの入力と前記イベントオブジェクトの前記アクションとに基づいて、前記アクションを実行する、
    プログラム情報表示システム。
JP2014041853A 2014-03-04 2014-03-04 プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム Expired - Fee Related JP6189232B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014041853A JP6189232B2 (ja) 2014-03-04 2014-03-04 プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム
US14/627,305 US9536330B2 (en) 2014-03-04 2015-02-20 Program information generation system, method for program information generation, program for program information generation, and program information display system for displaying the execution status of a program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014041853A JP6189232B2 (ja) 2014-03-04 2014-03-04 プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017149151A Division JP2017191622A (ja) 2017-08-01 2017-08-01 情報生成システム、その方法およびそのプログラム

Publications (2)

Publication Number Publication Date
JP2015167002A JP2015167002A (ja) 2015-09-24
JP6189232B2 true JP6189232B2 (ja) 2017-08-30

Family

ID=54017874

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014041853A Expired - Fee Related JP6189232B2 (ja) 2014-03-04 2014-03-04 プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム

Country Status (2)

Country Link
US (1) US9536330B2 (ja)
JP (1) JP6189232B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6258159B2 (ja) 2014-08-26 2018-01-10 株式会社東芝 プログラム情報生成システム、方法、及びプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03185531A (ja) * 1989-12-15 1991-08-13 Oki Electric Ind Co Ltd タスク時間の尺度変換表示方法
JP3224426B2 (ja) * 1992-09-04 2001-10-29 富士通株式会社 プログラム解析支援装置
US5872909A (en) * 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6611276B1 (en) * 1999-08-31 2003-08-26 Intel Corporation Graphical user interface that displays operation of processor threads over time
US7478368B2 (en) * 2001-04-24 2009-01-13 International Business Machines Corporation Organization and visualization of performance data in selected display modes
US7698686B2 (en) * 2005-04-15 2010-04-13 Microsoft Corporation Method and apparatus for performance analysis on a software program
US10127129B2 (en) * 2007-02-27 2018-11-13 Red Hat, Inc. Non-invasive time-based profiling tool
US8418148B2 (en) * 2009-02-27 2013-04-09 Microsoft Corporation Thread execution analyzer
US8499287B2 (en) * 2008-06-23 2013-07-30 Microsoft Corporation Analysis of thread synchronization events
US8601444B2 (en) * 2009-10-27 2013-12-03 Microsoft Corporation Analysis and timeline visualization of thread activity
JP5515815B2 (ja) * 2010-02-08 2014-06-11 富士通株式会社 検証装置及び検証プログラム
US8438571B2 (en) * 2010-02-24 2013-05-07 International Business Machines Corporation Thread speculative execution and asynchronous conflict
US20130249917A1 (en) * 2012-03-26 2013-09-26 Microsoft Corporation Profile data visualization

Also Published As

Publication number Publication date
US20150254879A1 (en) 2015-09-10
JP2015167002A (ja) 2015-09-24
US9536330B2 (en) 2017-01-03

Similar Documents

Publication Publication Date Title
US9021440B1 (en) System and method for automated test script generation
CN106062711B (zh) 用于复合控件的方法、系统和计算机存储介质
US9047399B2 (en) Generating visualization from running executable code
US10657208B2 (en) Analyzing model based on design interest
US20150309695A1 (en) Virtual interactive learning environment
JP2017509971A (ja) データへの論理的妥当性検査規則の指定および適用
Karran et al. Synctrace: Visual thread-interplay analysis
KR20170073604A (ko) 데이터 미리보기를 통한 작업 작성 기법
Nguyen et al. Visualizing hierarchical performance profiles of parallel codes using callflow
US8561032B2 (en) Visualizing thread life time in eclipse
Salihoglu et al. Graft: A debugging tool for apache giraph
US20210326179A1 (en) Progress visualization of computational job
US20100313186A1 (en) Developer-managed debugger data records
KR101232535B1 (ko) 가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링
JP6189232B2 (ja) プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム
JP2015170009A (ja) 表示情報生成装置、プログラム実行状況表示システム、方法およびプログラム
JP6437226B2 (ja) 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム
US8826234B2 (en) Relational modeling for performance analysis of multi-core processors
CN108509460A (zh) 分布式系统中的数据一致性检查
JP2017191622A (ja) 情報生成システム、その方法およびそのプログラム
Reiss et al. Visualizing threads, transactions and tasks
US10186058B2 (en) Visualization of cross-pivoted data
Nelson et al. Chplvis: A communication and task visualization tool for chapel
Collins et al. Visualization of event execution in a discrete event system
WO2021176982A1 (ja) 表示方法、制御プログラム及び装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170802

R151 Written notification of patent or utility model registration

Ref document number: 6189232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees