JP2017054380A - プログラム情報生成システム、方法、及びプログラム - Google Patents

プログラム情報生成システム、方法、及びプログラム Download PDF

Info

Publication number
JP2017054380A
JP2017054380A JP2015178902A JP2015178902A JP2017054380A JP 2017054380 A JP2017054380 A JP 2017054380A JP 2015178902 A JP2015178902 A JP 2015178902A JP 2015178902 A JP2015178902 A JP 2015178902A JP 2017054380 A JP2017054380 A JP 2017054380A
Authority
JP
Japan
Prior art keywords
scope
node
call tree
scopes
information
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.)
Abandoned
Application number
JP2015178902A
Other languages
English (en)
Inventor
真由子 肥塚
Mayuko Koezuka
真由子 肥塚
信明 東條
Nobuaki Tojo
信明 東條
秀則 松崎
Hidenori Matsuzaki
秀則 松崎
黒田 亮
Akira Kuroda
亮 黒田
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 JP2015178902A priority Critical patent/JP2017054380A/ja
Priority to US15/257,197 priority patent/US20170075665A1/en
Publication of JP2017054380A publication Critical patent/JP2017054380A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】1つのソースコードから生成された複数のコールツリー間の関連性を把握できるようにする。
【解決手段】コールツリー生成部102は動作情報に基づいて1つのソースコードから第1のコールツリーと第2のコールツリーとを生成する。ノード情報生成部103はスコープ対応関係情報、第1のコールツリー、及び第2のコールツリーに基づいて、第1のコールツリーの構成要素である第1のノードと、第2のコールツリーの構成要素である第2のノードとの対応関係を示すノード対応関係情報を生成する。
【選択図】図3

Description

本発明の実施形態は、プログラム情報生成システム、方法、及びプログラムに関する。
プログラムの開発、検査等を行うために、プログラムの実行状況を示す情報を生成するシステムが利用される。例えば、複数のプログラムの動作情報(トレース)から各動作情報に対応するコールツリー(木構造)をそれぞれ生成し、生成された複数のコールツリーの中から共通するコールツリーを同定するシステムがある。
米国特許第8266595号明細書
1つのプログラム(ソースコード)の動作情報から複数のコールツリーを生成し、これらのコールツリー間の関連性を調査する場合がある。このような調査は、1つのソースコードから1つのコールツリーを生成するシステムによっては実現することができない。
そこで、以下の実施形態では、1つのソースコードから生成された複数のコールツリー間の関連性を把握できるようにすることを目的とする。
実施形態のプログラム情報生成システムは、取得部と、コールツリー生成部と、ノード情報生成部とを備える。取得部は、ソースコード内で設定された複数のスコープの実行順序を示す動作情報と、スコープ間の包含関係を示すスコープ対応関係情報とを取得する。コールツリー生成部は、動作情報に基づいて、1つのソースコードから、1つ以上の第1のスコープを対象とする第1のコールツリーと、第1のスコープとは異なる1つ以上の第2のスコープを対象とする第2のコールツリーとを生成する。ノード情報生成部は、スコープ対応関係情報、第1のコールツリー、及び第2のコールツリーに基づいて、第1のコールツリーの構成要素であって第1のスコープのそれぞれに対応する第1のノードと、第2のコールツリーの構成要素であって第2のスコープのそれぞれに対応する第2のノードとの対応関係を示すノード対応関係情報を生成する。
第1の実施形態におけるプログラム情報生成システムのハードウェア構成を例示する図。 第1の実施形態における情報処理端末及びサーバの内部構成を例示する図。 第1の実施形態におけるプログラム情報生成システムの機能的構成を例示する図。 第1の実施形態におけるプログラム情報生成システムによる処理の流れを例示するフローチャート。 第1の実施形態におけるソースコードとスコープとの関係を例示する図。 第1の実施形態における動作情報を例示する図。 第1の実施形態におけるスコープ対応関係情報を例示する図。 第1の実施形態における上位コールツリーを例示する図。 第1の実施形態における下位コールツリーを例示する図。 第1の実施形態における上位コールツリー又は下位コールツリーの生成手順を例示するフローチャート。 第1の実施形態の第1の例におけるノード対応関係情報を例示する図。 第1の実施形態におけるノード対応関係情報の生成手順を例示するフローチャート。 第1の実施形態の第2の例におけるノード対応関係情報を例示する図。 第1の実施形態の第3の例におけるノード対応関係情報を例示する図。 第1の実施形態の第4の例におけるノード対応関係情報を例示する図。 第2の実施形態におけるプログラム情報生成システムにより生成される、第1の上位コールツリー、第2の上位コールツリー、スコープ対応関係情報、及びノード対応関係情報を例示する図。 第3の実施形態における上位コールツリー又は下位コールツリーの生成手順を例示するフローチャート。 第3の実施形態において生成される上位コールツリーを例示する図。
(第1の実施形態)
図1は、プログラム情報生成システム1のハードウェア構成を例示する図である。本例のプログラム情報生成システム1は、情報処理端末11、サーバ12、及びネットワーク13を含む。情報処理端末11は、ユーザが使用するPC(Personal Computer)、タブレット、スマートフォン等であり得る。サーバ12は、プログラム情報生成システム1の管理者が管理するサーバコンピュータ等であり得る。情報処理端末11とサーバ12とは、インターネット、LAN(Local Area Network)等のネットワーク13を介して接続されている。なお、同図においては、情報処理端末11及びサーバ12がそれぞれ1つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
図2は、情報処理端末11及びサーバ12の内部構成を例示する図である。情報処理端末11及びサーバ12は、CPU(Central Processing Unit)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、入力デバイス24、出力デバイス25、通信I/F(Interface)26、及びバス27を含む。CPU21は、ROM22等に記憶された制御プログラムに従ってRAM23をワーキングエリアとして所定の演算処理を行う。入力デバイス24は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス25は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信I/F26は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
図3は、第1の実施形態におけるプログラム情報生成システム1の機能的構成を例示する図である。プログラム情報生成システム1は、取得部101、コールツリー生成部102、及びノード情報生成部103を含む。
取得部101は、動作情報及びスコープ対応関係情報を取得する。動作情報は、検査対象となるソースコード内で設定された複数のスコープの実行順序を示す情報である。スコープとは、ソースコードによる処理上の連続区間を示す範囲であり、例えば関数・関数内のループ処理・関数内の分岐処理等に対応する範囲、関数内においてループ処理及び分岐処理に含まれない連続区間等に対応する範囲等である。スコープは、これらに限られるものではなく、ソースコードの形態に合わせて適宜設定され得るものである。例えば、ソースコード内の連続区間を示すファイル名、行番号等によりスコープを設定してもよい。スコープ対応関係情報は、複数のスコープ間の包含関係(親子関係、呼び出し関係)を示す情報である。取得部101は、CPU21、ROM22又はRAM23に記憶された制御プログラム、ロジックIC(Integrated Circuit)、ワーキングエリアとして使用されるRAM23等の協働により構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、動作情報及びスコープ対応関係情報は、プログラム情報生成システム1以外のシステム(装置)によって生成されてもよいし、プログラム情報生成システム1内で生成されてもよい。動作情報及びスコープ対応関係情報の生成方法は特に限定されるものではなく、動作情報及びスコープ対応関係情報は公知又は新規の技術を用いて適宜生成されればよい。
コールツリー生成部102は、動作情報に基づいて、1つのソースコードから異なる複数のコールツリーを生成する。コールツリーとは、1つ以上のスコープ間の包含関係を示す情報であり、例えば、各スコープに一意に対応する複数のノード、ノード間を結ぶ有向線分であるエッジ等から構成される有向グラフである。本実施形態におけるコールツリー生成部102は、上位コールツリー(第1のコールツリー)及び下位コールツリー(第2のコールツリー)を生成する。上位コールツリーとは、自らを包含するスコープを有しないスコープ(上位スコープ:第1のスコープ)に対応するノード(上位ノード:第1のノード)を構成要素とし、複数の上位スコープ間の包含関係を示すコールツリーである。下位コールツリーとは、自らを包含するスコープを有するスコープ(下位スコープ:第2のスコープ)に対応するノード(下位ノード:第2のノード)を構成要素とし、複数の下位スコープ間の包含関係を示すコールツリーである。コールツリー生成部102は、CPU21、制御プログラム、ロジックIC、RAM23等の協働により構成される。
ノード情報生成部103は、スコープ対応関係情報、上位コールツリー、及び下位コールツリーに基づいて、上位ノードと下位ノードとの対応関係を示すノード対応関係情報を生成する。すなわち、ノード対応関係情報は、1つのソースコードから生成された上位コールツリー及び下位コールツリー間の関連性を示す。ノード情報生成部103は、CPU21、制御プログラム、ロジックIC、RAM23等の協働により構成される。
図4は、プログラム情報生成システム1による処理の流れを例示するフローチャートである。先ず、取得部101は、動作情報及びスコープ対応関係情報を取得する(S101)。コールツリー生成部102は、動作情報に基づいて上位コールツリー及び下位コールツリーを生成する(S102)。ノード情報生成部103は、スコープ対応関係情報、上位コールツリー、及び下位コールツリーに基づいてノード対応関係情報を生成する(S103)。
図5は、ソースコード201とスコープ(上位スコープ211及び下位スコープ212)との関係を例示する図である。本例のソースコード201は、4つの関数Func_A、Func_B、Func_C、及びFunc_Dを含む。関数Func_Aは、分岐処理if{Func_B;}及びループ処理else{Func_C;}を含む。関数Func_Bは、分岐処理if{Func_A;}を含む。
図5に示す例では、上位スコープ211として、スコープScope_A,Scope_B,Scope_C,Scope_Dが設定されている。スコープScope_Aは、関数Func_Aに対応している。スコープScope_Bは、関数Func_Bに対応している。スコープScope_Cは、関数Func_Cに対応している。スコープScope_Dは、関数Func_Dに対応している。これらの上位スコープ211は、自らを包含するスコープを有していない。
下位スコープ212として、スコープScope_a2,Scope_a3,Scope_b2,Scope_a1,Scope_b1,Scope_c1,Scope_d1が設定されている。スコープScope_a2は、関数Func_A内において分岐処理if{Func_B;}に対応している。スコープScope_a3は、関数Func_A内のループ処理else{Func_C;}に対応している。スコープScope_b2は、関数Func_B内の分岐処理if{Func_A;}に対応している。スコープScope_a1は、関数Func_A内の分岐処理及びループ処理を含まない連続区間に対応している。スコープScope_b1は、関数Func_B内の分岐処理を含まない連続区間に対応している。スコープScope_c1は、関数Func_C内の分岐処理を含まない連続区間に対応している。スコープScope_d1は、関数Func_D内の分岐処理を含まない連続区間に対応している。これらの下位スコープ212は、自らを包含するスコープ(上位スコープを含む)を有している。
図6は、動作情報221を例示する図である。本例の動作情報221は、上記ソースコード201の上位スコープ211から抜粋された一部のスコープ(Scope_A,Scope_B,Scope_C)に対応している。本例の動作情報221は、スコープID225、ステータス情報226、及び期間情報227を含む。
スコープID225は、各スコープに対して一意に対応する情報であり、本例ではスコープ名を示すテキストである。スコープID225は、これに限られるものではなく、例えば各スコープに一意に対応する数値、記号等であってもよい。ステータス情報226は、スコープが開始状態にあるか終了状態にあるかを示す情報であり、本例では開始状態を「ENTER」、終了状態を「LEAVE」というテキストで表現している。ステータス情報226は、これに限られるものではなく、例えば各状態に対応する数値、記号等であってもよく、他の状態、特徴量等を示す情報を含んでもよい。期間情報227は、各スコープが開始状態又は終了状態になった順序を示す情報であり、本例では昇順に付される数値である。期間情報227は、これに限られるものではなく、例えばタイムスタンプ等であってもよい。
上記動作情報221により、各スコープの開始タイミング及び終了タイミングに基づく動作期間を特定することができ、それらに基づいて各スコープの包含関係を特定することができる。例えば、図6に示す動作情報221において、Scope_Aの動作期間はタイミング1→8及びタイミング3→4であり、Scope_Bの動作期間はタイミング2→5であることが示されている。これらの情報から、Scope_Bは、1回目のScope_Aに包含され、2回目のScope_Aを包含することがわかる。換言すれば、関数Func_Bは1回目の関数Func_Aから呼び出されて実行され、2回目の関数Func_Aは関数Func_Bから呼び出されて実行されることがわかる。
なお、上記例では上位スコープ211についてのみ動作情報221を示したが、下位スコープ212についての動作情報もこれと同様に構成することができる。このような動作情報の生成方法は特に限定されるべきものではなく、上位スコープ211及び下位スコープ212についての各動作情報は、周知又は新規な技術を用いて適宜生成されればよい。
図7は、スコープ対応関係情報231を例示する図である。スコープ対応関係情報231は、上位スコープ211と下位スコープ212との包含関係を示している。本例では、下位スコープScope_a1、Scope_a2、及びScope_a3が上位スコープScope_A(親スコープ)の子スコープであり、下位スコープScope_b1及びScope_b2が上位スコープScope_B(親スコープ)の子スコープであり、下位スコープScope_c1が上位スコープScope_C(親スコープ)の子スコープであり、下位スコープScope_d1が上位スコープScope_D(親スコープ)の子スコープであることが示されている。
なお、上記例では、各スコープを特定する情報として「Scope_A」等のスコープ名を示すテキストが用いられているが、スコープ対応関係情報231の構成はこれに限られるものではない。例えば、各スコープに一意に対応する数値、記号等を用いてもよい。また、スコープ対応関係情報231の構成及び生成方法は、上記に限定されるべきものではなく、スコープ対応関係情報231は周知又は新規な技術を用いて適宜生成されればよい。
図8は、上位コールツリー241を例示する図である。本例の上位コールツリー241は、上位スコープ211のみを対象とする動作情報221に基づいて生成される。上位コールツリー241は、各上位スコープ211に一意に対応する上位ノード245と、上位ノード245間を結ぶ有向線分であるエッジ246とを含む。エッジ246の始端側に接続されたノード(例えば「A1」)は親ノードであり、終端側に接続されたノード(例えば「B」及び「C」)は子ノードである。例えば、本例では、上位スコープ211:Scope_Aの動作期間(1→8)に上位スコープ211:Scope_Bが開始(2)しているので、上位スコープ211:Scope_Aに対応する上位ノード245:「A1」が親ノードとなり、上位スコープ211:Scope_Bに対応する上位ノード245:「B」が子ノードとなる。本例では、上位スコープ211:Scope_Aが2回動作している。上位ノード245:「A1」は1回目に実行される上位スコープ211:Scope_A(動作期間1→8)に対応し、上位ノード245:「A2」は2回目に実行される上位スコープ211:Scope_A(動作時間3→4)に対応している。
図9は、下位コールツリー242を例示する図である。本例の下位コールツリー242は、下位スコープ212のみを対象とする動作情報222に基づいて生成される。動作情報222は、図6及び図8に示す、上位スコープ211のみを対象とする動作情報221と同様の方法で生成することができる。下位コールツリー242は、各下位スコープ212に一意に対応する下位ノード247と、下位ノード247間を結ぶ有向線分であるエッジ246とを含む。図8に示す上位コールツリー241と同様に、エッジ246の始端側に接続されたノード(例えば「a1_1」)は親ノードであり、終端側に接続されたノード(例えば「a2_1」及び「c1」)は子ノードである。例えば、本例では、下位スコープ212:Scope_a1の動作期間(1→12)に下位スコープ212:Scope_a2が開始(2)しているので、下位スコープ212:Scope_a1に対応する下位ノード247:「a1_1」が親ノードとなり、下位スコープ212:Scope_a2に対応する下位ノード247:「a2_1」が子ノードとなる。本例では、下位スコープ212:Scope_a1が2回動作している。下位ノード247:「a1_1」は1回目に実行される下位スコープ212:Scope_a1(動作期間1→12)に対応し、下位ノード247:「a1_2」は2回目に実行される下位スコープ212:Scope_a1(動作時間5→6)に対応している。
なお、上位コールツリー241及び下位コールツリー242は、上記に限られるものではなく、周知又は新規な技術を用いて適宜生成され得るものである。図8及び図9においては、異なる2つの動作情報(上位スコープ211のみを対象とする動作情報221及び下位スコープ212のみを対象とする動作情報222)に基づいて上位コールツリー241及び下位コールツリー242を生成する例が示されている。しかし、上位スコープ211及び下位スコープ212の両方を対象とする(両スコープ211,212のステータスを示す情報が混在する)1つの動作情報に基づいて上位コールツリー241及び下位コールツリー242を生成することも可能である。
図10は、上位コールツリー241又は下位コールツリー242の生成手順を例示するフローチャートである。本例においては、コールツリー生成部102は、動作情報221,222から各スコープ211,212の動作を順に読み取り、各スコープ211,212間の包含関係を抽出することにより、コールツリー241,242を生成する。
コールツリー生成部102は、動作情報221,222に基づいて最初に動作するスコープ211,212のスコープID225及びステータス情報226を取得する(S201)。スコープID225及びステータス情報226が取得されなかった場合(S202:NO)、このルーチンを終了し、取得された場合(S202:YES)、ルートノードが存在するか否かが判定される(S203)。ルートノードとは、コールツリー241,242を生成していく際に基点となるノードである。
ステップS203において、ルートノードが存在しない場合(S203:NO)、取得されたステータス情報226が「ENTER」であるか否かが判定される(S204)。取得されたステータス情報226が「ENTER」である場合(S204:YES)、取得されたスコープID225が示すスコープ211,212に対応するノードをルートノードとして生成すると共に、生成されたノードをカレントノードに設定する(S205)。カレントノードとは、新たに子ノードを追加する際に親ノードとなるノードである。その後、動作情報221,222から、次に動作するスコープ211,212のスコープID225及びステータス情報226が取得される(S206)。ステップS204において、取得されたステータス情報226が「ENTER」でない(「LEAVE」である)場合(S204:NO)にも、ステップS206が実行される。
ステップS203において、ルートノードが存在する場合(S203:YES)、新たに取得されたステータス情報226が「ENTER」であるか否かが判定される(S207)。新たに取得されたステータス情報226が「ENTER」である場合(S207:YES)、新たに取得されたスコープID225が示すスコープ211,212に対応するノードを、カレントノードに設定されているノード(親ノード)に対する子ノードとして追加する(S209)。その後、追加された子ノードをカレントノードに設定した後(S210)、次に動作するスコープ211,212のスコープID225及びステータス情報226を取得する(S206)。ステップS207において、ステータス情報226が「ENTER」でない(「LEAVE」である)場合(S207:NO)、カレントノードの親ノードを新たなカレントノードに再設定した後(S208)、ステップS206を実行する。
上記生成手順を、上位スコープ211のみを対象とする動作情報221及び下位スコープ212のみを対象とする動作情報222に対してそれぞれ行うことにより、上位コールツリー241及び下位コールツリー242を生成することができる。上位スコープ211の実行順序と下位スコープ212の実行順序とが混在した動作情報を用いる場合には、次に動作するスコープ211,212のスコープID225及びステータス情報226を取得するステップS206において、対象となる階層のスコープ(例えば上位スコープ211)の情報のみを取得し、対象外の階層のスコープ(例えば下位スコープ212)の情報を取得しなければよい。
ノード情報生成部103は、上記のように生成された上位コールツリー241及び下位コールツリー242、及び上述したスコープ対応関係情報231に基づいて、上位ノード245と下位ノード247との対応関係を示すノード対応関係情報を生成する。
図11は、第1の実施形態の第1の例におけるノード対応関係情報251Aを例示する図である。本例のノード対応関係情報251Aは、上位ノード表示部255及び下位ノード表示部256を含む表形式の情報である。上位ノード表示部255には、上位コールツリー241を構成する上位ノード245を特定する情報(A1,B,C,A2)が表示されている。下位ノード表示部256には、下位コールツリー242を構成する下位ノード247を特定する情報(a1_1,a1_2,b1,b2,c1,a2_1)が表示されている。本例のノード対応関係情報251Aにおいては、互いに対応関係を有する上位ノード245と下位ノード247とが同一の行に表示されている。例えば、1行目において、上位ノード245:A1と下位ノード247:a1_1,a1_2とが親子関係を有することが示されている。このようなノード対応関係情報251Aにより、1つのソースコード201から生成された異なる2つの上位コールツリー241及び下位コールツリー242の対応関係を把握することが可能となる。
図12は、第1の実施形態におけるノード対応関係情報251Aの生成手順を例示するフローチャートである。先ず、ノード情報生成部103は、上位コールツリー241から上位ノード245を選択する(S301)。当該選択処理は、ROM22に記憶された制御プログラムに従って動作するCPU21の処理により、所定のルールに従って行われる。例えば、上位コールツリー241に含まれる全ての上位ノード245、ユーザが入力デバイス24を介して指定した上位ノード245、所定の条件に適合する上位ノード245等が選択される。
次いで、ノード情報生成部103は、スコープ対応関係情報231に基づいて、選択された上位ノード245に対応する上位スコープ211と包含関係を有する下位スコープ212を特定する(S302)。例えば、図7に示すスコープ対応関係情報231の1行目に基づいて、上位スコープ211:「Scope_A」と2つの下位スコープ212:「Scope_a1」,「Scope_a2」とが親子関係を有することが特定される。
なお、スコープ対応関係情報231は、上記に限られるものではなく、選択された上位ノード245に応じて適宜生成されるものであってもよい。例えば、図8に示すような上位スコープ211についての動作情報221に基づいて、選択された上位ノード245に対応する上位スコープ211の動作期間を特定し、図9に示すような下位スコープ212についての動作情報222に基づいて、特定された動作期間内に動作した下位スコープ212を特定することにより、選択された上位ノード245に応じたスコープ対応関係情報を適宜生成することができる。
次いで、ノード情報生成部103は、選択された上位ノード245と、特定された下位スコープ212に対応する下位ノード247との対応関係を示すノード対応関係情報251Aを生成する(S303)。
図13は、第1の実施形態の第2の例におけるノード対応関係情報251Bを例示する図である。本例のノード対応関係情報251Bは、上位コールツリー241、下位コールツリー242、及び対応線259を含む。本例においては、上位コールツリー241及び下位コールツリー242が並列して表示されると共に、親子関係を有する上位ノード245と下位ノード247とが対応線259で連結されている。
図14は、第1の実施形態の第3の例におけるノード対応関係情報251Cを例示する図である。本例のノード対応関係情報251Cにおいては、上位コールツリー241及び下位コールツリー242の中から親子関係を有する上位ノード245及び下位ノード247のみが抜き出されて表示されている。
図15は、第1の実施形態の第4の例におけるノード対応関係情報251Dを例示する図である。本例のノード対応関係情報251Dは、上位ノード245:A1と下位ノード247:a2_1との対応を示す対応線259、及び上位ノード245:Bと下位ノード247:b2との対応を示す対応線259が表示されていない点で、図13に示すノード対応関係情報251Bと相違する。本例においては、1つの上位ノード245が複数の下位ノード247と親子関係を有する場合(1つの上位スコープ211が複数の下位スコープ212を包含している場合)には、所定の条件を満たす下位ノード247に対する対応線259のみが表示される。当該所定の条件とは、例えば対応する下位スコープ212の中で、最も動作期間が長いこと等である。これにより、対応線259等の対応関係を示す情報が過度に表示されることを抑制し、上位ノード245と下位ノード247との対応関係を把握しやすくすることが可能となる。
上記のように生成されたノード対応関係情報251A〜251Dは、様々な目的で利用され得る。例えば、ノード対応関係情報251A〜251Dは、そのままコンピュータのディスプレイ等に出力されてもよいし、他のシステムに提供されてもよい。他のシステムとしては、例えばGUI(Graphical User Interface)を利用してプログラム52の実行状況を可視化するシステム、ソースコード201を検証するシステム等が考えられる。
上記実施形態においては、1つのソースコード201から階層が異なる2つのコールツリー241,242を生成する例を示した。しかし、実施形態はこれに限られるものではなく、階層が異なる又は同一の3つ以上のコールツリーを生成する場合であっても、それらのコールツリーの構成要素である複数のノード間の対応関係を示すノード対応関係情報を生成することが可能である。
図1及び図2に示すハードウェア構成は一例であり、プログラム情報生成システム1は、様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム1は、単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
図3には、プログラム情報生成システム1の最も基本的な機能ブロックである取得部101、コールツリー生成部102、及びノード情報生成部103を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、1つの機能ブロックを複数の機能ブロックに分割する構成、これら3つの構成を組み合わせた構成等であってもよい。
プログラム情報生成システム1の機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めROM等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記取得部101、コールツリー生成部102、及びノード情報生成部103の機能を実現する複数のモジュールから構成されてもよい。
上記プログラム情報生成システム1によれば、1つのソースコード201から階層が異なる上位コールツリー241及び下位コールツリー242を生成した場合に、各コールツリー241,242を構成する上位ノード245及び下位ノード247間の対応関係を示すノード対応関係情報251A〜251Dが生成される。これにより、複数のコールツリー241,242間の対応関係を容易且つ的確に把握することが可能となる。
以下に、他の実施形態について図面を参照して説明するが、上記第1の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
(第2の実施形態)
図16は、第2の実施形態におけるプログラム情報生成システム1により生成される、第1の上位コールツリー241A、第2の上位コールツリー241B、スコープ対応関係情報232、及びノード対応関係情報251Eを例示する図である。
本実施形態におけるコールツリー生成部102は、1つの動作情報221から2つの上位コールツリー241A,241Bを生成する。第1の上位コールツリー241Aは、上記第1の実施形態における上位コールツリー241と同一である。第2の上位コールツリー241Bは、第1の上位コールツリー241Aの一部を構成するコールツリーである。換言すれば、第2のコールツリー241Bを構成する全ての第2の上位ノード245Bに対応する上位スコープ211の動作期間は、第1のコールツリー241Aを構成する全ての第1の上位ノード245Aに対応する上位スコープ211の動作期間に包含されている。本例のスコープ対応関係情報232は、第1の上位ノード245Aに対応する上位スコープ211と、第2の上位ノード245Bに対応する上位スコープ211との対応関係を示している。
本実施形態におけるノード情報生成部103は、上記のような第1の上位コールツリー241A、第2の上位コールツリー241B、及びスコープ対応関係情報232に基づいて、ノード対応関係情報251Eを生成する。本例のノード対応関係情報251Eは、第1の上位ノード245Aと第2の上位ノード245Bとの対応関係を示している。また、第1の上位コールツリー241A及び第2の上位コールツリー241Bにおいて、互いに対応する第1の上位ノード245Aと第2の上位ノード245Bとが対応線259により連結されている。なお、上記第1の実施形態におけるノード対応関係情報251A〜251Dのように、下位ノード247との対応関係を示す情報が更に生成されてもよい。
このように、階層が同一のコールツリーを複数生成し、それらのコールツリーを構成する複数のノード間の対応関係を示すノード対応関係情報を生成してもよい。これにより、階層が異なるコールツリー間の対応関係だけでなく、階層が同一のコールツリー間の対応関係も容易且つ的確に把握することが可能となる。
(第3の実施形態)
図17は、第3の実施形態における上位コールツリー241又は下位コールツリー242の生成手順を例示するフローチャートである。本実施形態におけるフローチャートは、ステップS401,S402を含む点で、第1の実施形態における図10に示すフローチャートと相違する。本実施形態においては、ステップS207においてステータスが「ENTER」である場合、すなわち新たに取得されたステータス情報226が「ENTER」である場合(S207:YES)、新規にノードが追加されない場合がある。
本実施形態においては、新たに取得されたステータス情報226が「ENTER」である場合(S207:YES)、新たに取得されたスコープID225と同一のスコープID225が示すスコープ211,212に対応する子ノードが、コールツリー241,242内に既に存在するか否かが判定される(S401)。
ステップS401において、同一のスコープID225が示すスコープ211,212に対応する子ノードが既に存在する場合(S401:YES)、当該子ノードをカレントノードに設定する(S402)。これにより、1つのノードが複数の動作期間を示すことになる。
図18は、第3の実施形態において生成される上位コールツリー241Cを例示する図である。本例の上位コールツリー241Cは、本例の動作情報301に基づいて図17に示すフローチャートに従って生成されたコールツリーである。図18に示される上位コールツリー302は、比較例であって、動作情報301に基づいて図10に示すフローチャートに従って生成されたコールツリーである。
本例においては、動作情報301が示すように、上位スコープ211:Scope_Aの動作期間中に上位スコープ211:Scope_Cが2回実行されている。このような動作情報301に基づいて、比較例である上位コールツリー302においては、1回目の上位スコープ211:Scope_Cに対応する上位ノード311:C1及び2回目の上位スコープ:Scope_Cに対応する上位ノード312:C2が個別に生成されている。これに対し、本実施形態の上位コールツリー241Cにおいては、上位スコープ211:Scope_Cに対応する上位ノード245:Cが1つだけ生成されている。これは、図17のステップS401,S402の処理により、2回目の上位スコープ211:Scope_Cに対応する子ノード(上位ノード312:C2)が追加されなかったためである。
これにより、ノード数を抑制することが可能となり、複数のコールツリー間の対応関係の把握、情報量の削減、処理負荷の軽減等を実現することが可能となる。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 プログラム情報生成システム
11 情報処理端末
12 サーバ
13 ネットワーク
21 CPU
22 ROM
23 RAM
24 入力デバイス
25 出力デバイス
26 通信I/F
27 バス
101 取得部
102 コールツリー生成部
103 ノード情報生成部
201 ソースコード
211 上位スコープ(第1のスコープ)
212 下位スコープ(第2のスコープ)
221,222,301 動作情報
225 スコープID
226 ステータス情報
227 期間情報
231,232 スコープ対応関係情報
241,241C,302 上位コールツリー(第1のコールツリー)
241A 第1の上位コールツリー
241B 第2の上位コールツリー
242 下位コールツリー(第2のコールツリー)
245,311,312 上位ノード(第1のノード)
245A 第1の上位ノード
245B 第2の上位ノード
246 エッジ
247 下位ノード(第2のノード)
251A〜251E ノード対応関係情報
255 上位ノード表示部
256 下位ノード表示部
259 対応線

Claims (11)

  1. ソースコード内で設定された複数のスコープの実行順序を示す動作情報と、前記スコープ間の包含関係を示すスコープ対応関係情報とを取得する取得部と、
    前記動作情報に基づいて、1つの前記ソースコードから、1つ以上の第1のスコープを対象とする第1のコールツリーと、前記第1のスコープとは異なる1つ以上の第2のスコープを対象とする第2のコールツリーとを生成するコールツリー生成部と、
    前記スコープ対応関係情報、前記第1のコールツリー、及び前記第2のコールツリーに基づいて、前記第1のコールツリーの構成要素であって前記第1のスコープのそれぞれに対応する第1のノードと、前記第2のコールツリーの構成要素であって前記第2のスコープのそれぞれに対応する第2のノードとの対応関係を示すノード対応関係情報を生成するノード情報生成部と、
    を備えるプログラム情報生成システム。
  2. 前記第1のスコープと前記第2のスコープとは、互いに階層が異なっている、
    請求項1に記載のプログラム情報生成システム。
  3. 前記第1のスコープは、自らを包含するスコープを有しないスコープであり、
    前記第2のスコープは、自らを包含するスコープを有するスコープである、
    請求項1に記載のプログラム情報生成システム。
  4. 前記ノード対応関係情報は、前記第1のスコープに対応する前記第1のノードと、前記第1のスコープに包含される前記第2のスコープに対応する前記第2のノードとを対応付ける、
    請求項3に記載のプログラム情報生成システム。
  5. 前記第1のスコープは、関数単位で区切られたスコープである、
    請求項1に記載のプログラム情報生成システム。
  6. 前記第2のスコープは、前記関数内におけるループ処理又は分岐処理で区切られたスコープである、
    請求項5に記載のプログラム情報生成システム。
  7. 前記ノード情報生成部は、前記第1のノードに対応する前記第2のノードが複数存在する場合、所定の条件に適合する前記第2のノードのみが前記第1のノードに対応付けられるように前記ノード対応関係情報を生成する、
    請求項1に記載のプログラム情報生成システム。
  8. 前記所定の条件は、前記第2のノードに対応する複数の前記第2のスコープの中で最も動作期間が長いことである、
    請求項7に記載のプログラム情報生成システム。
  9. 前記ノード対応関係情報を可視化する表示部、
    を更に備える請求項1に記載のプログラム情報生成システム。
  10. ソースコード内で設定された複数のスコープの実行順序を示す動作情報と、前記スコープ間の包含関係を示すスコープ対応関係情報とを取得するステップと、
    前記動作情報に基づいて、1つの前記ソースコードから、1つ以上の第1のスコープを対象とする第1のコールツリーと、前記第1のスコープとは異なる1つ以上の第2のスコープを対象とする第2のコールツリーとを生成するステップと、
    前記スコープ対応関係情報、前記第1のコールツリー、及び前記第2のコールツリーに基づいて、前記第1のコールツリーの構成要素であって前記第1のスコープのそれぞれに対応する第1のノードと、前記第2のコールツリーの構成要素であって前記第2のスコープのそれぞれに対応する第2のノードとの対応関係を示すノード対応関係情報を生成するステップと、
    を含むプログラム情報生成方法。
  11. コンピュータに、
    ソースコード内で設定された複数のスコープの実行順序を示す動作情報と、前記スコープ間の包含関係を示すスコープ対応関係情報とを取得する処理と、
    前記動作情報に基づいて、1つの前記ソースコードから、1つ以上の第1のスコープを対象とする第1のコールツリーと、前記第1のスコープとは異なる1つ以上の第2のスコープを対象とする第2のコールツリーとを生成する処理と、
    前記スコープ対応関係情報、前記第1のコールツリー、及び前記第2のコールツリーに基づいて、前記第1のコールツリーの構成要素であって前記第1のスコープのそれぞれに対応する第1のノードと、前記第2のコールツリーの構成要素であって前記第2のスコープのそれぞれに対応する第2のノードとの対応関係を示すノード対応関係情報を生成する処理と、
    を実行させるプログラム情報生成プログラム。
JP2015178902A 2015-09-10 2015-09-10 プログラム情報生成システム、方法、及びプログラム Abandoned JP2017054380A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015178902A JP2017054380A (ja) 2015-09-10 2015-09-10 プログラム情報生成システム、方法、及びプログラム
US15/257,197 US20170075665A1 (en) 2015-09-10 2016-09-06 Program information generation system, method, and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015178902A JP2017054380A (ja) 2015-09-10 2015-09-10 プログラム情報生成システム、方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2017054380A true JP2017054380A (ja) 2017-03-16

Family

ID=58236879

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015178902A Abandoned JP2017054380A (ja) 2015-09-10 2015-09-10 プログラム情報生成システム、方法、及びプログラム

Country Status (2)

Country Link
US (1) US20170075665A1 (ja)
JP (1) JP2017054380A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10073682B1 (en) * 2016-03-22 2018-09-11 EMC IP Holding Company LLC Method and mechanism for optimal scope evaluation in scope based hierarchical configuration using evaluated scope propagation technique
US11698847B2 (en) 2020-01-15 2023-07-11 Microsoft Technology Licensing, Llc Diffing a subject replayable execution trace against a comparison replayable execution trace
US11237947B2 (en) 2020-01-15 2022-02-01 Microsoft Technology Licensing, Llc Diffing a plurality of subject replayable execution traces against a plurality of comparison replayable execution traces
US11243869B2 (en) * 2020-01-15 2022-02-08 Microsoft Technologly Licensing, LLC Diffing of replayable execution traces
US11698848B2 (en) * 2020-01-15 2023-07-11 Microsoft Technology Licensing, Llc Diffing a subject replayable execution trace against a plurality of comparison replayable execution traces

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530866A (en) * 1991-07-30 1996-06-25 Tera Computer Company Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring
US20030074655A1 (en) * 2001-09-27 2003-04-17 Robison Arch D. Method and apparatus for alias analysis for restricted pointers
US8266595B2 (en) * 2004-02-12 2012-09-11 International Business Machines Corporation Removal of asynchronous events in complex application performance analysis
US7496900B2 (en) * 2004-02-12 2009-02-24 International Business Machines Corporation Method for automatic detection of build regressions
US8201160B2 (en) * 2005-07-05 2012-06-12 International Business Machines Corporation Data processing method and system
US20100013180A1 (en) * 2008-07-16 2010-01-21 Harley-Davidson Motor Company Group, Inc. Three-wheeled vehicle with rear axle control link
US8769515B2 (en) * 2009-03-23 2014-07-01 International Business Machines Corporation Semantic intensity based decomposition of software systems
US8621435B2 (en) * 2009-12-23 2013-12-31 Microsoft Corporation Time debugging

Also Published As

Publication number Publication date
US20170075665A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
JP2017054380A (ja) プログラム情報生成システム、方法、及びプログラム
US9858045B2 (en) Designer tool for managing cloud computing services
JP6300710B2 (ja) 変更影響分析装置及び変更影響分析方法及びプログラム
JP6258159B2 (ja) プログラム情報生成システム、方法、及びプログラム
JP5789537B2 (ja) ソースコード類似関係可視化装置
JP2020123175A (ja) コード管理システムおよびコード管理方法
JP2016031567A (ja) パーソナル情報匿名化装置
JP2018060421A (ja) 情報生成システム、装置、方法、及びプログラム
JP2010198133A (ja) 性能評価モデリングのための関数選択手法
JP2019149019A (ja) 支援システム
JP2014085729A (ja) 抽出プログラム、抽出装置及び抽出方法
CN111865683B (zh) 虚拟网关版本灰度发布方法、装置、设备以及存储介质
JP2014178921A (ja) テスト設計支援装置及びプログラム
CN104243201B (zh) 网络设备测试用例对应拓扑图的存储方法及系统
JP6661500B2 (ja) 情報生成システム、装置、方法、及びプログラム
JP2015022356A (ja) テストシナリオバリエーション生成装置及び方法及びプログラム
JP6087473B2 (ja) プログラム抽象図作成装置、及びプログラム抽象図作成プログラム
JP2016062300A (ja) ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP2018055667A (ja) トレース情報管理システム、方法、及びプログラム
JP6136831B2 (ja) 制御プログラム、制御装置および制御方法
US20170052881A1 (en) Trace information management system, method, and program product
JP7439955B2 (ja) 操作支援装置、操作支援方法および操作支援プログラム
JP6193674B2 (ja) 変換回路設計装置、変換回路設計プログラムおよび変換回路設計方法
JP2015166954A (ja) 機器グループ関係分析装置および機器グループ関係分析プログラム
JP6452904B1 (ja) 設計支援装置、設計支援方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180202

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20180509