JP2005302028A - プログラムを計装するプローブ最適化のための方法およびシステム - Google Patents
プログラムを計装するプローブ最適化のための方法およびシステム Download PDFInfo
- Publication number
- JP2005302028A JP2005302028A JP2005111083A JP2005111083A JP2005302028A JP 2005302028 A JP2005302028 A JP 2005302028A JP 2005111083 A JP2005111083 A JP 2005111083A JP 2005111083 A JP2005111083 A JP 2005111083A JP 2005302028 A JP2005302028 A JP 2005302028A
- Authority
- JP
- Japan
- Prior art keywords
- program
- map
- probe
- post
- arc
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】 プローブ挿入を最適化することによってプログラムを計装するための方法およびシステムを提供すること。
【解決手段】 計装されたコード内へのプローブ挿入の数は、最適なプローブ挿入点を提供することによって減少される。コードの制御フローは、アークとブロックの関係と共に分析されて、ポスト支配木が構築される。最適なプローブ挿入点を提供する最適化マップが、ポスト支配木から生成される。プローブが挿入され、コードおよびプローブを表すバイナリを実行することによってデータが収集されると、そのデータは、最適化マップ、およびアークとブロックの関係上にオーバレイされて、コードカバレッジデータが提供される。
【選択図】 図4
【解決手段】 計装されたコード内へのプローブ挿入の数は、最適なプローブ挿入点を提供することによって減少される。コードの制御フローは、アークとブロックの関係と共に分析されて、ポスト支配木が構築される。最適なプローブ挿入点を提供する最適化マップが、ポスト支配木から生成される。プローブが挿入され、コードおよびプローブを表すバイナリを実行することによってデータが収集されると、そのデータは、最適化マップ、およびアークとブロックの関係上にオーバレイされて、コードカバレッジデータが提供される。
【選択図】 図4
Description
本発明は、プローブ挿入を最適化することによってプログラムを計装するための方法およびシステムに関する。
カバレッジ分析は、一定した高品質の検証結果を保証するために多くのソフトウェア開発元によって採用されている方法である。コードカバレッジ(code coverage)分析ツールをインストールして、特定のプログラムのカバレッジ分析を提供することができる。カバレッジ分析ツールは、カバレッジ情報を取得するための範囲および方法が様々であり得る。
本質的にカバレッジ分析は、1組の目標のメトリックに対する設計のテストスィート(test suite)の測定に基づく。設計者は、その設計の段階、カバレッジ測定を行うコスト、および特定のメトリックの有用性を体験する設計グループの経験に基づいてメトリックを選択する。コードカバレッジのメトリックは、自動化されたツールを用いて比較的低いコストで実施され、また簡単明瞭な結果をもたらし得るので、多くの場合最初に使用されるものである。
コードカバレッジ計装の1つの方法は、プログラムのコードの論理フロー内の各ブロックまたはアーク(arc)に「プローブ」を置くことを含む。「プローブ」は、コードに関するデータを記録する1組の命令である。たとえば、プローブは、分析のためにプログラムの特定の部分の使用データについて報告を出すことができる。プログラム内にプローブを置くことによって、プログラムを計装するための強力な方法がもたらされる。
追加データの収集のためにユーザがコードを増やす必要があるいかなる場合にも、パフォーマンスは関心事である。計装/プローブによって課されるオーバヘッドが、コードカバレッジ分析がもたらす利益より大きいことがある。提供されるカバレッジデータのレベルのため、プローブベースの分析のパフォーマンスコストは重大であり得る。
パフォーマンスコストを改善しながらも、プローブベース分析によってもたらされる比較可能なレベルのデータを提供する、プログラムを計装するための方法が求められている。
本発明は、プローブ挿入を最適化することによってプログラムを計装するための方法およびシステムを提供する。プローブ挿入を最適化すると、コードカバレッジデータ収集のオーバヘッドを減らすことによって、計装されたコードのパフォーマンスが高まる。コードの制御フローは、アークとブロックの関係とともに分析されて、「ポスト支配木(post−dominator tree)」が構築される。ポスト支配点(post−dominator)は、コードの第1のセクションとコードの第2のセクションの間の関係を指す。コードの第1セクションが、コードの第2セクションを実行することができる前に実行されなければならない場合、コードの第2セクションは、コードの第1セクションの「ポスト支配点」と称される。したがって、同じ例では、コードの第1セクションは、コードの第2セクションの「支配点」と称される。
計算されたポスト支配木においては、コードのプローブ挿入点は、最適化マップを生成することによって計算することができる。最適化マップは、コード内に挿入されるプローブの数を最小限に抑えながらも、完全なコードカバレッジ情報を取得するためのプローブ挿入点を提供する。プローブが挿入されると、コードのバイナリが実行されて、プローブ出力データを取得することができる。次いで、プローブ出力データは、最適化マップ上にオーバレイされて、プローブ出力データをプローブ位置に関連付けることができる。プローブ出力データを最適化マップにオーバレイすることにより、各プローブの関連するアークおよびブロックを用いてプローブ出力データを解決して、コードカバレッジデータを作成することができる。
次に本発明について、添付の図面を参照して以下により完全に述べる。この図面は、その一部を形成し、また図示することによって、本発明を実施するための具体的で、例示的な実施形態を示している。しかし、本発明は、多数の異なる形において実施することができ、また本明細書で述べる諸実施形態に限定されるものと解釈すべきではない。こうした実施形態は、本開示が徹底的で完全なものであり、また当業者に本発明の範囲を十分に伝えるものとなるように提供されている。本発明は、いくつかある中でも特に、方法または装置として実施され得る。したがって、本発明は、完全にハードウェアの実施形態を取ることも、完全にソフトウェアの実施形態を取ることも、またソフトウェアとハードウェアとの両側面を組み合わせた実施形態の形を取ることもある。したがって、以下の詳細な説明は、限定的な意味で取るべきでない。
図1に、本発明を実施するためのシステム100内に含まれ得る例示的なコンピューティング装置を示す。コンピューティング装置100は、本発明に適用され得る一般的な操作環境を示している。非常に基本的な構成では、コンピューティング装置100は一般に、少なくとも1つの処理装置102およびシステムメモリ104を含む。処理装置102は、既存の物理プロセッサ、設計のプロセッサ、一緒に動作する複数のプロセッサ、仮想プロセッサ、およびバイナリ実行可能命令を解釈することができる他の任意の装置またはソフトウェアを含む。厳密な構成、およびコンピューティング装置の種類によって、システムメモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またその2つの何らかの組合せである場合もある。システムメモリ104は一般に、オペレーティングシステム105、1つまたは複数のプログラムモジュール106を含み、またプログラムデータ107を含み得る。図1に、この基本的な構成を、破線108内のこれらの構成要素によって示す。
コンピューティング装置100は、追加の特徴または機能を含むこともできる。たとえば、コンピューティング装置100は、たとえば磁気ディスク、光ディスク、テープなどの追加のデータ記憶装置(取外し可能および/または固定)をも含み得る。図1に、こうした追加の記憶装置を、取外し可能記憶装置109および固定の記憶装置110として示す。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を記憶するために、任意の方法または技術で実装された揮発性および不揮発性、取外し可能および固定の媒体を含み得る。システムメモリ104、取外し可能記憶装置109および固定の記憶装置110はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけに限らないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、またコンピューティング装置100からアクセスすることができる他の任意の媒体が含まれる。こうした任意のコンピュータ記憶媒体が、コンピューティング装置100の一部であり得る。コンピューティング装置100は、キーボード、マウス、ペン、スタイラス、音声入力装置、タッチ入力装置などの入力装置112をも含み得る。表示装置、スピーカ、プリンタなどの他の出力装置114も含まれ得る。こうしたすべての装置は、当技術分野で知られており、ここでは詳細に論じる必要はない。
コンピューティング装置100は、装置が、たとえばネットワークを介して他のコンピューティング装置118と通信できるようにする通信接続116を含むこともできる。通信接続116は、通信媒体の一例である。通信媒体は一般に、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、または他のデータを搬送波や他の移送機構などの変調されたデータ信号の形で実施し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、その特性の1つまたは複数が、信号に情報を符号化するようなやり方で設定されまたは変更された信号を意味する。限定するためではなく、例を挙げると、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、音響、RF、赤外線および他の無線媒体などの無線媒体を含む。本明細書では、用語コンピュータ読取り可能媒体は、記憶媒体と通信媒体の両方を含む。
(プローブ最適化)
本発明は、一般に、プログラムを計装するときプローブ挿入を最適化するためのシステムおよび方法を対象とする。プローブは、コードカバレッジに関するデータなど、コードからデータを取り出すためにプログラム内に挿入される1組の命令を指す。プログラムを計装するための従来の方法は、制御フローグラフの各アークについてプローブを挿入することを必要としていた。しかし、プローブは、長さが指定されたビット数であり、プログラムに多数のプローブを挿入すると、プログラムの計装に対するオーバヘッドが増加する。プローブが挿入された状態でプログラムバイナリが実行される場合、プローブによって、バイナリの実行サイクルにかなりの時間量が追加され得る。本発明は、プローブ挿入点を最適化し、それによって、プログラム内に挿入されるプローブの数を減らし、プログラムの計装に対するオーバヘッドを減らす。実行するのに数週間かかる一部のプログラムテストスィートによっては、本発明によってもたらされるオーバヘッドの削減によって、かなりの時間の節約がもたらされ得る。
本発明は、一般に、プログラムを計装するときプローブ挿入を最適化するためのシステムおよび方法を対象とする。プローブは、コードカバレッジに関するデータなど、コードからデータを取り出すためにプログラム内に挿入される1組の命令を指す。プログラムを計装するための従来の方法は、制御フローグラフの各アークについてプローブを挿入することを必要としていた。しかし、プローブは、長さが指定されたビット数であり、プログラムに多数のプローブを挿入すると、プログラムの計装に対するオーバヘッドが増加する。プローブが挿入された状態でプログラムバイナリが実行される場合、プローブによって、バイナリの実行サイクルにかなりの時間量が追加され得る。本発明は、プローブ挿入点を最適化し、それによって、プログラム内に挿入されるプローブの数を減らし、プログラムの計装に対するオーバヘッドを減らす。実行するのに数週間かかる一部のプログラムテストスィートによっては、本発明によってもたらされるオーバヘッドの削減によって、かなりの時間の節約がもたらされ得る。
図2に、本発明による例示的な制御フローグラフおよびアーク−ブロックマップ(arc to block map)を示す。制御フローグラフ210は、プログラム実行フローの図を提供している。機能のブロックまたはノード(1、2、3、4、5、6など)は、アーク(A、B、C、D、E、Fなど)によって示される順序で実行される。制御フローグラフ210は、プログラムのために計算された制御フローの一例であり、他の制御フローグラフは、遥かに複雑である場合がある。
制御フローグラフ210は、絵を用いてではなく、アークおよびブロックを表すデータエントリに従って表すこともできる。一例が、アーク−ブロックマップ220によって示されている。アーク−ブロックマップ220は、制御フローグラフ210内のそれぞれのアークについてのブロックまたはノードの関係を提供する。プログラムの処理の特定のパスに関するコードブロックは、アーク−ブロックマップ220を調べることによって解決することができる。
図示する例では、プログラムの実行は、プログラムの最後、ノード6に到達するために、ノード1から2つの異なるパスを取り得る。1つのパスでは、コードブロックの実行は、アークBおよびDを通って流れ、他のパスでは、アークCおよびEを通って流れる。制御フローグラフ210によって表されたプログラムのコードカバレッジデータを取得するために、プログラムの実行に使用可能な様々なパスが考慮される。ノード1から6までのパス内に含まれないプログラムの他の側面も同様に考慮される。たとえば、特定のプログラムは、「バックエッジ(back edge)」と称されるものを含み得る。バックエッジは、Hで表され、ノードが別のノードと共依存の関係を有する場合に対応する。ノード4は、バックエッジのために、ノード2との共依存関係を有する。バックエッジは、ノード2を実行するにはノード4を実行しなければならないことを示している。しかし、通常の実行フローでは、ノード4を実行するにはノード2を実行しなければならない。したがって、ノード2とノード4は、バックエッジHによって生成された共依存関係を有し得る。コードカバレッジのための一実施形態では、バックエッジは、プログラムの通常の範囲外の工程を表しているのでプローブされる。
プログラムフロー考察の別の側面は、関数呼出しまたはプログラムの他の部分に対する呼出しの存在である。呼出しは、アークGで表される。アークGに対応する呼出しは、ノード50への呼出しを行い、関数215に、実行し、および場合によっては値を返すように指示する。コードカバレッジに関する一実施形態では、プログラムの他の部分または関数への呼出しは、通常、コードカバレッジデータがその呼出しを含むようにプローブされる。
プログラムの制御フロー考察の別の側面は、外部データのエントリポイントである。たとえば外部エントリポイント75は、アークJを越えてノード1にデータを提供する。外部エントリポイントは、コードブロック(ノード1など)が実行のために使用する、ユーザからの入力などの外部ソースからのデータの入口点を表す。コードカバレッジの一実施形態では、コードカバレッジデータがこうした外部のデータエントリを含むように、外部エントリポイントがプローブされる。
アーク−ブロックマップ220は、追加のパスから制御フローグラフ210まで、バックエッジ、呼出しおよび外部エントリポイントについてのエントリを含むように修正することができる。したがって、一実施形態では、プローブのエントリの最適化は、使用されるプローブの数を最小限に抑えながらも完全なコードカバレッジデータを収集することを含む。以下の図3〜5に、プログラム測定において使用されるプローブの数を最小限に抑えるための図式化された方法および工程を示す。
図3に、本発明による、図2の制御フローグラフおよびアーク−ブロックマップに対応する例示的なポスト支配木および最適化マップを示す。ポスト支配木310は、図2に示す制御フローグラフ210内のブロックおよびその関連アークについてのポスト支配関係を示している。ポスト支配点は、第1のコードブロックと第2のコードブロックの間の関係を指す。第1コードブロックが、第2コードブロックが実行され得る前に実行されなければならない場合、第2コードブロックは、第1コードブロックの「ポスト支配点」と称される。したがって、同じ例では、第1コードブロックは、第2コードブロックの「支配点」と称される。
ポスト支配木の計算を行うことによって、ポスト支配木内の「葉」であるコードブロックを決定する。葉は、ポスト支配木の終端、すなわち子を含まないノードを指す。その葉ブロックを実行するためには他のコードブロックを実行しなければならないが、他のコードブロックは、葉ノードの実行に依存しない。この例では、ポスト支配木310は、3つの葉、X、YおよびZを含む。ノード6は、他のコードブロックがその実行に依存しないので、葉である。ノード3および4も同様に、ノード3および4の後に続くノード(ノード5および6など)を実行する前にこれらのノードが必ずしも実行されるとは限らないので、葉である。
ポスト支配木の他の葉が発見されると、最適化マップが生成される。最適化マップは、ポスト支配木の葉に対応するエントリ、および葉に到達するためにポスト支配木を介して通過されたアークを含む。この例では、最適化マップ320は、3つの葉ノード(X、Y、Z)についてのエントリ、および特定の各葉ノードに到達するために通過されたアーク(A、B、C、Fなど)とのその関係を含む。プローブ挿入点をプログラムに関連するあらゆるアークではなく、最適化マップのエントリに対応する点に限定することによって、プログラムを計装するためのプローブ挿入が最適化される。
別の実施形態では、プログラムについて計算されたプローブが、ポスト支配木310内に挿入される。プローブをポスト支配木310内に挿入することによって、葉ノードの親ノードがトレースされるときに別のプローブに遭遇する場合、マッピングが停止し得るので、よりコンパクトなマッピングが提供される。したがって、プローブによって網羅されたとして既に示されたノードおよびアークもまた、別のプローブによっては網羅されない。バックエッジ、呼出し、および外部エントリポイントについて生成されたプローブもまた、ノードのマッピングをさらに洗練するためにツリー内に含められ得る。
図2および図3で、アークおよびブロックは、それぞれ文字および数字によって言及されているが、それぞれのアークおよびブロックを区別するためのすべての数字を含む、他の識別子を使用することもできる。
図4に、本発明による、プローブをプログラム内に最適に挿入することによってプログラムを計装する工程の例示的な操作フロー図を示す。工程400は、計装のためにプログラムが選択される開始ブロック402で開始する。処理は、操作ブロック404で続行する。
操作ブロック404で、プログラムの制御フローグラフが計算される。制御フローグラフは、図2に示した制御フローグラフに類似し得る。制御フローグラフが生成されると、処理は、操作ブロック406に進む。
操作ブロック406で、制御フローグラフから、アーク−ブロックマップが構築される。一実施形態では、アーク−ブロックマップは、図2に示したアーク−ブロックマップに類似する。別の実施形態では、アーク−ブロックマップは、別個のメモリエントリである。それぞれのメモリエントリは、プログラムに対応するすべてのブロックおよびアークをリストする。ブロックのメモリエントリでは、特定のアークに対応するブロックに、その特定のアークに関するものとしてフラグが立てられる。アークのメモリエントリでは、それぞれのアークが、それに対応するブロックによってフラグが立てられる。したがって、アークまたはブロックについてのカバレッジデータに関する情報を取得することによって、関連するブロックおよびアークについてのカバレッジデータをそれぞれ解決できるように、アークとブロックが相互参照される。処理は、操作ブロック408で続行する。
操作ブロック408で、プログラムのためのポスト支配木が構築される。このポスト支配木は、図3で示したポスト支配木に類似するものでも、またポスト支配木を表すデータであってもよい。ポスト支配木が計算されると、処理は、操作ブロック410に移る。
操作ブロック410で、ポスト支配木に対応する最適化マップが構築される。最適化マップは、ポスト支配木の葉についてのエントリを含む。最適化マップは、プログラム内にプローブが挿入される対象となる他のエントリをも含む。ポスト支配木を構築するための工程について、下記の図5についての議論において説明する。最適化マップが計算されると、処理は、操作ブロック412に移る。
処理ブロック412で、最適化マップのエントリに対応するプローブがプログラム内に挿入される。プログラム内に挿入されるプローブの数は、プログラム全体についてのコードカバレッジデータを依然として提供しながらもプローブの数を減らすように最適化されている。処理は、ブロック414で続行する。
操作ブロック414で、プローブが挿入されているプログラムを表すバイナリが実行される。プログラムの実行中、プローブによって、実行時に使用されたプログラムの一部のデータが返される。処理は、操作ブロック416で続行する。
操作ブロック416で、バイナリが実行されている間、すなわちデータがプローブから返されると、戻されたデータは、最適化マップ上にオーバレイされる。最適化マップ上にデータをオーバレイすることによって、プローブをプログラムのアークに相関させる。つまり、最適化マップを使用して、コードの実行を意味するデータを返すプローブを、そのプローブに関連するアークに一致させる。最適化マップをオーバレイすることによって各プローブがその関連するアークに関連付けられると、処理は、操作ブロック418で続行する。
処理ブロック418で、最適化マップを使用して各プローブに関連付けられた各アークは、アーク−ブロックマッピングを使用して関連するブロックに再びマッピングされる。したがって、各プローブは、それらがコードの実行を報告している各ブロックにそれぞれ関連付けられる。ブロックレベルとアークレベルの両方にマッピングすることによって、そのプログラムのアークおよびブロックカバレッジデータが提供される。アークおよびブロックカバレッジデータによって、そのプログラムのコードカバレッジデータが提供される。コードカバレッジが提供されると、処理は最終ブロック420に進み、そこで処理400が終了する。
図5に、本発明による、最適化マップを構築する工程の例示的な操作フロー図を示す。工程500は入口ブロック502から入り、このブロック502で、図4で示した工程400が、操作ブロック410に入る。処理は、操作ブロック504で続行する。
操作ブロック504で、前に計算されたポスト支配木の葉について、最適化マップ内にマップエントリが生成される。ポスト支配木のそれぞれの葉は、最適化マップ内のエントリをもたらす。したがって、最適化マップの各エントリは、プログラム内に挿入されるプローブをもたらす。制御フローグラフの各アークに相関するプローブではなく、ポスト支配木の葉に相関するこうしたプローブを挿入することによって、必要なプローブの数が大幅に削減される。最適化マップ内にポスト支配木の葉に対応するエントリが生成されると、処理は、判断ブロック506で続行する。
判断ブロック506で、プログラムの制御フローを介して、コードの実行フロー内にバックエッジが存在するか否かを判定するための別の受け渡しが行われる。上述のように、バックエッジは、プログラム内の2つ以上のコードブロックの間に共依存関係もたらす。バックエッジが存在しない場合、処理は判断ブロック510に進む。しかし、プログラム内にバックエッジが存在する場合、処理は操作ブロック508に移る。
操作ブロック508で、プログラムの実行フロー内に位置する各バックエッジを表すエントリが最適化マップに追加される。バックエッジは、プログラムの通常フロー外の工程段階を表し、したがってカバレッジ情報のためにプローブされる。それぞれのバックエッジについてエントリを最適化マップに追加することにより、発見された各バックエッジについてカバレッジデータが収集されるようにする。エントリが追加された後に、処理は、判断ブロック510で続行する。
判断ブロック510で、プログラムの制御フローを介して、コードの実行フロー内に任意の呼出しが存在するか否かを判定するための別の受け渡しが行われる。呼出しは、他の関数、またはコードの他の部分を実行させることができる。呼出しが存在しない場合、処理は判断ブロック514に進む。しかし、呼出しがプログラム内に存在する場合、処理は操作ブロック512に進む。
操作ブロック512で、プログラムの実行フロー内に位置する各呼出しを表すエントリが最適化マップに追加される。呼出しは、プログラムの通常フロー外の工程段階を表し、したがってカバレッジ情報のためにプローブされる。それぞれの呼出しについて最適化マップにエントリを追加することにより、発見された各呼出しについて、カバレッジデータが収集されるようにする。エントリが追加された後に、処理は判断ブロック514で続行する。
判断ブロック514で、プログラムの制御フローを介して、コードの実行フロー内に任意の外部エントリポイントが存在するか否かを判定するための別の受け渡しが行われる。一実施形態において外部エントリポイントは、コードの通常の実行パスの外部にあり、ポスト支配木内の葉で表されない。外部エントリポイントが存在しない場合、処理は、戻りブロック518に進み、そこで処理500は、図4に示す操作ブロック412に戻る。しかし、プログラムに関して外部エントリポイントが存在する場合、処理は操作ブロック516に進む。
操作ブロック516で、プログラムの実行フロー内に位置する各外部エントリポイントを表すエントリが最適化マップに追加される。上述のように、外部エントリポイントは、プログラムの通常フロー外の工程段階を表し、したがってカバレッジ情報のためにプローブされる。それぞれの外部エントリポイントについて最適化マップにエントリを追加することによって、発見された各外部エントリポイントについて、カバレッジデータが収集されるようにする。エントリが追加された後に、処理は終了ブロック518に進み、そこで処理500は図4に示す操作ブロック412に戻る。
上記の明細、例およびデータは、本発明の構成の製品および使用についての完全な説明を提供している。本発明の趣旨および範囲から逸脱せずに、本発明の多くの実施形態が作られ得るので、本発明は、添付の特許請求の範囲に帰属する。
108 基本的な構成
1〜6、50 ノード
A〜J アーク
X〜Z 葉ノード
1〜6、50 ノード
A〜J アーク
X〜Z 葉ノード
Claims (23)
- プログラムの機能に関連するポスト支配木を調査するステップと、
前記ポスト支配木に従って前記プログラムへのプローブ挿入を決定するステップと、
前記プローブを前記プログラム内に挿入するステップと
を備えたことを特徴とするプログラムを計装するためのコンピュータによって実施される方法。 - 前記プログラムに関連する制御フローグラフから前記ポスト支配木を生成するステップをさらに備えたことを特徴とする請求項1に記載のコンピュータによって実施される方法。
- 前記プローブからデータが受信されるとき、前記データがアーク−ブロックマップ上にオーバレイされて、前記プログラムについてのアークおよびブロックのカバレッジデータを発見するように、前記制御フローグラフから前記アーク−ブロックマップを構築するステップをさらに備えたことを特徴とする請求項2に記載のコンピュータによって実施される方法。
- 前記ポスト支配木に従って前記プローブに対応するエントリを含む最適化マップを構築するステップをさらに備えたことを特徴とする請求項1に記載のコンピュータによって実施される方法。
- 前記プログラム内のバックエッジの位置に対応する第2のプローブ挿入が行われるように、前記バックエッジについて前記プログラムを調査し、前記バックエッジに対応するエントリを前記最適化マップに追加するステップをさらに備えたことを特徴とする請求項4に記載のコンピュータによって実施される方法。
- 前記プログラム内の呼出しの位置に対応する第2のプローブ挿入が行われるように、前記呼出しについて前記プログラムを調査し、前記呼出しに対応するエントリを前記最適化マップに追加するステップをさらに備えたことを特徴とする請求項4に記載のコンピュータによって実施される方法。
- 前記プログラム内の外部エントリポイントの位置に対応する第2のプローブ挿入が行われるように、前記外部エントリポイントについて前記プログラムを調査し、前記外部エントリポイントに対応するエントリを前記最適化マップに追加するステップをさらに備えたことを特徴とする請求項4に記載のコンピュータによって実施される方法。
- 前記プローブから受信されたデータを前記最適化マップ上にオーバレイして、前記プローブについて前記プログラムのコードカバレッジデータを提供するアーク関係を決定するステップをさらに備えたことを特徴とする請求項4に記載のコンピュータによって実施される方法。
- 前記プローブは、前記ポスト支配木内に存在する葉ノードに対応することを特徴とする請求項1に記載のコンピュータによって実施される方法。
- プログラムを計装するためのコンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、
プログラムの機能に関連するポスト支配木を調査するステップと、
前記ポスト支配木に対応する、前記ポスト支配木内の葉ノードに対応するエントリを含む最適化マップを構築するステップと、
前記最適化マップの各エントリに対応するプローブを前記プログラム内に挿入するステップと
を備えたことを特徴とするコンピュータ読取り可能媒体。 - 前記プログラムに関連する制御フローグラフから前記ポスト支配木を生成するステップをさらに備えたことを特徴とする請求項10に記載のコンピュータ読取り可能媒体。
- データが前記プローブから受信されるとき、前記データがアーク−ブロックマップにオーバレイされて、前記プログラムのアークおよびブロックのカバレッジデータを発見するように、前記制御フローグラフから前記アーク−ブロックマップを構築するステップをさらに備えたことを特徴とする請求項11に記載のコンピュータ読取り可能媒体。
- 前記プログラム内に挿入された前記プローブのうちのいくつかが、前記プログラム内のバックエッジの位置に対応して挿入されるように、前記バックエッジについて前記プログラムを調査し、前記バックエッジに対応するエントリを前記最適化マップに挿入するステップをさらに備えたことを特徴とする請求項10に記載のコンピュータ読取り可能媒体。
- 前記プログラム内に挿入された前記プローブのうちのいくつかが前記プログラム内の呼出しの位置に対応して挿入されるように、前記呼出しについて前記プログラムを調査し、前記呼出しに対応するエントリを前記最適化マップに挿入するステップをさらに備えたことを特徴とする請求項10に記載のコンピュータ読取り可能媒体。
- 前記プログラム内に挿入された前記プローブのうちのいくつかが前記プログラム内の外部エントリポイントの位置に対応して挿入されるように、前記外部エントリポイントについて前記プログラムを調査し、前記外部エントリポイントに対応するエントリを前記最適化マップに挿入するステップをさらに備えたことを特徴とする請求項10に記載のコンピュータ読取り可能媒体。
- 前記プローブから受信されたデータを前記最適化マップにオーバレイして、前記プログラムのコードカバレッジデータを提供する、前記プローブのアーク関係を決定するステップをさらに備えたことを特徴とする請求項10に記載のコンピュータ読取り可能媒体。
- 前記プログラムに対応する制御フローグラフを計算し、
前記制御フローグラフに対応するポスト支配木を構築し、
前記ポスト支配木内の葉ノードに対応するエントリを含む、前記ポスト支配木に対応する最適化マップを構築し、
前記最適化マップの各エントリに対応するプローブを前記プログラム内に挿入し、および
前記プログラムの実行後に前記プローブから受信されたデータを前記最適化マップ上にオーバレイして、前記プログラムのコードカバレッジデータを提供する
ように構成されたアプリケーションを有するコンピューティング装置を備えたことを特徴とするプログラムを計装するためのシステム。 - 前記アプリケーションは、前記プログラム内に挿入された前記プローブのうちのいくつかが前記プログラム内のバックエッジの位置に対応して挿入されるように、前記バックエッジについて前記プログラムを調査し、前記バックエッジに対応するエントリを前記最適化マップに追加するようにさらに構成されたことを特徴とする請求項17に記載のシステム。
- 前記アプリケーションは、前記プログラム内に挿入された前記プローブのうちのいくつかが前記プログラム内の呼出しの位置に対応して挿入されるように、前記呼出しについて前記プログラムを調査し、前記呼出しに対応するエントリを前記最適化マップに追加するようにさらに構成されたことを特徴とする請求項17に記載のシステム。
- 前記アプリケーションは、前記プログラム内に挿入された前記プローブのうちのいくつかが前記プログラム内の外部エントリポイントの位置に対応して挿入されるように、前記外部エントリポイントについて前記プログラムを調査し、前記外部エントリポイントに対応するエントリを前記最適化マップに追加するようにさらに構成されたことを特徴とする請求項17に記載のシステム。
- 前記アプリケーションは、アークマップおよびブロックマップが前記制御フローグラフについてのアークとブロックの関係を相互参照するように、前記制御フローグラフにそれぞれが対応する前記アークマップおよびブロックマップを構築するようにさらに構成されたことを特徴とする請求項17に記載のシステム。
- 前記アプリケーションは、最適化マップ上にオーバレイされた前記データを前記アークマップおよびブロックマップにオーバレイして、前記プログラムの前記コードカバレッジデータを洗練するようにさらに構成されたことを特徴とする請求項21に記載のシステム。
- コードのアークおよびブロックへのプローブマッピングの重複が回避されるように、前記プローブを前記ポスト支配木内に含むことを特徴とする請求項21に記載のシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/819,463 US7590521B2 (en) | 2004-04-07 | 2004-04-07 | Method and system for probe optimization while instrumenting a program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005302028A true JP2005302028A (ja) | 2005-10-27 |
Family
ID=34939121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005111083A Pending JP2005302028A (ja) | 2004-04-07 | 2005-04-07 | プログラムを計装するプローブ最適化のための方法およびシステム |
Country Status (5)
Country | Link |
---|---|
US (1) | US7590521B2 (ja) |
EP (1) | EP1589429A3 (ja) |
JP (1) | JP2005302028A (ja) |
KR (1) | KR20060045568A (ja) |
CN (1) | CN1694075A (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7818721B2 (en) * | 2006-02-01 | 2010-10-19 | Oracle America, Inc. | Dynamic application tracing in virtual machine environments |
US8656006B2 (en) | 2006-05-11 | 2014-02-18 | Ca, Inc. | Integrating traffic monitoring data and application runtime data |
US7805510B2 (en) * | 2006-05-11 | 2010-09-28 | Computer Associates Think, Inc. | Hierarchy for characterizing interactions with an application |
US9009680B2 (en) | 2006-11-30 | 2015-04-14 | Ca, Inc. | Selecting instrumentation points for an application |
JP2008140162A (ja) * | 2006-12-01 | 2008-06-19 | Hitachi Ltd | デバッグ情報収集方法 |
US7917911B2 (en) | 2006-12-01 | 2011-03-29 | Computer Associates Think, Inc. | Automated grouping of messages provided to an application using execution path similarity analysis |
US7689610B2 (en) | 2006-12-01 | 2010-03-30 | Computer Associates Think, Inc. | Automated grouping of messages provided to an application using string similarity analysis |
US8176476B2 (en) * | 2007-06-15 | 2012-05-08 | Microsoft Corporation | Analyzing software usage with instrumentation data |
US20090119636A1 (en) * | 2007-11-02 | 2009-05-07 | Paul Kettley | Instrumenting a compiled software routine for augmentation |
US8291399B2 (en) * | 2008-03-26 | 2012-10-16 | Avaya Inc. | Off-line program analysis and run-time instrumentation |
US8484623B2 (en) * | 2008-03-26 | 2013-07-09 | Avaya, Inc. | Efficient program instrumentation |
US8752007B2 (en) * | 2008-03-26 | 2014-06-10 | Avaya Inc. | Automatic generation of run-time instrumenter |
US8739145B2 (en) * | 2008-03-26 | 2014-05-27 | Avaya Inc. | Super nested block method to minimize coverage testing overhead |
US8473935B2 (en) * | 2008-04-21 | 2013-06-25 | Microsoft Corporation | Just-ahead-of-time compilation |
WO2011039565A1 (en) * | 2009-09-30 | 2011-04-07 | Freescale Semiconductor, Inc. | Software probe minimization |
US8448147B2 (en) * | 2010-02-15 | 2013-05-21 | International Business Machines Corporation | Heterogenic Coverage Analysis |
KR101636521B1 (ko) * | 2010-03-26 | 2016-07-06 | 삼성전자주식회사 | 코드 오버레이 생성 장치 및 방법 |
US8978018B2 (en) * | 2010-12-02 | 2015-03-10 | International Business Machines Corporation | Reversibly instrumenting a computer software application |
US10203974B2 (en) * | 2010-12-20 | 2019-02-12 | Microsoft Technology Licensing, Llc | Probe insertion via background virtual machine |
WO2013011356A1 (en) * | 2011-07-20 | 2013-01-24 | Freescale Semiconductor, Inc. | Method and apparatus for enabling an executed control flow path through computer program code to be determined |
US20130046912A1 (en) * | 2011-08-18 | 2013-02-21 | Maxeler Technologies, Ltd. | Methods of monitoring operation of programmable logic |
US8726255B2 (en) | 2012-05-01 | 2014-05-13 | Concurix Corporation | Recompiling with generic to specific replacement |
US20130297181A1 (en) * | 2012-05-04 | 2013-11-07 | Gm Global Technoloby Operations Llc | Adaptive engine control in response to a biodiesel fuel blend |
US8793669B2 (en) | 2012-07-17 | 2014-07-29 | Concurix Corporation | Pattern extraction from executable code in message passing environments |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US9158935B2 (en) * | 2013-06-07 | 2015-10-13 | Microsoft Technology Licensing, Llc | Automatic mediation of resource access in mobile applications |
US9292269B2 (en) * | 2014-01-31 | 2016-03-22 | Nvidia Corporation | Control flow optimization for efficient program code execution on a processor |
CN105279196B (zh) * | 2014-07-23 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 测试脚本的生成方法和装置 |
KR101667262B1 (ko) * | 2014-08-18 | 2016-10-19 | 슈어소프트테크주식회사 | 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체 |
US9658942B2 (en) * | 2015-04-02 | 2017-05-23 | International Business Machines Corporation | Dynamic tracing framework for debugging in virtualized environments |
EP3497574A4 (en) | 2016-08-09 | 2020-05-13 | Sealights Technologies Ltd. | SYSTEM AND METHOD FOR THE CONTINUOUS EXAMINATION AND PROVISION OF SOFTWARE |
US10025570B2 (en) * | 2016-09-28 | 2018-07-17 | Intel Corporation | Modifying applications for incremental checkpoints |
US10402309B2 (en) * | 2017-05-02 | 2019-09-03 | Microchip Technology Incorporated | Code coverage tracking for a microcontroller program |
US11086759B2 (en) * | 2018-09-27 | 2021-08-10 | SeaLights Technologies LTD | System and method for probe injection for code coverage |
US11573885B1 (en) | 2019-09-26 | 2023-02-07 | SeaLights Technologies LTD | System and method for test selection according to test impact analytics |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57153343A (en) * | 1981-03-18 | 1982-09-21 | Hitachi Ltd | Compile method for architecture program |
JPH01216440A (ja) * | 1988-02-24 | 1989-08-30 | Yokogawa Electric Corp | プログラムの実行解析システム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613118A (en) * | 1994-06-20 | 1997-03-18 | International Business Machines Corporation | Profile-based preprocessor for optimizing programs |
US5790858A (en) * | 1994-06-30 | 1998-08-04 | Microsoft Corporation | Method and system for selecting instrumentation points in a computer program |
US5689712A (en) * | 1994-07-27 | 1997-11-18 | International Business Machines Corporation | Profile-based optimizing postprocessors for data references |
US6314558B1 (en) * | 1996-08-27 | 2001-11-06 | Compuware Corporation | Byte code instrumentation |
US5940618A (en) * | 1997-09-22 | 1999-08-17 | International Business Machines Corporation | Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments |
US7140008B2 (en) * | 2002-11-25 | 2006-11-21 | Microsoft Corporation | Dynamic temporal optimization framework |
US7051034B1 (en) * | 2002-12-18 | 2006-05-23 | Oracle International Corporation | Dynamic optimization for processing a restartable sub-tree of a query execution plan |
-
2004
- 2004-04-07 US US10/819,463 patent/US7590521B2/en not_active Expired - Fee Related
-
2005
- 2005-04-04 EP EP05102628A patent/EP1589429A3/en not_active Withdrawn
- 2005-04-06 CN CNA2005100650833A patent/CN1694075A/zh active Pending
- 2005-04-07 KR KR1020050028965A patent/KR20060045568A/ko not_active Application Discontinuation
- 2005-04-07 JP JP2005111083A patent/JP2005302028A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57153343A (en) * | 1981-03-18 | 1982-09-21 | Hitachi Ltd | Compile method for architecture program |
JPH01216440A (ja) * | 1988-02-24 | 1989-08-30 | Yokogawa Electric Corp | プログラムの実行解析システム |
Also Published As
Publication number | Publication date |
---|---|
EP1589429A3 (en) | 2008-06-04 |
US7590521B2 (en) | 2009-09-15 |
EP1589429A2 (en) | 2005-10-26 |
US20050229165A1 (en) | 2005-10-13 |
KR20060045568A (ko) | 2006-05-17 |
CN1694075A (zh) | 2005-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005302028A (ja) | プログラムを計装するプローブ最適化のための方法およびシステム | |
US8079020B2 (en) | Preferential path profiling | |
JP4148527B2 (ja) | 機能テスト・スクリプト生成装置 | |
US6820256B2 (en) | System and method for whole-system program analysis | |
KR101981028B1 (ko) | 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램 | |
CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
US20060218543A1 (en) | Method and apparatus for analyzing call history data derived from execution of a computer program | |
US20090241096A1 (en) | Dynamic Software Tracing | |
US20110145799A1 (en) | Path-sensitive dataflow analysis including path refinement | |
US20060123384A1 (en) | System and method for automatically identifying compound refactorings of program code through quantitative metric analysis | |
JP6904043B2 (ja) | 未知のプログラムバイナリのための入力発見 | |
US20050160405A1 (en) | System and method for generating code coverage information | |
JP6303749B2 (ja) | ソフトウェアプログラムを解析する方法及びシステム並びに非一時的なコンピュータ可読媒体 | |
US8898649B2 (en) | Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program | |
US20090249305A1 (en) | Super Nested Block Method to Minimize Coverage Testing Overhead | |
KR20200080541A (ko) | 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법 | |
Wang et al. | Accurate source-level simulation of embedded software with respect to compiler optimizations | |
CN114546879A (zh) | 一种面向随机测试生成工具的冗余检测与去除方法 | |
Yount et al. | Graph-matching-based simulation-region selection for multiple binaries | |
KR20120038197A (ko) | 멀티 트레드 프로그램에서 변수의 단독 메모리 접근여부를 분석하는 방법 | |
US8756580B2 (en) | Instance-based field affinity optimization | |
KR102603330B1 (ko) | 테스트 커버리지 표시 장치 및 표시 방법 | |
JP4630489B2 (ja) | ログ比較デバッグ支援装置および方法およびプログラム | |
JP7380851B2 (ja) | テストスクリプト生成装置、テストスクリプト生成方法及びプログラム | |
GB2397905A (en) | Method for automatically generating and ordering test scripts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110422 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110927 |