JP6437396B2 - トレース情報管理システム、方法、及びプログラム - Google Patents

トレース情報管理システム、方法、及びプログラム Download PDF

Info

Publication number
JP6437396B2
JP6437396B2 JP2015162817A JP2015162817A JP6437396B2 JP 6437396 B2 JP6437396 B2 JP 6437396B2 JP 2015162817 A JP2015162817 A JP 2015162817A JP 2015162817 A JP2015162817 A JP 2015162817A JP 6437396 B2 JP6437396 B2 JP 6437396B2
Authority
JP
Japan
Prior art keywords
information
scope
trace
trace information
function
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.)
Active
Application number
JP2015162817A
Other languages
English (en)
Other versions
JP2017041129A (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 JP2015162817A priority Critical patent/JP6437396B2/ja
Priority to US15/234,408 priority patent/US20170052881A1/en
Publication of JP2017041129A publication Critical patent/JP2017041129A/ja
Application granted granted Critical
Publication of JP6437396B2 publication Critical patent/JP6437396B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • 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
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

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

Description

本発明の実施形態は、トレース情報管理システム、方法、及びプログラムに関する。
ソースコード(プログラム)の実行時に観測可能な特徴量とその実行順序とからなるトレース情報は、様々な目的で利用される。トレース情報は、例えばソースコードの検証、ソースコードの実行状況の可視化等に利用される。トレース情報を扱う技術として、トレース情報の本体とメタデータとを分離して保存し、それらをリンクさせる情報としてソースコード上のプローブとユーザとの組に対して識別情報を付与する技術がある。
米国特許第7437716号明細書
トレース情報の情報量はソースコードの規模、トレース情報を生成する際に設定された粒度等に応じて変化する。ソースコードが大規模である場合、粒度が細かい場合等にはトレース情報の情報量は大きくなる。また、トレース情報にはその利用目的に対して不要な情報が含まれる場合がある。
従来の技術においては、取得されたトレース情報を利用して所定の処理を行う際に、生成時に設定された粒度のトレース情報がそのまま使用される。すなわち、トレース情報の利用目的に対して、トレース情報の粒度が必要以上に細かい場合、不要な情報が含まれる場合等であっても、取得された状態のトレース情報を参照しなければならない。そのため、トレース情報の情報量が膨大である場合、目的の処理を行うシステムに過大な処理負荷が掛かり、作業効率の低下等の問題が生ずる。
そこで、以下の実施形態では、トレース情報から必要な情報を効率的に抽出できるようにすることを目的とする。
実施形態のトレース情報管理システムは、取得部と、指定部と、抽出部とを備える。取得部は、ソースコードに含まれる複数のスコープの実行順序と実行時に観測可能な特徴量とを示すトレース情報と、スコープを特定する複数のスコープ特定情報毎に特徴量を集約した第1の属性情報とを取得する。指定部は、第1の属性情報の中から少なくとも1つのスコープ特定情報を指定する。抽出部は、指定されたスコープ特定情報に対応する情報をトレース情報から抽出する。
第1の実施形態におけるトレース情報管理システムの機能的構成を例示する図。 トレース情報管理システムのハードウェア構成を例示する図。 第1の実施形態におけるソースコードを例示する図。 第1の実施形態におけるトレース情報を例示する図。 第1の実施形態における属性情報を例示する図。 第1の実施形態における抽出情報を例示する図。 第1の実施形態におけるトレース情報管理システムによる処理を示すフローチャート。 第2の実施形態におけるソースコードを例示する図。 第2の実施形態におけるトレース情報を例示する図。 スコープ間の分岐関係を示す木構造情報を例示する図。 第2の実施形態における第1の属性情報を例示する図。 第2の実施形態における第2の属性情報を例示する図。 第1の属性情報から指定された情報に基づいて生成された第1の抽出情報を例示する図。 第2の属性情報から指定された情報に基づいて生成された第2の抽出情報を例示する図。 関数の呼び出し関係とサイクル数との関係を例示する図。
(第1の実施形態)
図1は、第1の実施形態におけるトレース情報管理システム1の機能的構成を例示する図である。トレース情報管理システム1は、取得部11、指定部12、及び抽出部13を含む。
図2は、トレース情報管理システム1のハードウェア構成を例示する図である。トレース情報管理システム1は、CPU(Central Processing Unit)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、入力デバイス24、出力デバイス25、通信IF(Interface)26、バス27、ストレージ28、及びドライブ装置29を含む。CPU21は、ROM22やストレージ28等に記憶されたプログラムに従ってRAM23やストレージ28等をワーキングエリアとして所定の演算処理を行う。入力デバイス24は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス25は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信IF26は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。ドライブ装置29は、着脱可能な記録媒体が接続可能であり、少なくとも記録媒体からのデータの読み出しを行うことが可能である。
取得部11は、トレース情報及び属性情報を取得する。図3は、トレース情報の元となるソースコード51を例示する図である。図4は、トレース情報61を例示する図である。図5は、属性情報71を例示する図である。
トレース情報61は、ソースコード51に基づいて生成され、ソースコード51の実行時に観測可能な特徴量とその実行順序とを含む。特徴量とは、ソースコード51の実行時に発生した挙動を示す情報であり、スコープが開始された時間、終了した時間等である。特徴量はこれらに限られるものではない。スコープとは、ソースコード51内で定義された範囲であり、例えば関数(main,funcA,funcB)、条件文(if)、ループ文(for)等に対応する中括弧{}で括られた部分に対応する範囲である。スコープの定義の仕方はこれらに限られるものではなく、ソースコード51の形態に合わせて適宜行うことができる。例えば、任意にソースコード51中の連続区間をファイル名や行番号等により指定することでスコープを定義してもよい。また、言語に依存しない本システム用の特殊な制御構造をソースコード51やそれをコンパイルしたバイナリに組み込み、その構造の開始及び終了のタイミングに基づいてスコープを定義してもよい。1つのスコープの中に1つ以上のスコープが含まれてもよい。
図3に示すソースコード51において、各行の先頭に付された数字は、説明のための行番号である。行番号とソースコード51の本体とはコロン(:)により分割されている。本例のソースコード51はC言語の記法を模した疑似コードであるが、ソースコードのプログラム言語はこれに限定されるものではない。図3の例では、1行目から24行目に関数mainが定義され、26行目から300行目に関数funcAが定義され、302行目から800行目に関数funcBが定義されている。2行目に変数iが定義され、3行目から23行目までに変数iをループ変数としたループ文(for)及びその内部の処理が定義されている。4行目から20行目までに変数iを2で割ったときの余りが0となる場合に実行される条件文(if)及びその内部の処理が定義されている。3行目にループ回数が3に定義されている。ループ中、21行目に関数funcAが実行されることが定義され、22行目に関数funcBが実行されることが定義されている。すなわち、関数funcA及び関数funcBはループ中にそれぞれ3回呼び出されて実行される。このとき、変数iを2で割ったときの余りが0となる場合は2回発生する(変数iが0及び2の場合)。すなわち、4行目から20行目までの条件文の内部は2回実行される。
図4に示すトレース情報61は、図3に示すソースコード51を実行した結果取得される情報の例である。トレース情報61は、複数のレコード62を含む。各レコード62は、スコープID(スコープ特定情報)63、ステータス情報64、及びタイミング情報65を含む。各スコープID63(A,B,C,D,E)は、ソースコード51の各スコープに対して一意に設定された記号である。本例では、「A」が「関数:main」に対応し、「B」が「ループ文:for」の中括弧{}で括られた内部の処理に対応し、「C」が「条件文:if」の中括弧{}で括られた内部の処理に対応し、「D」が「関数:funcA」に対応し、「E」が「関数:funcB」に対応している。ステータス情報64(start,end)は、あるタイミングにおける各スコープの状態を示している。この例ではstartはスコープが開始されたことを示し、endはスコープが終了したことを示す。タイミング情報65は、ステータス情報64が示す状態に至ったタイミングを示す数値である。この数値は、ソースコード51の実行順序を示すものであり、この例では命令実行サイクル(クロック数)を示しているが、時刻、経過時間等であってもよい。また、実行順序についてはトレース情報61に含まれる情報で表現するだけに限らず、トレース情報61に含まれるレコード62の並び順等で表現してもよい。ステータス情報64及びタイミング情報65により、各スコープの開始タイミング及び終了タイミングが示される。
図4に示すトレース情報61において、1行目の「A,start,1」は、1サイクル目に関数mainが開始したことを示している。2行目の「B,start,10」は、10サイクル目にソースコード51の3行目から23行目のループ文の内部の処理が開始したことを示している。3行目の「C,start,20」は、20サイクル目にソースコード51の4行目から20行目の条件文の内部の処理が開始したことを示している。4行目の「C,end,50」は、50サイクル目にソースコード51の4行目から20行目の条件文の内部の処理が終了したことを示している。以降、同様に各スコープの実行順序が示されている。
属性情報71は、スコープの特徴量をスコープ毎に示している。スコープの特徴量とは、スコープの特徴を示す値であり、例えばスコープの実行回数、実行期間(命令実行サイクル数、経過時間等)等である。スコープの特徴量はこれらに限られるものではない。
図5に示す属性情報71は、図4に示すトレース情報61から取得される特徴量をスコープ毎に集約したテーブル形式の情報である。本例の属性情報71は、スコープID63、スコープ名74、実行回数情報75、及び平均実行期間情報76を含む。属性情報71内のスコープID63は、トレース情報61内のスコープID63と同一である。スコープ名74は、スコープID63に対応するスコープの名称又は略称を言語で表記した情報である。実行回数情報75は、トレース情報61が示す全期間中に各スコープが実行される回数を示している。平均実行期間情報76は、スコープの1回実行あたりの平均実行期間を示している。
図5に示す属性情報71において、1行目の「A,main,1,1119」は、スコープID63:「A」は関数mainを表し、関数mainは全期間中1回実行され、その平均実行期間は1119サイクルであることが示されている。2行目の「B,LOOP,3,360」は、スコープID63:「B」はループ文(ソースコード51の3行目から23行目のループ文「for」内部の処理)を表し、このループ文は全期間中3回実行され、1回あたりの平均実行期間が360サイクルであることが示されている。3行目の「C,COND,2,30」は、スコープID63:「C」は条件文(ソースコード51の4行目から20行目の条件文「if」内部の処理)を表し、この条件文は全期間中2回実行され、1回あたりの平均実行期間が30サイクルであることを示している。4行目の「D,funcA,3,100」は、スコープID63:「D」は関数funcAを表し、関数funcAは全期間中3回実行され、1回あたりの平均実行期間が100サイクルであることを示している。5行目の「E,funcB,3,200」は、スコープID63:「E」は関数funcBを表し、関数funcBは全期間中3回実行され、1回あたりの平均実行期間が200サイクルであることを示している。
上記属性情報71のように、スコープID63毎に特徴量を集約した情報を用いることにより、トレース情報61全体を俯瞰することが可能となる。本例におけるトレース情報61のレコード62の数はそれほど多くないが、例えばレコード62の数が数万、数億以上である場合には、トレース情報61の全体像を把握することは極めて困難である。このような場合に上記のような属性情報71を用いることにより、トレース情報61の全体像を的確に把握することが可能となる。
取得部11は、例えばCPU21、制御プログラム、ロジックIC(Integrated Circuit)、RAM23等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、トレース情報61及び属性情報71は、トレース情報管理システム1以外のシステム(装置)によって生成されてもよいし、トレース情報管理システム1内で生成されてもよい。トレース情報61及び属性情報71の生成方法は特に限定されるものではなく、トレース情報61及び属性情報71は公知又は新規の技術を用いて適宜生成されればよい。
取得部11による取得の対象となるソースコード51は、特定の処理装置独自のプログラミング言語であってもよい。ソースコード51は、何らかのコンパイラ装置等でコンパイルされ、特定のコンピュータ装置上で実行可能なバイナリ形式、それらの中で用いられる中間表現の形式、アセンブリ言語のような形に変換された結果等であってもよい。ソースコード51は、何らかのオペレーションシステム等の環境下で動作するアプリケーションプログラム、オペレーションシステムや基盤システムそのものを実現するプログラム、ハードウェアを動作させるためのデバイスドライバのようなプログラム等であってもよい。ソースコード51は、必ずしも1つのファイルに全ての情報が入っているものである必要はなく、分割された複数の情報に対応する複数のファイルからなるものであってもよい。このように、ソースコード51は公知又は新規の技術を用いてトレース情報61が生成可能な形態となっていればよい。
トレース情報61は、特徴量の情報として、前回レコード62を生成したタイミングや関数等のソースコード51中の区間が終了したタイミングでメモリアクセスが何回発生したか、どのメモリにアクセスされたか、どのタイミングでどの程度メモリが利用されたか、メモリがいつ確保され、いつ開放されたかといった情報を含んでもよい。トレース情報61は、特徴量に関係する挙動が発生したソースコード51上の位置を示すファイル名や行番号、ソースコード51が存在する場所を示すパスやサーバの情報を含んでもよい。トレース情報61は、ソースコード51の連続区間をプログラミング言語のブロックのような構造で囲った領域に付けられた名前を含んでもよい。トレース情報61は、特定の区間毎に付与されたID、ソースコード管理システム上で発行されるID等を用いてソースコード51のバージョンを特定する情報を含んでもよい。トレース情報61は、レコード62を生成するたびに一意に付与されるIDを含んでもよい。トレース情報61に含まれる特徴量の情報の個数はいくらでもよい。同じソースコード51を異なる条件で複数回実行した結果得られる複数のトレース情報61を対象としてもよい。このように、トレース情報61は公知又は新規の技術を用いて様々な特徴量の情報を含むように生成されればよい。
指定部12は、取得された属性情報71の中から少なくとも1つのスコープID63を指定する。指定されたスコープID63を示す情報は、抽出部13による抽出処理に用いられる指定情報として指定部12から出力される。指定部12は、例えばCPU21、制御プログラム、ロジックIC、出力デバイス(ディスプレイ等)、入力デバイス(キーボード、マウス、タッチパネル等)等を利用して構成される。例えば、ユーザがコンピュータのディスプレイに表示された属性情報71の中から所望のスコープID63を指定するようにしてもよい。また、所定の条件を満たす特徴量(実行回数、実行期間等)を有するスコープがCPU21の処理により自動的に指定されるようにしてもよい。このように、公知又は新規の技術を用いて属性情報71から少なくとも1つのスコープID63を指定できればよい。
抽出部13は、指定部12から出力される指定情報に基づいて、指定されたスコープID63に対応する情報をトレース情報61から抽出することにより、抽出情報を生成する。
図6は、抽出情報81を例示する図である。本例の抽出情報81は、図5に示す属性情報71から関数funcAを示すスコープID63:「D」が指定された場合の例である。抽出情報81は、図4に示すトレース情報61から、スコープID63:「D」を含むレコード62のみを抽出することにより生成された情報である。図4に示すトレース情報61に含まれるレコード62の数は24であったが、図6に示す抽出情報81に含まれるレコード62の数は6である。このように、抽出部13の処理により、レコード62の数を半分以下に絞り込むことができている。
抽出部13は、例えばCPU21、制御プログラム、ロジックIC等を利用して構成される。上述したように属性情報71からスコープID63が指定されると、トレース情報61から当該スコープID63を含むレコード62が抽出される。レコード62をトレース情報61から抽出する処理は、公知又は新規の検索アルゴリズムを適宜利用して行うことができる。また、抽出部13における抽出情報81の作成方法も上述の例に限られない。例えば、不要なレコード62を取り除くのではなく、指定したスコープID63を含むレコード62にフラグのような目印を付与することにより、抽出情報81を利用する際に所望のレコード62を識別できるようにしてもよい。また、単一のトレース情報61だけでなく、複数のトレース情報61からレコード62を抽出し、抽出されたレコード62をトレース情報61毎にまとめてもよい。全てのトレース情報61から抽出されたレコード62を1つにまとめてもよい。
上記トレース情報管理システム1を用いることにより、例えば問題のある箇所の調査を容易にすることが可能となる。トレース情報61中に大量の特徴量の情報を格納しておくことで、プログラム実行時の問題と関連する特徴量の変化を見つけ出し、そこから問題のある箇所の抽出、原因分析、及び修正を行うことが可能である。しかし、トレース情報61の情報量が多くなってくると、トレース情報61自体からそうした問題のある箇所の検出を行うことが困難になってくる。そこで、まずはスコープ62毎に特徴量が集約されている属性情報71を用いることにより、解決したい問題と関連している特徴量を調査する。例えば、ある関数が100万回実行され、別の関数が10回実行された場合、トレース情報61には関数の開始及び終了時点の情報が100万10回分格納されるため、200万20回分のレコード62が生成されることになる。これらの全てのレコード62を確認しながら問題を検出するのは非常に困難である。しかし、属性情報71を用いて10回だけ実行されている関数に問題がありそうだということを認識し、当該関数に対応するスコープID63を指定すれば、抽出情報81に含まれるレコード62は20個となり、調査対象を大幅に削減することができる。その後、これらの20個のレコード62に格納されている特徴量を精査することで、常に問題が発生しているのか、特定のタイミングでの実行時のみ問題が発生しているのかといったことを調査することが可能となり、問題箇所の抽出、原因分析、及び修正につながるより詳細な情報まで容易に到達することが可能となる。
上記のように生成された抽出情報81は、様々な目的で利用することができるものである。抽出情報81は、そのままコンピュータのディスプレイ等に出力されてもよいし、他のシステム、例えばソースコード51を検証するシステム、ソースコード51の実行状況を可視化するシステム等に提供されてもよい。
図7は、上記トレース情報管理システム1による処理を示すフローチャートである。先ず、取得部11はトレース情報61及び属性情報71を取得する(S101)。次に、指定部12は属性情報71から抽出したいスコープに対応するスコープID63を指定する(S102)。次に、抽出部13は指定されたスコープID63を含むレコード62をトレース情報61から抽出し、抽出情報81を生成する(S103)。
なお、図2に示すハードウェア構成は一例であり、トレース情報管理システム1は、様々なハードウェア構成により実現することができる。例えば、単体の汎用コンピュータ、
組み込みプロセッサを有する専用装置、ユーザ端末とサーバとがインターネット等を介して接続されたインタラクティブシステム等により、上記取得部11、指定部12、及び抽出部13を実現することができる。
また、図1には、トレース情報管理システム1の最も基本的な機能ブロックである取得部11、指定部12、及び抽出部13を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、1つの機能ブロックを複数の機能ブロックに分割する構成、これら3つの構成を組み合わせた構成等であってもよい。
トレース情報管理システム1の機能を実現させるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録され、ドライブ装置29等を通じて提供することができる。また、プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めROM等に組み込まれて所定の情報処理装置に提供されてもよい。また、プログラムは、上記取得部11、指定部12、及び抽出部13の機能を実現する複数のモジュールから構成されてもよい。
上記トレース情報管理システム1によれば、スコープを特定するスコープID63毎にスコープの特徴量を集約した属性情報71を利用してトレース情報61の粒度を取得時の粒度から変更することが可能となる。これにより、情報量が膨大なトレース情報61であってもその全体像の把握が容易となり、トレース情報61から必要な情報を効率的に抽出することが可能となる。
(第2の実施形態)
以下に、第2の実施形態について図面を参照して説明するが、上記第1の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
上記第1の実施形態においては、スコープID63に基づいてトレース情報61の粒度を調整する構成が示された。第2の実施形態においては、更に、複数のスコープ間の呼び出し関係に基づいてトレース情報の粒度を調整する構成を示す。
図8は、第2の実施形態におけるソースコード91を例示する図である。本例のソースコード91においては、1行目から7行目に関数mainが定義され、9行目から300行目に関数funcAが定義され、302行目から800行目において関数funcBが定義され、802行目から1000行目に関数funcCが定義されている。2行目に変数iが定義され、3行目から6行目に変数iをループ変数としたfor文によるループが定義され、3行目にループ回数が3に定義されている。ループ中において、4行目に関数funcAが実行されることが定義され、5行目に関数funcBが実行されることが定義されている。すなわち、関数funcA及びfuncBはループ中にそれぞれ3回呼び出されて実行される。関数funcA内部の200行目及び関数funcB内部の500行目に、関数funcCが実行されることが定義されている。関数funcA及び関数funcBはそれぞれ3回実行されるので、関数funcCは6回実行される。
図9は、第2の実施形態におけるトレース情報101を例示する図である。図9に示すトレース情報101は、図8に示すソースコード91を実行した結果取得される情報の例である。トレース情報101は、複数のレコード102を含む。各レコード102は、スコープID63、呼び出し関係ID(呼び出し関係特定情報)103、ステータス情報64、及びタイミング情報65を含む。第2の実施形態におけるレコード102は、呼び出し関係ID103を含んでいる点で上記第1の実施形態におけるレコード62と相違する。
第2の実施形態における各スコープID63(A,B,C,D)は、ソースコード91内の各関数に対して一意に設定された記号である。「A」は「関数:main」に対応し、「B」は「関数:funcA」に対応し、「C」は「関数:funcB」に対応し、「D」は「関数:funcC」に対応している。すなわち、本実施形態においては、関数以外の命令文(ループ文、条件文等)の内部の処理についてはスコープID63が割り当てられていない。なお、このようなスコープID63の割り当て方は一例であって、これに限られる必要はない。
図9に示す呼び出し関係ID103:「1」〜「5」は、各関数A:main,B:funcA,C:funcB,D:funcCの呼び出し関係を示している。図10は、スコープ(関数)間の呼び出し関係を示す木構造情報111を例示する図である。本例の木構造情報111は、5つのノード1001〜1005を含んでいる。各ノード1001〜1005に記載された記号A〜Dは、それぞれ図9中のスコープID63:A〜Dに対応している。
木構造情報111のノード1001〜1003は、関数funcA及び関数funcBは関数mainから呼び出されることを示している。ノード1002,1004は、関数funcCは関数funcAから呼び出されることを示している。ノード1003,1005は、関数funcCは関数funcBから呼び出されることを示している。
図9に示す各レコード102に含まれる呼び出し関係ID103:「1」〜「5」は、それぞれ図10に示す木構造情報111のノード1001〜1005に対応している。すなわち、呼び出し関係ID103:「1」はノード1001(スコープID63:「A」、関数main)に対応し、呼び出し関係ID103:「2」はノード1002(スコープID63:「B」、関数funcA)に対応し、呼び出し関係ID103:「3」はノード1003(スコープID63:「C」、関数funcB)に対応し、呼び出し関係ID103:「4」はノード1004(スコープID63:「D」、関数funcC)に対応し、呼び出し関係ID103:「5」はノード1005(スコープID63:「D」、関数funcC)に対応している。
図9に示すトレース情報101において、1行目の「A,1,start,1」は、1サイクル目に木構造情報111におけるノード1001と対応し、全体で最初に呼び出される関数mainが開始したことを示している。2行目の「B,2,start,40」は、40サイクル目に木構造情報111におけるノード1002と対応し、関数mainから呼び出される関数funcAが開始したことを示している。3行目の「D,4,start,100」は、100サイクル目に木構造情報111におけるノード1004と対応し、関数funcAから呼び出される関数funcCが開始したことを示している。4行目の「D,4,end,110」は、110サイクル目に木構造情報111におけるノード1004と対応し、関数funcAから呼び出される関数funcCが終了したことを示している。5行目の「B,2,end,140」は、140サイクル目に木構造情報111におけるノード1002と対応し、関数mainから呼び出される関数funcAが終了したことを示している。以降、同様に各関数の実行順序が示されている。
図11は、第2の実施形態における第1の属性情報121を例示する図である。図12は、第2の実施形態における第2の属性情報131を例示する図である。
図11に示す第1の属性情報121は、スコープID63、スコープ名74、実行回数情報75、及び平均実行期間情報76を含む。第1の属性情報121に含まれるこれらの情報は、実質的に図5に示す第1の実施形態における属性情報71と同様である。
図12に示す第2の属性情報131は、呼び出し関係ID103、スコープID63、実行回数情報75、及び平均実行期間情報76を含む。上述したように、分岐ID103:「1」〜「5」は、それぞれ図10に示す木構造情報111のノード1001〜1005に対応している。
本例の第2の属性情報131は具体的には次のような状況を示している。1行目の「1,A,1,999」は、最初に呼び出される関数main(スコープID63:「A」)に対応するノード1001が全期間中1回実行され、その平均実行期間が999サイクルであることを示している。2行目の「2,B,3,100」は、関数mainから呼び出される関数funcA(スコープID63:「B」)と対応するノード1002が全期間中3回実行され、1回あたりの平均実行期間が100サイクルであることを示している。3行目の「3,C,3,200」は、関数mainから呼び出される関数funcB(スコープID63:「C」)と対応するノード1003が全期間中3回実行され、1回あたりの平均実行期間が200サイクルであることを示している。4行目の「4,D,3,10」は、関数funcAから呼び出される関数funcC(スコープID63:「D」)に対応するノード1004が全期間中3回実行され、1回あたりの平均実行期間が10サイクルであることを示している。5行目の「5,D,3,20」は、関数funcBから呼び出される関数funcC(スコープID63:「D」)に対応するノード1005が全期間中3回実行され、1回あたりの平均実行期間が20サイクルであることを示している。
上記第2の属性情報131において、4行目と5行目とで平均実行期間情報76の値が異なっていることから、同じ関数funcCであっても呼び出し元(関数funcA又は関数funcB)に応じてその挙動が変化することが分かる。このような判断は、第1の属性情報121の4行目「D,funcC,6,15」に示される情報のみによってはなされない。
第1の属性情報121及び第2の属性情報131に格納する情報は、スコープ内やノード1001〜1005内の特徴量を集約した情報に限られない。あるスコープから別のスコープを呼び出した場合等には、複数のスコープやノード1001〜1005が重複するが、このような場合には、重複した分の情報を無視したり、呼び出し関係の深さや関係性を指定することで対象となるスコープやノード以外の情報を無視したりすることができる。例えば、図15のように関数funcAから関数funcBが呼び出される場合を考える。単純に開始サイクルから終了サイクルまでの数値を採用すると、図15に示す例では、関数funcAは100サイクル目から600サイクル目まで実行されているので、実行サイクル数は500サイクルとなる。しかし、関数funcBが呼び出されている時間には関数funcA自体の処理は行われないので、この時間を削除したい場合がある。図15に示す例では、関数funcBは200サイクル目から400サイクル目まで実行されているので、実行サイクル数は200サイクルとなる。関数funcAの実際の実行サイクル数を求めるためには、関数funcBの実行サイクル数を差し引く必要があるので、関数funcAの実際の実行サイクル数は300サイクルとなる。このように、特徴量の情報を単純に集約するだけでなく、必要ない情報を無視してもよい。また、第1の属性情報121及び第2の属性情報131は、対象となるスコープやノードがどのファイルと対応するのか、何行目と対応するのかといった情報を含んでもよい。さらに、トレース情報101の各レコード102に格納されている特徴量の情報と直接的に関係がない情報であっても、スコープID63や呼び出し関係ID103と紐付けることが可能な情報であれば、それらの情報を第1の属性情報121及び第2の属性情報131に格納してもよい。例えば、木構造の深さや、ノードの数といった情報を第2の属性情報131に格納してもよい。このように、何らかの特徴量の情報がスコープID63及び呼び出し関係ID103と紐付けられることが可能であれば、第1の属性情報121及び第2の属性情報131に格納される特徴量の情報の内容は問わない。
本実施形態における指定部12は、第1の属性情報121及び第2の属性情報131の両方を用いて、抽出部13による抽出処理に用いられる指定情報を生成する。図13は、第1の属性情報121から指定された情報に基づいて生成された第1の抽出情報141を例示する図である。図14は、第1の属性情報121及び第2の属性情報131から指定された情報に基づいて生成された第2の抽出情報151を例示する図である。第1の抽出情報141及び第2の抽出情報151の各レコード102は、スコープID63、呼び出し関係ID103、ステータス情報64、及びタイミング情報65を含む。
図13に示す第1の抽出情報141は、図11に示す第1の属性情報121からスコープID63:「D」(関数funcC)を指定した場合の例である。第1の抽出情報141は、図9に示すトレース情報101からスコープID63:「D」を含むレコード102を抽出することにより生成された情報である。図9に示すトレース情報101に含まれるレコード102の数は26であったが、図13に示す第1の抽出情報141に含まれるレコード102は12である。このように、抽出部13の処理により、レコード102の数を半分以下に絞り込むことができている。
図14に示す第2の抽出情報151は、図12に示す第2の属性情報131から呼び出し関係ID103:「5」を指定した場合の例である。第2の抽出情報151は、図9に示すトレース情報101から、呼び出し関係ID103:「5」を含むレコード102を抽出することにより生成された情報である。図9に示すトレース情報101に含まれるレコード102の数は26であったが、図13に示す第1の抽出情報141に含まれるレコード102の数は12である。このように、抽出部13の処理により、レコード102の数を半分以下に絞り込むことができている。
上記本実施形態におけるトレース情報管理システム1を用いることにより、例えば問題のある箇所の調査をさらに容易にすることが可能となる。例えば、ある関数が100万回実行され、この関数は関数A、関数B、関数Cの3つの関数から呼び出され、それぞれ80万回、19万9990回、10回呼び出しが行われた場合を考える。この場合、トレース情報101には関数の開始及び終了時点の情報が100万回分格納され、これらは全てが同じ関数の実行の結果を示す情報となる。そのため、第1の抽出情報141には200万個のレコード62が残り、情報の絞込みが不十分となる。しかし、呼び出し関係ID103を用いることで、関数の呼び出し元によって100万回の実行を3種類に分類することができる。このように呼び出し関係ID103毎に集約された属性情報(第2の属性情報131)を用いて、例えば関数Cが呼び出し元になっている10回の実行に問題がありそうだということを認識し、当該関数に対応する呼び出し関係ID103を指定すれば、レコード102の数が20に絞られた抽出情報(第2の抽出情報151)を生成することができる。これにより調査対象を大幅に削減することができる。その後、これらの20個のレコード102に格納されている特徴量を精査することで、常に問題が発生しているのか、特定のタイミングでの実行時のみ問題が発生しているのかといったことを調査することが可能となり、問題箇所の抽出、原因分析、修正につながるより詳細な情報まで容易に到達することが可能となる。
このように生成された第1の抽出情報141及び第2の抽出情報151は、上記第1の実施形態における抽出情報81と同様に、様々な目的で利用することができるものである。
上記のように、スコープを特定する情報(スコープID63)に基づいて作成された第1の属性情報121だけでなく、木構造情報111における呼び出し位置を特定する情報(呼び出し関係ID103)に基づいて作成された第2の属性情報131も利用して、トレース情報101から所望の情報(レコード102)を抽出することにより、トレース情報101の粒度をより効果的に調整することが可能となる。
このように、様々な情報を基準として作成された属性情報を利用することにより、トレース情報(ソースコード)の特徴をあらゆる視点から捉えることが可能となり、粒度の調整の自由度を向上させることが可能となる。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 トレース情報管理システム
11 取得部
12 指定部
13 抽出部
21 CPU
22 ROM
23 RAM
24 入力デバイス
25 出力デバイス
26 通信IF
27 バス
28 ストレージ
29 ディスク装置
51,91 ソースコード
61,101 トレース情報
62,102 レコード
63 スコープID
64 ステータス情報
65 タイミング情報
71 属性情報
74 スコープ名
75 実行回数情報
76 平均実行期間情報
81 抽出情報
103 呼び出し関係ID
111 木構造情報
121 第1の属性情報
131 第2の属性情報
141 第1の抽出情報
151 第2の抽出情報
161 表示画像
1001〜1005 ノード
2001〜2005 スコープオブジェクト

Claims (8)

  1. ソースコードに含まれる複数のスコープの実行順序と実行時に観測可能な特徴量とを示すトレース情報と、前記スコープを特定する複数のスコープ特定情報毎に前記特徴量を集約した第1の属性情報とを取得する取得部と、
    前記第1の属性情報の中から少なくとも1つの前記スコープ特定情報を指定する指定部と、
    指定された前記スコープ特定情報に対応する情報を前記トレース情報から抽出する抽出部と、
    を備えるトレース情報管理システム。
  2. 前記トレース情報は、前記各スコープの開始タイミング及び終了タイミングを示す複数のレコードを含み、
    前記レコードは、前記スコープ特定情報を含み、
    前記抽出部は、前記指定部により指定された前記スコープ特定情報を含む前記レコードを前記トレース情報から抽出する、
    請求項1に記載のトレース情報管理システム。
  3. 前記取得部は、更に、前記スコープの呼び出し関係を示す呼び出し関係特定情報毎に前記特徴量を集約した第2の属性情報を取得し、
    前記指定部は、更に、前記第2の属性情報の中から少なくとも1つの前記呼び出し関係特定情報を指定し、
    前記抽出部は、更に、指定された前記呼び出し関係特定情報に対応する情報を前記トレース情報から抽出する、
    請求項1に記載のトレース情報管理システム。
  4. 前記トレース情報は、前記各スコープの開始タイミング及び終了タイミングを示す複数のレコードを含み、
    前記レコードは、前記呼び出し関係特定情報を含み、
    前記抽出部は、前記指定部により指定された前記呼び出し関係特定情報を含む前記レコードを前記トレース情報から抽出する、
    請求項3に記載のトレース情報管理システム。
  5. 前記特徴量は、前記スコープの実行期間である、
    請求項1に記載のトレース情報管理システム。
  6. 前記特徴量は、前記スコープの実行回数である、
    請求項1に記載のトレース情報管理システム。
  7. ソースコードに含まれる複数のスコープの実行順序と実行時に観測可能な特徴量とを示すトレース情報と、前記スコープを特定する複数のスコープ特定情報毎に前記特徴量を集約した第1の属性情報とを取得するステップと、
    前記第1の属性情報の中から少なくとも1つの前記スコープ特定情報を指定するステップと、
    指定された前記スコープ特定情報に対応する情報を前記トレース情報から抽出するステップと、
    を備えるトレース情報管理方法。
  8. コンピュータに、
    ソースコードに含まれる複数のスコープの実行順序と実行時に観測可能な特徴量とを示すトレース情報と、前記スコープを特定する複数のスコープ特定情報毎に前記特徴量を集約した第1の属性情報とを取得する処理と、
    前記第1の属性情報の中から少なくとも1つの前記スコープ特定情報を指定する処理と、
    指定された前記スコープ特定情報に対応する情報を前記トレース情報から抽出する処理と、
    を実行させるトレース情報管理プログラム。
JP2015162817A 2015-08-20 2015-08-20 トレース情報管理システム、方法、及びプログラム Active JP6437396B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015162817A JP6437396B2 (ja) 2015-08-20 2015-08-20 トレース情報管理システム、方法、及びプログラム
US15/234,408 US20170052881A1 (en) 2015-08-20 2016-08-11 Trace information management system, method, and program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015162817A JP6437396B2 (ja) 2015-08-20 2015-08-20 トレース情報管理システム、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017041129A JP2017041129A (ja) 2017-02-23
JP6437396B2 true JP6437396B2 (ja) 2018-12-12

Family

ID=58157765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015162817A Active JP6437396B2 (ja) 2015-08-20 2015-08-20 トレース情報管理システム、方法、及びプログラム

Country Status (2)

Country Link
US (1) US20170052881A1 (ja)
JP (1) JP6437396B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248545B2 (en) * 2016-02-17 2019-04-02 Parasoft Corporation Method for tracking high-level source attribution of generated assembly language code

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US6604210B1 (en) * 1999-09-09 2003-08-05 International Business Machines Corporation Method and system for detecting and recovering from in trace data
US7496901B2 (en) * 2004-06-22 2009-02-24 International Business Machines Corporation Method for boundary trace with reproduction facility
US7369954B2 (en) * 2005-03-17 2008-05-06 International Business Machines Corporation Event tracing with time stamp compression and history buffer based compression
US20090037886A1 (en) * 2007-07-30 2009-02-05 Mips Technologies, Inc. Apparatus and method for evaluating a free-running trace stream
US8601443B2 (en) * 2008-02-12 2013-12-03 International Business Machines Corporation Method and system for correlating trace data
JP2009211424A (ja) * 2008-03-04 2009-09-17 Mitsubishi Electric Corp 最適化箇所判定装置及び最適化箇所判定システム及びコンピュータプログラム及び最適化箇所判定方法
JP5392820B2 (ja) * 2009-02-23 2014-01-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 性能評価モデリングのための関数選択手法
US9129056B2 (en) * 2009-12-04 2015-09-08 Sap Se Tracing values of method parameters
US8719791B1 (en) * 2012-05-31 2014-05-06 Google Inc. Display of aggregated stack traces in a source code viewer
JP6334862B2 (ja) * 2013-07-22 2018-05-30 株式会社東芝 プログラム情報表示システム、プログラム情報表示方法、プログラム、および、処理装置
JP2015043198A (ja) * 2013-07-22 2015-03-05 株式会社東芝 解析システム、解析方法および解析プログラム
US20150220420A1 (en) * 2014-01-31 2015-08-06 Schlumberger Technology Corporation Performance evaluation and tuning systems and methods

Also Published As

Publication number Publication date
JP2017041129A (ja) 2017-02-23
US20170052881A1 (en) 2017-02-23

Similar Documents

Publication Publication Date Title
US20060143596A1 (en) Program analyzing apparatus and testing apparatus, and analyzing method and program therefor
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
JP5450840B2 (ja) プログラムの実行性能評価のためのテストデータ生成方法
CN111367786B (zh) 一种符号执行方法、电子设备以及存储介质
JP2019079312A (ja) ソースコード解析装置、ソースコード解析方法、ソースコード解析プログラム
US8813036B2 (en) Visual representation of a difference between Cartesian product models
Mendonça et al. Test2feature: Feature-based test traceability tool for highly configurable software
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
JP6437396B2 (ja) トレース情報管理システム、方法、及びプログラム
JP6730587B2 (ja) キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
US8671373B1 (en) Analysis of circuit designs via trace signatures
JP2017041196A (ja) スタブ化対象判定装置、方法、及びプログラム
JP6665576B2 (ja) 支援装置、支援方法及びプログラム
CN114385155A (zh) vue项目可视化工具生成方法、装置、设备及存储介质
JP6045707B2 (ja) ライセンス管理装置、ライセンス管理方法、及びプログラム
Alvin et al. StaticGen: static generation of UML sequence diagrams
JP6802109B2 (ja) ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法
JP6036089B2 (ja) データ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラム
JP5578625B2 (ja) プログラム分析装置、プログラム分析方法、及びプログラム
JP2016042317A (ja) ソフトウェア設計支援装置、および方法
US20180081780A1 (en) Trace-information management system, trace-information management method, and trace-information management program product
US20170123959A1 (en) Optimized instrumentation based on functional coverage
JP7073431B2 (ja) ソースコード解析システムおよびソースコード解析方法
US8930759B2 (en) Stream generation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180926

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: 20181016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181114

R151 Written notification of patent or utility model registration

Ref document number: 6437396

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151