JP4249309B2 - コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ - Google Patents
コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ Download PDFInfo
- Publication number
- JP4249309B2 JP4249309B2 JP02286099A JP2286099A JP4249309B2 JP 4249309 B2 JP4249309 B2 JP 4249309B2 JP 02286099 A JP02286099 A JP 02286099A JP 2286099 A JP2286099 A JP 2286099A JP 4249309 B2 JP4249309 B2 JP 4249309B2
- Authority
- JP
- Japan
- Prior art keywords
- tagging
- source code
- value
- variable
- base
- 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
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/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- 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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明はテストとデバッグのためにコンピュータプログラムを計測することに関し、さらに具体的にはタグ付けステートメントを使用してコンピュータプログラムを計測することに関する。
【0002】
【従来の技術】
ソフトウェア開発プロセスは、多数のソースコード・モジュールが集まって完全なコンピュータプログラムを構成しているソースコード・モジュールを独立に作成することからなっているのが代表的である。そのあと、これらのソースコード・モジュールはコンパイルされ、1つにリンクされて実行可能なコンピュータプログラムが作られている。複数のソフトウェア開発者はこれらのソースコード・モジュールの1つまたは2つ以上を書いていることがあるので、ソースコード・モジュールまたはそのコンパイル済みバージョンは単一のコンピュータに転送されてからリンクされているのが代表的である。実行可能コンピュータプログラムが生成されると、ソフトウェア開発者は標準のテストとデバッグ手法を使用してコンピュータプログラムをテストし、デバッグすることができる。
【0003】
ソースコード・モジュールは非常に多数であるため、その結果のコンピュータプログラムは非常に複雑化することがよくある。コンピュータプログラムをテストしてからデバッグすることは、どのソフトウェア開発プロセスにおいても重要なステップであり、これらのステップは複雑なコンピュータプログラムではますます重要になっている。事実、このようにデバッグを行うこと(つまり、エラーを見つけて訂正すること)はコンピュータプログラムの最終ユーザが受領する前の契約上の要件となっている場合さえある。コンピュータプログラムをテストし、デバッグする難しさは、プログラムが複雑化すると共に増加するのが一般的であり、このことは驚く程のことではない。また、複雑なコンピュータプログラムをテストするときの困難性はソフトウェア開発者が多くなると増加することがよくある。
【0004】
コンピュータプログラムをテストするとき、ソフトウェア開発者は各ソースコード・モジュールが相互に独立して、その意図する機能を正しく実行するかを確かめる共に、すべてのソースコード・モジュールを含んでいるコンピュータプログラムもその意図する機能を正しく実行するかを確かめる必要があるのが一般的である。コンピュータプログラムを正しくデバッグするためには、ソフトウェア開発者はコンピュータプログラムの実行をトレース(追跡)する必要があるのが代表的である。実行をトレースすると、コンピュータプログラムのどのステップが実行されたか、さらに、これらのステップが実行された順序を正確に知ることができる。
【0005】
ソースコード計測は実行可能なタグ付け割り当てステートメント、つまり、「タグ」を各所のタグ付けポイントでコンピュータプログラムのソースコード・モジュールの中に挿入してから、そのソースコード・モジュールをコンパイルすることからなっているのが代表的である。タグ付けポイントとは、機能への入口点や出口点、選択ステートメントの代替ブランチ、およびループ・ステートメントの実行といったように、ソフトウェア開発者がその実行中にコンピュータプログラムのステート(状態)を知りたいと思っている、ソースコード・モジュール内の関心のある場所のことである。各タグ付けポイントで、タグ付け割り当てステートメントはタグ付け変数にユニークな値を割り当てているのが代表的である。計測データベース (instrumentation database - "IDB") は各タグ付けポイントでタグ付け変数に割り当てられたタグ付け値のような、タグ付けポイントに関するデータ、およびタグ付けポイントでのソースコード・モジュールに関する情報を収めている。
【0006】
そのあと、ソフトウェア開発者は、計測されたコンピュータプログラムを実行し、タグ付け変数の現在値をモニタしながらコンピュータプログラムの実行をトレースすることができる。コンピュータプログラムの実行中に得られたタグ付け値をセーブしておくと、コンピュータプログラムの実行をトレースすることができる。コンピュータプログラムが実行されたあと、これらのタグ付け値を参照すると、コンピュータプログラム内のタグ付けポイントを知ることができる。従って、タグはコンピュータプログラムの特定のフラグメント(断片)の実行を知る手段となっている。
【0007】
計測は「アドレス別 (byaddress)」または「値別 (by value)」方式を使用して実行できるのが代表的である。アドレス別計測方式では、ユニークなアドレスをもつユニークなメモリ・ロケーションは各タグ付けポイント用に予約されており、タグ付けステートメントはタグ付け値をそのユニークなロケーションにストアしている。例えば、単一のタグ付け値が使用でき、そのタグ付け値がユニークなロケーションに書かれていれば、ソフトウェア開発者はコンピュータプログラム内の対応するタグ付けポイントが実行されたと推量することができる。値別計測方式では、異なるタグ付け値が単一のメモリ・ロケーションに書かれ、そのロケーション自体ではなく、そのロケーションに書かれたタグ付け値がコンピュータプログラム内の特定のタグ付けポイントに対応している。専用プローブはこれらのタグ付け値をインターセプトし、それらをファイルに書くのが一般であるので、ソフトウエア開発者はそれを調べて、コンピュータプログラムをデバッグするときのツールとして使用することができる。
【0008】
表1はタグで計測される前のソースコード・モジュールの例を示したものである。ソースコード・モジュール1は、表1に示すように、変数”A”への2つの変数割り当てステートメント(In.4 と In.8)、"While" ループ(In.5)、関数コール(In.7)、および "if-then-else" ステートメント(Ins.10-16) の擬似コードを含んでいる。ソースコード・モジュール1はタグを含んでいないので、その実行可能コードはタグ付け値を発行しない(つまり、タグ付け割り当てステートメントを実行しない)。従って、ソフトウェア開発者はソースコード・モジュール1の発行タグ付け値の参照テーブルにアクセスできないので、例えば、"function !" (In.7) がこのソースコード・モジュールによって実行されたかどうかを確かめることができない。
【0009】
【表1】
【0010】
表2は値別計測方式においてタグで計測した後のソースコード・モジュール1の例を示したものである。インスツルメンタ (instrumenter) はタグ付け変数 "AMC Control Port" (In.2) の宣言をソースコード・モジュール1に挿入している。(アドレス別計測方式では、インスツルメンタは複数のタグ付け変数の宣言を挿入するのが代表的である。)また、インスツルメンタは表1に示す擬似コードを含んでいるソースコード・モジュール1内の各所のタグ付けポイント (Ins. 7, 11, 15, 19, 21, 25) でタグ付け割り当てステートメントを挿入している。計測されたソースコード・モジュール1を含んでいる実行可能コンピュータプログラムは実行中にタグを発行する。従って、ソフトウェア開発者は発行タグ付け値のテーブルにアクセスして、ソースコード・モジュール1のどのステップが実行されたかを確かめることができる。例えば、ソフトウェア開発者は値として "0"(In. 7) をもつタグ付け変数が発行タグ付け値のテーブルにストアされていることを確かめることによって、ソースコード・モジュール1内の "function 1" (In. 8) が実行されたかどうかを確かめることができる。"0" がストアされていれば、ソフトウェア開発者は "function 1" が実行されたと推量することができ、"0" がストアされていなければ、ソフトウェア開発者は "function 1" が実行されなかったと推量することができる。
【0011】
【表2】
【0012】
図1は、値別ソースコード計測方式で使用される代表的なモニタリングシステムを示す図である。コンピュータプログラムがタグ付け割り当てステートメントで計測されると、専用テスト機器はコンピュータプログラムの実行をモニタする。コンピュータプログラムがCPU 100内で実行されているとき、専用ハードウェア103はメモリ102内の特定のロケーションへのライト(write) を検出する。値別計測方式では、この専用ハードウェアはタグ付け変数のアドレスを知っている。コンピュータプログラムが実行されているとき、データはアドレス・データバス101を通してCPUとメモリの間で受け渡しされる。プローブ105はアドレスバスをモニタし、タグ付け変数のアドレス・ロケーションへのデータ・ライトを探し出す。プローブはタグ付け変数へのライトを見つけると、プローブはデータバス・コネクション104からタグ付け値をコピーする。そのあと、プローブはタイムスタンプをタグ付け値に付けてから、タグ付け値をコネクション106経由でデータリダクション・プロセッサ (data reduction processor) 107に渡す。データリダクション・プロセッサはどのタグ付けポイントが追加処理が必要であるかを判断する。例えば、データリダクション・プロセッサは関数入口と出口タグ付け変数をペアにし、タイムスタンプの差を計算してそれぞれの関数の実行中に消費された時間量を判断できるようにする。そのあと、データリダクション・プロセッサはレポートを作成するが、このレポートには、タグ付け値とそれぞれのタイムスタンプのリスト、「パフォーマンス」統計と共にタグ付け値で示された実行済み関数のリストおよびその実行を示す実行済みタグ付け値の圧縮リスト(例えば、「カバレッジマップ」)を含めることが可能である。また、このレポートには、他の情報を含めることもできる。データリダクション・プロセッサはこのレポートをワークステーションに転送し、そこからレポートはグラフィカルユーザインタフェース (graphical user interface - "GUI") 108に渡される。GUI 108はデータリダクション・プロセッサからのレポートに入っている、タグ付け値に対応するタグ付けポイントを、IDB 109にストアされているデータを使用して判別する。そのあと、GUI 108は実行のフローを示すタグ付けポイントの判別のほかに、追加情報を含めることができる複数のレポートのどれかを作成する。レポートされる各タグ付けポイントに頻繁に付加される追加情報としては、タグ付け割り当てステートメントがそこから実行されたソースコード・モジュールの名前、タグ付け割り当てステートメントを含んでいる関数の開始と終了の行番号、およびタグ付けポイントの性質を示す他の情報がある。ソフトウェア開発者はGUIからの実行トレースレポートをモニタして、コンピュータプログラムが期待パラメータの範囲内で実行されているかどうかを判断する。
【0013】
あるコンピュータプログラムがその実行中にタグ付け値を出すためには、そのコンピュータプログラムは、まず、タグ付け割り当てステートメントを備えていなければならない。インスツルメンタはタグ付け割り当てステートメントを、ソースコード・モジュールのコンパイルに先立って行われる計測パス期間にコンピュータプログラムのソースコード・モジュールに挿入するのが普通である。値別タグ付け方式を使用するときは、タグ付け割り当てステートメントは "AMC control port = 0x12345678"のように単純形式になっているのが通常で、そこでは、モニタされたタグ付け変数 "AMC control port" はユニークなタグ付け値 "0x12345678" が割り当てられている。図2はタグ付け値形式の例を示している。この例では、値は32ビットの整数になっている。計測パス期間に、インスツルメンタは挿入されたタグの各々のロケーションに関する関係情報を記録し、この情報は実行期間中のコンピュータプログラムの挙動を解釈するためにあとで使用することができる。上述したように、プローブはタグ付け変数が書かれるアドレスをモニタする。例えば、特定のタグが"read data" と名づけた関数への入口を表しているとすると、実行時にコンピュータプログラムがこのタグで割り当てられた特定のタグ付け値を発行していれば、ソフトウェア開発者はコンピュータプログラムが関数"read data" への入口にあるステートメントで実行されたものと推量することができる。
【0014】
従来の計測方式では、コンピュータプログラムを表すソースコード・モジュールは最初にコンパイラのプリプロセッサによって前処理されている。このプリプロセッサはマクロを展開し、コメントを除去し、インクルードファイルを展開している。そのあと、インスツルメンタはこれらの前処理されたソースコート・モジュールを受け取り、タグ付け割当ステートメントを追加している。コンパイラは計測されたソースコード・モジュールからオブジェクトコードを生成し、そのあとリンカはオブジェクトコードを結合して実行可能コードを作っている。
【0015】
コンピュータプログラムのすべてのソースコード・モジュールが同時に計測されるときは、インスツルメンタは各タグ付けポイントにユニークなタグ付け値を割り当てることができる。しかし、種々のソースコード・モジュールが(例えば、異なるソフトウェア開発者によって)異なる時間に計測され、コンパイルされる場合は、問題が発生することになる。具体的には、インスツルメンタは2つの異なるタグ付けポイントで同じタグ付け値を割り当てることがある。その結果、コンパイラがこのタグ付け値を出したとき、これはタグ付けポイントをユニークに識別していないので、ソフトウェア開発者は実行フローをトレースすることが困難になる場合がある。
【0016】
表3は表2に示す、計測されたソースコード・モジュール1を示し、表4は計測されたソースコード・モジュール2を示している。これらのソースコード・モジュールはどちらも、異なる時間期間で計測を行うと起こるように、他方に割り当てられたタグ付け値を無視して計測されている。従って、これらのソースコード・モジュールの両方を含んでいるコンピュータプログラムが、例えば、実行中に値が"0" であるタグを出したとすると、ソフトウェア開発者はプログラムがソースコード・モジュール1の function 1 (In. 8) へのコールを実行したのか、あるいはプログラムがソースコード・モジュール2の "if" ステートメント(In. 6) を実行したのか分からないことになる。実際には、ソースコード・モジュール1は10個のタグ付け値をソースコード・モジュール2と共有している。従って、コンピュータプログラムの実行中に出されたどのタグも、それがソースコード・モジュール1で出されたものかを確認することができず、10番目のタグに続く、ソースコード・モジュール2内のタグだけがユニークな値を出すことになる。
【0017】
【表3】
【0018】
【表4】
【0019】
【発明が解決しようとする課題】
いくつかのインスツルメンタは、これから生成されるコンピュータプログラムのバージョンでも使用される、コンピュータプログラムの以前バージョンからソースコード・モジュールに対して生成されたIDBを参照するためのメソッドを用意している。ソースコード・モジュールがコンピュータプログラムの以前バージョン以後に変更されていなければ、計測プロセスは変更されなかったソースコード・モジュールを再計測しないことで効率化されている。しかし、コンピュータプログラムの新バージョンの計測プロシージャで割り当てられたタグ付け値がそのコンピュータプログラムの新バージョンでも使用される、コンピュータプログラムの以前バージョンで割り当てられたタグ付け値と矛盾していないことを確かめる注意が必要である。
【0020】
いくつかの従来システムは、上記に提示したこの効率化された増分計測プロシージャをサポートしている。このアプローチでは、変更されたソースコード・モジュールが1つだけであれば、そのソースコード・モジュールだけを再計測し、コンパイルするだけでコンピュータプログラム全体をリンクし直している。しかし、これらの従来システムには、ソフトウェア開発者が開発サイクルのその時点までに割り当てられたすべてのタグ付け値を含んでいるIDBのセットを、インスツルメンタに指示しなければならないという制約がある。構成マネージャがソフトウェア開発者と協力してソースコード・モジュールの制御を調整しているような集中化コンパイル環境では、この制約はそれほど制限的ではない。このような集中化環境のソフトウェア開発者は制御化されたプロシージャでソースコード・モジュール、オブジェクトコード・ファイル、およびIDBの特定バージョンを見つけることができるので、コンピュータプログラムの以前バージョンからのIDBを識別することは比較的簡単であることが想像される。しかし、このメカニズムは最近の多くのソフトウェア開発プロジェクトの典型である、大規模な非集中化環境では挫折している。ソフトウェア開発者グループが分散化すると、各グループは多数のプロジェクトで、あるいは同一プロジェクトに属する種々ソフトウェア開発者グループのために使用されるオブジェクトコードのダイナミックリンクライブラリまたはコンパイルライブラリの構築を担当することになる。コンピュータ・プログラムの新バージョンの作成に対する制御が集中化されていないと、これらのライブラリの各々は独立に計測されることになるので、インスツルメンタによって割り当てられたタグ付け値に矛盾が起こることになる。実行時には、これらの矛盾するタグ付け値は、同一タグ付け値が複数のソースコード・モジュールを指すことがあるため分析プロセスを混乱させ、また、コンピュータプログラムのモニタリングツールはどのタグ付け値がどのソースコード・モジュールを表しているのかが分からなくなる。
【0021】
さらに、集中化コンパイルモデルはコンピュータプログラムのバージョンのパラレル作成をサポートしていない。最近のソフトウェアプロジェクトは非常に大規模であることが頻繁であるために、コンピュータプログラムのコンパイルとリンクを1台のマシンで行うことは実用目的に合っていない。ネットワーク環境では、コンパイルプロセスは多くのマシンに分散されているので、これらのマシンがソースコード・モジュールをパラレルにコンパイルすることが可能で、コンパイルは全時間の数分の1で完了し、代表例として全時間の1/n(ただし、nはコンパイルに関与するマシンの台数)で完了している。従って、コンピュータプログラムのあるバージョンが1000個のソースコード・モジュールからなり、ソースコード・モジュールの100個が10台のマシンでコンパイルされるとすれば、開発者はコンパイルが行われる10台のマシンの各々でも計測を行う必要がある。タグ付け値の解決がこれらのマシン間で正しく調整されていないと、その結果のコンピュータプログラムは種々のソースコード・モジュールに挿入されたタグ付け値に無数の矛盾を含むことになる。
【0022】
【課題を解決するための手段】
本発明の実施例は、複数のソースコード・モジュールからなるコンピュータプログラムを、タグ付け割り当てステートメントを使用して計測する方法およびシステムを提供している。各タグ付け割り当てステートメントにおけるタグ付け変数のユニークな値は、オフセット値とベース値を組み合わせたものに等しい値をタグ付け変数に割り当てることによって得られる。本発明のオフセット・タグ付けインスツルメンタはタグ付け割り当てステートメントで計測しようとする各ソースコード・モジュールごとにユニークなベース変数を生成する。そのあと、オフセット・タグ付けインスツルメンタはソースコード・モジュールを調べ、計測ポイントの個所にタグ付け割り当てステートメントを挿入する。挿入されたタグ付け割り当てステートメントはオフセット値と、そのソースコード・モジュールの生成されたベース変数とを組み合わせたものに等しい値にタグ付け変数をセットする。オフセット・タグ付けインスツルメンタは、ソースコード・モジュール内の各タグ付け割り当てステートメントごとにユニークなオフセット値を生成する。コンパイラは計測されたソースコード・モジュールからオブジェクトコードを生成する。ベース値リゾルバは、生成されたオフセット値と生成されたベース変数の値の各組み合わせが各計測ポイントをユニークに識別するように、各生成されたベース変数ごとにユニークな値を割り当てるソースコード・ステートメントを生成する。コンパイラは生成されたソースコード・ステートメントをコンパイルする。リンカはコンパイルされた計測済みソースコード・モジュールをコンパイルされた生成済みソースコード・ステートメントとリンクし、リンクされたプログラムを作り、このリンクされたプログラムの実行期間に、タグ付け変数が各計測ポイントでユニークな値にセットされるようにする。各生成済みベース変数のベース値の判断はリンク時まで延期されるので、ベース値リゾルバは各モジュール内の各タグ付け割り当てステートメントがタグ付け変数を、リンクされたすべてのモジュール間でユニークである値にセットしているかを確かめることができる。
【0023】
【発明の実施形態】
本発明の実施例によれば、複数のコンピュータでタグ付けによるパラレル計測をサポートする計測タグ付け方法および装置が提供されている。本発明の実施例によれば、タグ付け値が以前に計測されたソースコード・モジュールと、または異なるコンピュータシステムで計測されたソースコード・モジュールと矛盾することなく、1つまたは2つ以上の変更されたソースコード・モジュールの計測を可能にするオフセット・タグ付けインスツルメンタが提供されている。従来のタグ付け割り当てステートメントを修正すれば、これらの計測機能を拡張することが可能である。
【0024】
オフセット・タグ付けインスツルメンタは、タグ付け値をタグ付けポイントに実際に関連づけるのを、計測されたプログラムが実行されるまで延期することによって各タグ付けポイントにユニークなタグ付け値が割り当てられることを確かめる。オフセット・タグ付けインスツルメンタは、タグ付けベース変数とタグ付けオフセットを組み合わせてタグ付け変数のタグ付け値を作るようにするタグ付け割り当てステートメントを採用している。各ソースコード・モジュールはユニークなタグ付けベース変数をもち、各タグ付けポイントはソースコード・モジュール内でユニークであるタグ付けオフセット値をもっている。計測時に、オフセット・タグ付けインスツルメンタは一定のタグ付けオフセット値をソースコード・モジュールのベース変数と組み合わせるタグ付け割り当てステートメントを挿入する。リンク時に、タグ付けベース値リゾルバは各タグ付けベース変数ごとにユニークなベース値を生成し、各タグ付け割り当てステートメントがユニークなタグ付け値を生成するようにする。そのあと、タグ付けベース値リゾルバは各タグ付け変数をそのユニークな値に初期化することを実行する。実行時に、タグ付け割り当てステートメントが実行されると、ソースコード・モジュールのタグ付けベース変数に割り当てられた値はタグ付け割り当てステートメントに割り当てられた一定のタグ付けオフセット値と組み合わされて、全モジュール間でユニークであるタグ付け値が作られる。そのあと、タグ付け変数はユニークなタグ付け値に等しい値にセットされる。このようにすると、異なる時間に計測されるソースコード・モジュールはタグ値に矛盾を引き起こすことなく、ひとつにリンクすることができる。これらのタグ付け割り当てステートメントがリンク時「再配置可能」と呼ばれるのは、特定のステートメントに割り当てられたタグ付け値の範囲がリンク時に変化することがあるためである。
【0025】
ユニークなタグ付け値はタグ付けオフセット値とタグ付けベース変数の値を組み合わせたものである。一実施例では、各ソースコード・モジュールのオフセット値は"0" の値で始まっている。そのあと、オフセット・タグ付けインスツルメンタは、オフセット・タグ付けインスツルメンタが新しいタグ付け割り当てステートメントをソースコード・モジュールに追加するたびに、タグ付けオフセット値を1ずつインクリメントしていく。従って、10個のタグ付け割り当てステートメントを含んでいるソースコード・モジュールは0から9までのタグ付け値の範囲と次のタグ付けオフセット値10をもつことになる。次のタグ付けオフセット値は別のタグ付け割り当てステートメントをソースコード・モジュールに挿入する必要が起こったとき使用されるタグ付けオフセット値を示している。各ソースコード・モジュールはユニークなベース変数をもっている。一実施例では、リンク時に判断されるときの、第1モジュールのタグ付けベース変数の値は0になっている。第2モジュールのタグ付けベース変数の値は第1モジュールの次のタグ付けオフセット値に第1モジュールのタグ付けベース値を加えたものである。例えば、第1モジュールの次のタグ付けオフセット値が10であれば、第2モジュールのタグ付けベース値は10(つまり、10 + 0)の値をもつことになる。第3モジュールのタグ付けベース変数の値は第2モジュールの次のタグ付けオフセット値に第2モジュールのタグ付けベース値を加えたものである。例えば、第2モジュールの次のタグ付けオフセット値が12であれば、第3モジュールのタグ付けベース値は22(つまり、12 + 10)である。それ以降のモジュールのタグ付けベース値は先行モジュールの次のタグ付けオフセット値の和に等しく、これは先行モジュールのベース値と次のタグ付けオフセット値の和と等価である。このようにすると、結果のタグ付け値はタグ付けオフセット値がタグ付けベース変数の値に加えられるとき、各タグ付け割り当てステートメントごとにユニークになる。図3はリンク時再配置可能タグ付け値の生成を示している。
【0026】
図4は本発明の実施例に関連するIDBのサンプルを示す図である。これらのIDBはタグ付け値および計測に必要な他の情報を収めている。各IDBは1つのソースコード・モジュールを表すことができる。IDB1 301は計測されたソースコード・モジュールのタグ付けポイント0から9までを表すデータを収めている。IDB1はタグ付けベース変数をもち、その値はタグ付けベース変数リゾルバによってリンク時に設定され、0になっており、さらに次のタグ付けオフセット値10をもっている。IDBはタグ付けベース変数の名前を含んでいるので、タグ付けベース変数レゾルバはあるタグ付けベース変数に関連するIDBを見つけることができ、このタグ付けベース変数はIDBがリンク時再配置可能タグを含むタイプであることを示すのに役立っている。オフセット・タグ付けインスツルメンタはタグ付けポイントのデータと次のタグ付けオフセット値をストアする。同様に、IDB2 302は12個のタグ付けポイントを表すデータと次のタグ付けオフセット値12を収めている。IDB2は次のタグ付けオフセット値10をもっているので、タグ付けベース値リゾルバによって最終的にIDB2に割り当てられたタグ付けベース変数の値は10になっている。同様に、IDB3 303のタグ付けベース値が22であるのは、IDB1の次のタグ付けオフセット値が10であり、IDB2の次のタグ付けオフセット値が12であるためである(例えば、0から21までのユニークな値はIDB1とIDB2ではすでに選択されている)。もちろん、前述したように、タグ付けベース値はそれぞれのオブジェクトコード・モジュールがリンクされて実行可能コードが作られるまでは生成されず、ユニークなタグ付け値自体は各タグ付け割り当てステートメントが実行されるまでは実際には生成されない。さらに、本発明のいくかの実施例では、2つ以上のタグ付けベース変数を任意のIDBにストアすることが可能であり、各タグ付けベース変数は異なるタイプのタグ付けステートメントを示している。しかし、このようなタグ付け方式はここで説明している方式を単に拡張したものにすぎない。
【0027】
表5、表6、および表7は計測されたソースコード・モジュール1、2、および3を示しており、これらはそれぞれ図4のIDB1、IDB2およびIDB3に対応している。表5において計測されたソースコード・モジュールを表す擬似コードの先頭に示すように、オフセット・タグ付けインスツルメンタはタグ付け変数の宣言ステートメントを挿入しており、その宣言ステートメントは、この例では、"AMC control port" (In. 3)と名づけた external volatile unsigned long変数になっている。オフセット・タグ付けインスツルメンタはIDB1とソースコード・モジュール1に関連づけられたタグ付けベース変数である、"IDB1 base" (In. 4) の宣言も挿入している。そのあと、オフセット・タグ付けインスツルメンタはソースコード・モジュールを調べ、9行目のように関心のあるポイントにタグ付け割り当てステートメントを挿入する。この特定タグ付け割り当てステートメントはfunction 1 (In. 10) へのコールが実行されることをソフトウェア開発者に警告する。オフセット・タグ付けインスルメンタによって挿入されたタグ付け割り当てステートメントはタグ付けベース変数値にタグ付けオフセット値を加えたものからなり、 "AMC control port =タグ付けベース変数 + 0x12345678" と類似の形式になっている。オフセット・タグ付けインスツルメンタはその終わりに到達するまで、このソースコード・モジュール内の関心のあるタグ付けポイントを継続する。表5に示すように、ソースコード・モジュール内の最後のタグ付けポイントはそのソースコード・モジュールの終わりに置かれており、タグ付け値 UDB1 baseにタグ付けオフセット値9 (In. 27)を加えた値をもつタグ付け割り当てステートメントによって表されている。オフセット・タグ付けインスツルメンタはこれらのタグ付け割り当てステートメントに関係するデータも、前述したようにIDB1に挿入する。
【0028】
同様に、計測されたソースコード・モジュール2も、表6に示すように、タグ付け変数の宣言ステートメント "AMC control port" (In. 31)と変数の宣言 "IDB2 base" (in. 4) を含んでおり、これは計測されたソースコード・モジュール2のタグ付けベース変数を表している。そのあと、オフセット・タグ付けインスツルメンタはソースコード・モジュール2を調べ、関心のある各所のポイントでタグ付け割り当てステートメントをソースコード・モジュールに挿入する。例えば、"AMC control port = IDB2 base + 1" (In. 11) で表されたタグ付け割り当てステートメントは実行されると、"if"ステートメント ("A 12"(In. 8))の"then" 部分が実行されたことを示している。もっと正確には、このタグ付けステートメントのロケーションは変数 "A"に "A - 10" (In. 12) の値が割り当てられたことも示している。ソースコード・モジュール内の最後のタグ付けポイントは "AMC control port = IDB2 base + 11" (In. 22) である。オフセット・タグ付けインスツルメンタは、ソースコード・モジュール2がタグ付け割り当てステートメント0から11までと次のタグ付けオフセット値12をもつことを示すデータをIDB2にストアする。
【0029】
最後に、オフセット・タグ付けインスツルメンタは表7に示すソースコード・モジュール3を調べる。前の2ソースコード・モジュールと同じように、オフセット・タグ付けインスツルメンタは"AMC control port"変数 (In. 3) の宣言を挿入する。オフセット・タグ付けインスツルメンタはタグ付け変数 "IDB2 base"(In. 4) の宣言も挿入する。そのあと、オフセット・タグ付けインスツルメンタはタグ付け割り当てステートメントの使用によって、このソースコード・モジュール内の関心のあるタグ付けポイントを継続する。最後のタグ付け割り当てステートメント "AMC control port = IDB3 base + 6"(In. 10) はソースコード・モジュール3の終わりに置かれている。
【0030】
【表5】
【0031】
【表6】
【0032】
【表7】
【0033】
図5は本発明の実施例によるソースコード・モジュールの計測のためのフローチャートを示している。オフセット・タグ付けインスツルメンタは各ソースコード・モジュールを選択し、宣言ステートメントとタグ付け割り当てステートメントを選択したモジュールに挿入し、データをIDBにストアする。最初に、オフセット・タグ付けインスツルメンタは計測を必要とするソースコード・モジュールがまだ残っているかどうかを判断する(ステップ401)。計測を必要とするソースコード・モジュールが残っていなければ、オフセット・タグ付けインスツルメンタは終了する。しかし、計測を必要とするソースコード・モジュールがまだ残っていれば、オフセット・タグ付けインスツルメンタは次に計測するソースコード・モジュールを選択する(ステップ402)。次に、オフセット・タグ付けインスツルメンタはタグ付けオフセット値を0にリセットする(ステップ403)。オフセット・タグ付けインスツルメンタは新しい計測データベースをオープンし、その新IDBの名前を選択する(ステップ404)。また、オフセット・タグ付けインスツルメンタはこの選択した名前を使用して、計測すべきソースコード・モジュールに挿入する新しいタグ付けベース変数の名前を生成する。そのあと、オフセット・タグ付けインスツルメンタはソースコード・モジュールを調べることを開始する(ステップ405〜411)。オフセット・タグ付けインスツルメンタはタグ付変数の宣言をソースコード・モジュールに挿入し(ステップ405)、そのあと、このソースコード・モジュールのタグ付けベース変数の宣言を挿入する(ステップ406)。これらの宣言はAMC control port、IDB1 ba se、IDB2 base 、およびIDB3 base の表5、表6、および表7に示す宣言に似ている。そのあと、オフセット・タグ付けインスツルメンタはループし、タグ付け割り当てステートメントを挿入する(ステップ407〜411)。オフセット・タグ付けインスツルメンタはタグ付けポイントがソースコード・モジュールに残っているかどうかを判断する(ステップ407)。タグ付けポイントが残っていれば、オフセット・タグ付けインスツルメンタはソースコード・モジュール内の次のタグ付けポイントを見つける(ステップ408)。次のタグ付けポイントを見つけると、オフセット・タグ付けインスツルメンタはタグ付け割り当てステートメントを挿入する(ステップ409)。このタグ付け割り当てステートメントは前述したように、"AMC control base = タグ付けベース変数プラス現タグ付けオフセット値" の形式になっているのが代表的である。さらに、タグ付けエントリが該当のIDBに作られる(ステップ411)。このタグ付けエントリはそのタグ付けポイントのタグ付けオフセット値、タグ付けポイントでのソースコードの情報、およびインクリメントされたオフセットへの次のタグ付けオフセット値のセット状態を収めているのが普通である。そのあと、オフセット・タグ付けインスツルメンタはループし(ステップ407へ)、次のタグ付けオフセットを処理する。このソースコード・オブジェクトの計測を終えると、このソースコード・モジュールのIDBはクローズされる(ステップ412)。そのあと、オフセット・タグ付けインスツルメンタはループし(ステップ401へ)、計測の必要があるソースコード・モジュールがほかにあるかどうかを判断する。
【0034】
前述したように、タグ付けベース変数は計測プロシージャ期間または計測されたソースコード・モジュールのコンパイル時に値が割り当てられていない。タグ付けベース変数の値はリンク時に割り当てられるので、リンク・プロシージャだけを集中化する必要がある。従って、このプロシージャはコンピュータプログラムの新バージョンの代表的パラレルコンパイルをサポートしている。実行可能コンピュータプログラムをリンクするのと同じように、一実施例における計測リンカはタグ付けベース値リゾルバを含んでおり、このリゾルバは最終タグ付け値の間に矛盾が残らないように、各タグ付けベース変数に必要な値と各オブジェクトコード・ファイルが必要とするタグ付け値範囲を解決する。このプロセスはパラレルにコンパイルできる数千のソースコード・モジュールを含む巨大なコンピュータプログラムの計測をサポートするので、大量の時間が節減される。オブジェクトコード・ファイルのリンクが単一コンピュータで行われるときは、コンピュータプログラムの実行時に割り当てられる実際のタグ付け値を最終化する計測リンクプロセスも同じである。従って、変数 IDB1 base、IDB2 base およびIDB3 base は、図4および表5、表6、表7を参照して上述したように、コンピュータプログラムを表すオブジェクトコード・ファイルのリンク前は固定した値をもっていない。表8に示すように、計測リンカは解決されたタグ付けベース変数のソースコード・ステートメントを準備し、これはそのあとコンパイルされ、計測されたソースコード・モジュールのオブジェクトコード・ファイルとリンクされる。表8に示すように、計測リンカはIDB1のタグ付けベース変数 IDB1 baseを0の値(In. 3) にセットするソースコードを準備する。同様に、IDB2のタグ付けベース変数 (IDB2 base)は値が10 (In. 5) になり、IDB3のタグ付けベース変数 (IDB3 base)は値が22 (In. 7) になる。
【0035】
【表8】
【0036】
タグ付けベース値リゾルバはある範囲のタグ付け値を回避することができる。この機能はそのいくつかを以下で説明するが、さまざまな異なるコンテキストでソフトウェア開発者のために計測プロセスを単純化する。
【0037】
第一に、コンピュータプログラムはめったに変化しない多数のソースコード・モジュールを含むことが可能であり、この中には、ソースコード・モジュールライブラリなどの形態のレガシコードが含まれる。(レガシコードには、タグ付け変数を定数値にセットし、従ってリンク時再配置可能タグ付け値の使用と互換性のないタグ付け割り当てステートメントで計測されたコードが含まれる。)計測プロシージャはソースコード・モジュールが変更されない限り、ソフトウェア開発者がそのモジュールを一度計測するだけで済むならば、より効率的になることは明らかである。
【0038】
第二に、ソフトウェア開発者はオフセット・タグ付けインスツルメンタを使用して計測されていないソースコード・モジュールのためにある範囲のタグ付け値を残しておきたい場合がある。例えば、ソフトウェア開発者は特にエラーを起こしやすいソースコード・モジュールを手作業で計測し、オフセット・タグ付けインスツルメンタで通常挿入されるよりも、はるかに多いタグ付け割り当てステートメントを挿入することを望んでいる場合がある。そのような場合には、ソフトウェア開発者は挿入されたタグ付け割り当てステートメントに値を割り当てるだけにしておき、そのタグ付け値がそのコンピュータプログラムの他のソースコード・モジュールのために解決されるとき、その範囲のタグ付け値を避けるようにタグ付けベース値リゾルバに指示することができる。
【0039】
第三に、いくつかのソースコード・モジュールはコンピュータプログラムのあるバージョンから次のバージョンまでに変更されないことがある。これらのソースコード・モジュールは以前に計測されたことがあり、それぞれのタグ付け値はまだユニークである場合がある。従って、ソフトウェア開発者はこれらの以前に計測され、現在未変更であるソースコード・モジュールに割り当てられた範囲のタグ付け値を残しておき、変更された後でコンピュータプログラムの最新バージョンで再計測されたソースコード・モジュールだけの新タグ付け値を判断するようにタグ付けベース値リゾルバに指示するだけで、より効率的なアクションコースがとれることを望んでいる場合がある。
【0040】
第四に、上記の第3の例はコンピュータプログラムのあるバージョンでの次のタグ付けオフセット値を、追加のタグ付け割り当てステートメントがタグ付けベース変数の再計算を必要としないで、コンピュータプログラムの以後のバージョンで挿入できるようにセットするようにすると、さらに改善することができる。例えば、表5を参照して上述したように、計測されたソースコード・モジュール1の次のタグ付けオフセット値は10までの値にセットすると、ユニークなタグ付け値が保証されることになる。しかし、計測されたソースコード・モジュール1の次のタグ付けオフセット値が10でなく、12にセットされていれば、2つの追加タグ付け割り当てステートメントを、どのベース変数(例えば、IDB2 base)の再計算も必要としないでコンピュータプログラムの以後のバージョンでソースコード・モジュールに追加することが可能になり、しかも、コンピュータプログラムのユニークなタグ付け値が保証されることになる。
【0041】
第五に、本発明のいくつかの実施例は、コンピュータプログラムの第1バージョンのときに、計測リンカがコンピュータプログラムの計測されたソースコード・モジュールのタグ付けベース変数を判断するだけでなく、各タグ付け割り当てステートメントの実際のタグ付け値も判断するように構成することができる。(前述したように、実際のタグ付け値はコンピュータプログラムの実行時に判断されるのが代表的である。)この実施例では、そのあと計測リンカは、各計測されたソースコード・モジュールのそれぞれのIDBにその値範囲を保存しておくといったように、その実際のタグ付け値範囲を保存しておく。コンピュータプログラムの以後のバージョンの計測プロシージャでは、オフセット・タグ付けイスツルメンタは各計測されたソースコード・モジュールを調べて、その計測されたソースコード・モジュールがコンピュータプログラムの以前バージョンから変更されたかどうかを判断する。あるソースコード・モジュールが変更されていなければ、オフセット・タグ付けインスツルメンタはそのソースコード・モジュールの実際のタグ付け値範囲をリトリーブし、「タグ付け変数=ベース変数およびタグ付けオフセット値」形式のタグ付け割り当てステートメントを「タグ付け変数=実際のタグ付け値」形式のタグ付け割り当てステートメントで置き換える。未変更のソースコード・モジュールに対してこの単純化されたタグ付け割り当てステートメントを使用すると、それぞれのタグ付け値範囲をコンピュータプログラムの実行時にではなく、コンパイルプロセス時に割り当てることが可能になる。もちろん、この実施例が正しく動作するためには、タグ付けベース値リゾルバは予約されたタグ付け値範囲を受け取って、それぞれのタグ付け値範囲が予約タグ付け値にオーバラップしないようにタグ付けベース変数を解決できなければならない。
【0042】
図6および図7は本発明の実施例のためのタグ付けベース変数値解決プロシージャのフローチャートを示す図である。このプロシージャは各モジュールを選択し、予約値範囲が使用されないようにして、選択したモジュールのタグ付けベース変数の値を割り当てる。最初のステップとして、プロシージャはコンピュータプログラムのこのバージョンで旧IDBがリンクされるかどうかをチェックする(ステップ501)。このような旧IDBが存在することはそのタグ付け値がリンク時再配置可能でない、計測されたソースコード・モジュールであること表しているのが一般である。上述した理由により、これらの旧IDBはすでにタグ付け値が割り当てられているので、必要なことはそのタグ付け値範囲用にスペースが予約されることだけである。旧IDBが存在していれば(ステップ502)、プロシージャはこれらの旧IDBを選択する(ステップ503)。プロシージャは各IDB用に予約するタグ付け値範囲のレコードを作成する(ステップ504)。プロシージャは旧IDBが存在すると、予約フラグ値を真にセットする(ステップ505)。プロシージャはスペースを予約する必要のある旧IDBがなくなるまで続行する。必要なスペースすべてが予約されると、プロシージャは累積タグ付けオフセット値をゼロにセットする(ステップ506)。そのあと、プロシージャはループして、リンク時再配置可能タグ付け値を使用する各モジュールごとにタグ付けベース値を割り当てる(ステップ507−516)。プロシージャは次の新IDBを選択する(ステップ507)。新IDBのすべてがすでに選択されていれば、プロシージャは終了する(ステップ508)。そうでなければ、プロシージャはタグ付けベース変数を累積タグ付けオフセット値に等しい値セットする(ステップ509)。次に、プロシージャはこのIDBの次のタグ付けオフセット値をリトリーブする(ステップ510)。そのあと、プロシージャはタグ付けベース変数の提案値とこのIDBの次のタグ付けオフセット値をチェックし、その提案タグ付け値範囲が予約タグ付け値のどれかと矛盾しているかどうかを判断する。もちろん、このステップは予約値フラグが真にセットされたことがなければスキップすることができる(ステップ511)。提案範囲に矛盾がなければ、タグ付けベース値リゾルバは提案値をタグ付けベース変数に割り当てるソースコード・ステートメントを準備する(ステップ514)。タグ付けベース変数のために提案値を使用すると矛盾が起こる場合は、タグ付けベース値リゾルバはタグ付けベース変数用に別の値を選択し、このIDB用のタグ付け値範囲が予約されたタグ付け値範囲と矛盾しないようにする(ステップ513)。タグ付けベース変数用の値が判断されると、タグ付けベース値リゾルバはそのIDBのタグ付け値をマスタIDBにストアし、このマスタIDBは最終的にはコンピュータプログラムのすべてのタグ付け値を収容することになり、プログラム実行時にワークステーションGUI(例えば、図1のワークステーションGUI)によって参照することができる(ステップ515)。次に、プロシージャは累積タグ付けオフセット値を最後にリトリーブした次のタグ付けオフセット値だけインクリメントする(ステップ516)。そのあと、プロシージャはループし(ステップ507へ)次のIDBを選択する。従って、タグ付けベース値リゾルバはIDBのすべてからの情報を合体しているマスタIDBを作成することも可能である。このマスタIDBは旧スタイルのIDBのフォーマットになっている(例えば、タグ付けベース変数の名前を収めていないIDB)。代替実施例として、タグ付けベース値リゾルバは値がそのタグ付けベース変数に割り当てられた後で、各IDB用に旧スタイルのIDBを作成するが可能である。
【0043】
図8は本発明の実施例の計測プロセスを示す図である。4個のソースコード・モジュール600a、600b、600c、および600dは計測前のコンピュータプログラムを表している。ソースコード・プリプロセッサ601はコメントを取り除き、これらのソースコード・モジュールからのマクロを展開する。オフセット・タグ付けインスツルメンタは、次に、ソースコード・モジュールを検査し、図5に示すように該当のタグ付けポイントを探し出す。オフセット・タグ付けインスツルメンタはその検査プロシージャ期間にIDB 603a、603b、603c、および603dを作成する。代表例として、オフセット・タグ付けインスツルメンタは図8に示すように、各ソースコード・モジュールごとに1つのIDBを作成する。別の例として、複数のソースコード・モジュールのデータを1つのIDBにストアすることも可能である。オフセット・タグ付けインスツルメンタは計測されたソースコード・モジュール604も作成する。代替実施例では、オフセット・タグ付けインスツルメンタは検査された各ソースコード・モジュールごとに計測済みソースコード・モジュールを作成することもできる。コンパイラ605は計測されたソースコードからオブジェクトコードを生成する。リンカ606のタグ付けベース値リゾルバは図6および図7に示すようにタグ付けベース変数の値を判断し、タグ付けベース変数を初期化するソースコード・ステートメントを生成する。生成されたソースコード・ステートメントはコンパイルされ、コンパイル済みコードとリンクされて実行可能コード610が作られる。その結果の実行可能コード610はコンピュータプログラムをテストするために使用できる。
【0044】
図9はソースコード・モジュールが2台以上のコンピュータで計測され、コンパイルされるようした本発明の実施例を示す図である。第1ソースコード・モジュール701aはコンピューティングマシン1上に置かれている。オフセット・タグ付けインスツルメンタ702aはこのソースコードを使用してIDB 704aとコンパイル済みコード705aを作成する。同じように、コンピューティングマシン2には、2つのソースコード・モジュール701bと701cが置かれている。これらのソースコード・モジュールはオフセット・タグ付けインスツルメンタ702a用に用意されたもので、IDB2 704bとIDB3 704cをコンパイル済みコード705cと一緒に作成する。同様に、コンピューティングマシン3では、オフセット・タグ付けインスツルメンタはソースコード・モジュール4 701dを使用してIDB4 704dとコンパイル済みコード705cを作成する。コンパイル済みコードを表すオブジェクトファイルの各々はコンピューティングマシンNに渡される。このコンピューティングマシンNはどの該当コンピューティングマシンにすることも可能であり、前述の3コンピューティングマシンの1つであっても構わない。同様に、3コンピューティングマシンで作成されたIDBのすべてはコンピューティングマシンNに渡される。リンカ710は各コンピューティングマシンで作成されたオブジェクトコードを使用して実行可能コードを生成する。リンカのタグ付けベース値リゾルバは前述したように、IDBで表されたタグ付け値の各々ごとにタグ付けベース変数の値を解決し、その結果の実行可能コードがユニークなタグ付け値を含むようにする。最後に、図10は本発明の代替実施例を示す図である。オフセット・タグ付けインスツルメンタがIDBを作成するとき、あらかじめ決めたパッディング範囲を組み込むことも可能である。IDB 800、801および803は各々がそのようなパッディング範囲が組み込まれている。このパッディング範囲を使用すると、追加のタグ付け割り当てステートメントを、そのIDBで表されたタグ付け値の最大範囲を変更することなく特定のIDBに組み入れることが可能になる。大きなコンピュータプログラムが以前に計測された種々のソースコード・モジュールのすべてを含んでいて、ソフトウェア設計者が最初のソースコード・モジュールに1行分のコードだけを追加したため、タグ付け割り当てステートメントが1つ追加されたときは、このIDBと他のすべてのIDB用のタグ付けベース変数の値は、この新しいタグ付け割り当てステートメントがパッディング値で与えられた範囲内にまだ収まっているので、変更されることがない。従って、このプロシージャを使用すると、計測・リンクプロセスが高速化する。
【0045】
図11は本発明によって提供されるタグ付け値の代替実施例を示し、タグ付けオフセット値と連結されたタグ付けベース変数からなっている。上述したタグ付け値はタグ付けベース変数プラスタグ付けオフセット値を含んでいる。代替実施例では、タグ付け値はタグ付けオフセット値に連結されたタグ付けベース変数を含んでいる。例えば、タグ付け値は64ビットにすることができる。最初の32ビットはタグ付けオフセット値を表し、次の32ビットはタグ付けベース変数を表すことができる。この実施例でも、タグ付けオフセット値とタグ付けベース変数の値は前述したように判断することができる。しかし、前記実施例で上述したように2つの値を加えるのではなく、2つの値は連結されるようになっている。従って、リンカは各ソースコード・モジュールにユニークなタグ付けベース値を割り当てるだけでよく、これらの値は各ソースコード・モジュール内のタグ付け割り当てステートメントの数に基づく必要がない。このようにして作成されたタグ付け値はユニークのままであるので、コンピュータプログラマはその結果のコンピュータプログラムの実行をトレースすることができる。
【0046】
上述した説明から理解されるように、本発明の理解を容易にするために特定実施例を説明してきたが、これらの実施例は本発明の精神と範囲を逸脱しない限り種々態様に変更することが可能である。例えば、リンカを変更すれば、タグ付け値をリンク時に計算させ、タグ付け割り当てステートメントでタグ付け変数に割り当てられるタグ付け値を定数としてストアすることが可能になる。コンパイラはオブジェクトコード内の各タグ付け割り当てステートメントのロケーションの標識を出力することが可能になる。そのあと、リンカは各タグ付け割り当てステートメント内のユニークな定数値をストアし、定数値とタグ付けポイントとのマッピングをIDBにストアしておくことができる。また、ここで言うモジュールという用語はコンピュータプログラムの任意の部分を意味し、ここには、完全なソースコード・ファイル、ソースコード・ファイルの一部、関数、プロシージャまたはコンピュータプログラムを形成するその他のステートメントの集まりが含まれる。従って、本発明は特許請求の範囲に記載されている事項にのみ限定されるものである。
【図面の簡単な説明】
【図1】ソフトウェアのテストとデバッグのための計測タグ付け方式に関連する代表的なモニタリングシステムを示す図である。
【図2】計測データベースに挿入されている従来のタグ付け値を示す図である。
【図3】本発明の実施例によって提供される新規のタグ付け値を示す図であり、そこではタグ付け値はタグ付けベース変数プラスタグ付けオフセット値から構成されている。
【図4】本発明の実施例に関連する代表的な計測データベースを示す図である。
【図5】本発明の実施例によるソースコード・モジュールの計測フローチャートを示す図である。
【図6】本発明の実施例に関連するタグ付けベース変数値解決プロシージャのフローチャートである。
【図7】本発明の実施例に関連するタグ付けベース変数値解決プロシージャのフローチャートである。
【図8】本発明の実施例に関連する計測プロシージャの例を示す図である。
【図9】ソースコード・モジュールが2代以上のコンピュータで計測されるようにした本発明の実施例による計測プロシージャの例を示す図である。
【図10】本発明で使用されるIDBの代替実施例を示す図である。
【図11】本発明の実施例によって提供されるタグ付け値の代替実施例を示す図であり、そこではタグ付け値はタグ付けオフセットに連結されたタグ付けベース変数からなっている。
【符号の説明】
600 ソースコード・モジュール
601 ソースコード・プリプロセッサ
603 計測データベース(IDB)
604 計測されたソースコード・モジュール
605 コンパイラ
606 リンカ
610 実行可能コード
701 ソースコード・モジュール
702 オフセット・タグ付けインスツルメンタ
704 IDB
705 コンパイル済みコード
710 リンカ
711 実行可能コード
Claims (14)
- コンピュータシステムにおいて複数のソースコード・モジュールからなるコンピュータプログラムを計測する方法であって、該方法は、
各ソースコード・モジュールごとに
コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行するオフセット・タグ付けインスツルメンタ・ソフトウェア・モジュールの命令を実行することにより、ソースコード・モジュールにユニークである名前をもつベース変数を生成するステップと、
ソースコード・モジュール内の各計測ポイントごとに、コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行する前記オフセット・タグ付けインスツルメンタ・ソフトウェア・モジュールの命令を実行することにより、
ソースコード・モジュール内で計測ポイントにユニークであるオフセット値を生成し、
タグ付け変数を生成されたオフセット値とベース変数の値を組み合わせたものにセットするための、タグ付け割り当てステートメントを計測ポイントの個所に挿入することで、タグ付け割り当てステートメントが挿入された計測済みソースコード・モジュールを生成するステップと、
コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行するコンパイラ・ソフトウェア・モジュールの命令を実行することにより、前記計測済みソースコード・モジュールをコンパイルするステップと、
コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行するベース値リゾルバ・ソフトウェア・モジュールの命令を実行することにより、生成されたオフセット値とベース変数の値を組み合わせたタグ付け変数の値が各計測済みソースコード・モジュールの計測ポイントをユニークに識別するように、複数の計測済みソースコード・モジュールの各ソースコード・モジュールごとにベース値を生成し、各ベース変数ごとに、前記生成したベース値をセットするソースコード・ステートメントを生成するステップと、
コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行する前記コンパイラ・ソフトウェア・モジュールの命令を実行することにより、生成されたソースコード・ステートメントをコンパイルするステップと、
コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行するリンク・ソフトウェア・モジュールの命令を実行することにより、コンパイルされた計測済みソースコード・モジュールをコンパイルされた生成済みソースコード・ステートメントとリンクしてリンク済みプログラムを作成するステップと
を含むことで、リンク済みプログラムの実行中にタグ付け変数が各計測ポイントでユニークな値にセットされるようにすることを特徴とする方法。 - 請求項1に記載の方法において、コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行する前記オフセット・タグ付けインスツルメンタ・ソフトウェア・モジュールの命令を実行することにより、生成済みベース変数のための宣言ステートメントを各ソースコード・モジュール内に挿入することをさらに含み、前記宣言ステートメントは生成済みベース変数がソースコード・モジュールの外部に定義されていることを示していることを特徴とする方法。
- 請求項1に記載の方法において、コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行する前記オフセット・タグ付けインスツルメンタ・ソフトウェア・モジュールの命令を実行することにより、タグ付け変数のための宣言ステートメントを各ソースコード・モジュール内に挿入することをさらに含み、前記宣言ステートメントはタグ付け変数がソースコード・モジュールの外部に定義されていることを示していることを特徴とする方法。
- 請求項1に記載の方法において、コンピュータ読み取り可能媒体に収められ、前記コンピュータシステム内の任意のコンピュータ上で実行する前記オフセット・タグ付けインスツルメンタ・ソフトウェア・モジュールの命令を実行することにより、生成済みベース変数の名前を情報データリポジトリにストアすることをさらに含むことを特徴とする方法。
- 請求項1に記載の方法において、ユニークな値をベース変数に割り当てることは、各計測ポイントでのタグ付け変数のユニークな値があらかじめ決めた値範囲を回避するように値をベース変数に割り当てることを含むことを特徴とする方法。
- 複数のソースコード・モジュールからなるコンピュータプログラムを複数のタグ付け割り当てステートメントで計測するシステムであって、前記システムは、
各ソースコード・モジュールごとに
ソースコード・モジュールにユニークである名前をもつベース変数を生成し、
ソースコード・モジュール内の各計測ポイントごとに、ソースコード・モジュール内で計測ポイントにユニークであるオフセット値を生成し、
タグ付け変数を生成されたオフセット値とベース変数の値を組み合わせたものにセットするための、タグ付け割り当てステートメントを計測ポイントの個所に挿入することで、タグ付け割り当てステートメントが挿入された計測済みソースコード・モジュールを生成するオフセットタグ付けインスツルメント手段と、
前記計測済みソースコード・モジュールをコンパイルするコンパイル手段と、
前記生成されたオフセット値とベース変数の値を組み合わせたタグ付け変数の値が各計測済みソースコード・モジュールの計測ポイントをユニークに識別するように、複数の計測済みソースコード・モジュールの各ソースコード・モジュールごとにベース値を生成し、各ベース変数ごとに、前記生成したベース値をセットするソースコード・ステートメントを生成するベース値リゾルブ手段と、
前記生成されたソースコード・ステートメントをコンパイルするコンパイル手段と、
前記コンパイルされた計測済みソースコード・モジュールをコンパイルされた前記生成済みソースコード・ステートメントとリンクしてリンク済みプログラムを作成するリンク手段と、
前記リンク済みプログラムを実行する実行手段と
を備えることで、前記リンク済みプログラム実行中にタグ付け変数が各計測ポイントでユニークな値にセットされるようにすることを特徴とするシステム。 - 請求項6に記載のシステムにおいて、オフセット・タグ付けインスツルメント手段は第1コンピュータ上に置かれているコンピュータプログラムの第1ソースコード・モジュールに少なくとも1つのタグ付け変数割り当てステートメントを挿入し、第2コンピュータ上に置かれているコンピュータプログラムの第2ソースコード・モジュールに少なくとも1つの他のタグ付け変数割り当てステートメントを挿入することを特徴とするシステム。
- 請求項6に記載のシステムにおいて、タグ付けオフセット・インスツルメント手段は各タグ付け割り当てステートメントを計測データレポジトリに格納することを特徴とするシステム。
- 請求項6に記載のシステムにおいて、ベース値リゾルブ手段はタグ付け変数のための以前に割り当てられた値範囲をリトリーブし、各タグ付け変数割り当てステートメントでのタグ付け変数の値がタグ付け変数のための以前に割り当てられた値範囲を回避するようにベース値を判断することを特徴とするシステム。
- コンピュータに
複数のソースコード・モジュールからなるコンピュータプログラムの各ソースコード・モジュールごとに
ソースコード・モジュールにユニークである名前をもつベース変数を生成し、
ソースコード・モジュール内の各計測ポイントごとに、ソースコード・モジュール内で計測ポイントにユニークであるオフセット値を生成し、
タグ付け変数を生成されたオフセット値とベース変数の値を組み合わせたものにセットするための、タグ付け割り当てステートメントを計測ポイントの個所に挿入することで、タグ付け割り当てステートメントが挿入された計測済みソースコード・モジュールを生成するオフセットタグ付けステップと、
前記計測済みソースコード・モジュールをコンパイルするコンパイルステップと、
前記生成されたオフセット値とベース変数の値を組み合わせたタグ付け変数の値が各計測済みソースコード・モジュールの計測ポイントをユニークに識別するように、複数の計測済みソースコード・モジュールの各ソースコード・モジュールごとにベース値を生成し、各ベース変数ごとに、前記生成したベース値をセットするソースコード・ステートメントを生成するベース値リゾルブステップと、
前記生成されたソースコード・ステートメントをコンパイルするコンパイルステップと、
前記コンパイルされた計測済みソースコード・モジュールをコンパイルされた前記生成済みソースコード・ステートメントとリンクしてリンク済みプログラムを作成するリンクステップと、
前記リンク済みプログラムを実行する実行ステップと
を実行させることで、前記リンク済みプログラム実行中にタグ付け変数が各計測ポイントでユニークな値にセットされるようにする、複数のソースコード・モジュールからなるコンピュータプログラムを複数のタグ付け割り当てステートメントで計測させるためのプログラムを記録することを特徴とするコンピュータ読み取り可能媒体。 - 請求項10に記載のコンピュータ読み取り可能媒体において、タグ付け割り当てステートメントはタグ付けオフセット値をタグ付けベース値と組み合わせることを特徴とするコンピュータ読み取り可能媒体。
- 請求項10に記載のコンピュータ読み取り可能媒体において、コンピュータプログラムの調整はタグ付けベース値を設定することを含むことを特徴とするコンピュータ読み取り可能媒体。
- 請求項10に記載のコンピュータ読み取り可能媒体において、コンピュータプログラムは複数のモジュールを含み、タグ付け割り当てステートメントはタグ付けオフセット値をタグ付けベース値と組み合わせて、その組み合わせが各計測ポイントをユニークに識別するように値を生成し、各モジュールのベース値はコンピュータプログラムが調整されるとき設定され、これらの機能は全て前記コンピュータ読み取り可能媒体からの命令を実行するプロセッサにより実施されることを特徴とするコンピュータ読み取り可能媒体。
- 請求項10に記載のコンピュータ読み取り可能媒体において、タグ付け割り当てステートメントはタグ付け変数を定数値にセットし、コンピュータプログラムの調整は各タグ付け割り当てステートメントの定数値をユニークな値にセットすることを特徴とするコンピュータ読み取り可能媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/015,256 | 1998-01-29 | ||
US09/015,256 US6106571A (en) | 1998-01-29 | 1998-01-29 | Relocatable instrumentation tags for testing and debugging a computer program |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005259199A Division JP2006012193A (ja) | 1998-01-29 | 2005-09-07 | コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11316696A JPH11316696A (ja) | 1999-11-16 |
JP4249309B2 true JP4249309B2 (ja) | 2009-04-02 |
Family
ID=21770380
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02286099A Expired - Fee Related JP4249309B2 (ja) | 1998-01-29 | 1999-01-29 | コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ |
JP2005259199A Pending JP2006012193A (ja) | 1998-01-29 | 2005-09-07 | コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005259199A Pending JP2006012193A (ja) | 1998-01-29 | 2005-09-07 | コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ |
Country Status (5)
Country | Link |
---|---|
US (1) | US6106571A (ja) |
EP (1) | EP0933707B1 (ja) |
JP (2) | JP4249309B2 (ja) |
AT (1) | ATE333677T1 (ja) |
DE (1) | DE69932371T2 (ja) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311327B1 (en) * | 1998-03-02 | 2001-10-30 | Applied Microsystems Corp. | Method and apparatus for analyzing software in a language-independent manner |
US6308315B1 (en) * | 1998-10-14 | 2001-10-23 | Sun Microsystems, Inc. | System and method for automatically and selectively promoting object variables to method fields and variables in a digital computer system |
US6973417B1 (en) * | 1999-11-05 | 2005-12-06 | Metrowerks Corporation | Method and system for simulating execution of a target program in a simulated target system |
US6745383B1 (en) * | 1999-12-29 | 2004-06-01 | Veritas Operating Corporation | Early warning mechanism for enhancing enterprise availability |
US7100152B1 (en) | 2000-01-31 | 2006-08-29 | Freescale Semiconductor, Inc. | Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof |
US6996808B1 (en) * | 2000-02-12 | 2006-02-07 | Microsoft Corporation | Function injector |
US7409318B2 (en) * | 2000-02-14 | 2008-08-05 | Nextnine Ltd. | Support network |
US7076400B2 (en) * | 2000-02-14 | 2006-07-11 | Nextnine Ltd. | Support network |
AU2001234042A1 (en) * | 2000-02-14 | 2001-08-20 | Nextnine Ltd. | Support network |
AU2000257401A1 (en) * | 2000-06-15 | 2001-12-24 | Bruce Hodge | Multiphase single pass interpreter |
US6715141B1 (en) | 2000-06-15 | 2004-03-30 | Bruce Hodge | Multiphase single pass interpreter |
US6961927B1 (en) * | 2000-11-27 | 2005-11-01 | Microsoft Corporation | Lossless, context-free compression system and method |
US6993750B2 (en) * | 2001-12-13 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | Dynamic registration of dynamically generated code and corresponding unwind information |
US6996810B2 (en) * | 2001-12-13 | 2006-02-07 | Hewlett-Packard Development Company, L.P. | Lazy and precise update of unwind information for dynamically generated code |
US7484205B2 (en) * | 2002-12-12 | 2009-01-27 | Microsoft Corporation | Preprocessor-based source code instrumentation |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US7644409B2 (en) * | 2004-06-04 | 2010-01-05 | Sun Microsystems, Inc. | Techniques for accessing a shared resource using an improved synchronization mechanism |
US7475397B1 (en) | 2004-07-28 | 2009-01-06 | Sun Microsystems, Inc. | Methods and apparatus for providing a remote serialization guarantee |
US8185868B1 (en) | 2004-12-20 | 2012-05-22 | The Mathworks, Inc. | System and method for cell-based code editing and publishing |
US7509244B1 (en) * | 2004-12-22 | 2009-03-24 | The Mathworks, Inc. | Distributed model compilation |
US8266608B2 (en) * | 2005-02-18 | 2012-09-11 | Green Hills Software, Inc. | Post-compile instrumentation of object code for generating execution trace data |
US9152531B2 (en) * | 2005-02-18 | 2015-10-06 | Green Hills Sofware, Inc. | Post-compile instrumentation of object code for generating execution trace data |
US7357332B2 (en) * | 2005-04-29 | 2008-04-15 | International Business Machines Corporation | Providing diagnostic information on the processing of variables in source code |
US7996442B2 (en) * | 2005-10-17 | 2011-08-09 | Oracle International Corporation | Method and system for comparing and re-comparing data item definitions |
JP4860240B2 (ja) * | 2005-11-11 | 2012-01-25 | パナソニック株式会社 | 翻訳方法および実行通知命令の埋め込み方法 |
US20070250810A1 (en) * | 2006-04-20 | 2007-10-25 | Tittizer Abigail A | Systems and methods for managing data associated with computer code |
US8370806B2 (en) * | 2006-11-15 | 2013-02-05 | Qualcomm Incorporated | Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor |
US8380966B2 (en) * | 2006-11-15 | 2013-02-19 | Qualcomm Incorporated | Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging |
US8533530B2 (en) * | 2006-11-15 | 2013-09-10 | Qualcomm Incorporated | Method and system for trusted/untrusted digital signal processor debugging operations |
US8341604B2 (en) * | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
US8762956B1 (en) * | 2007-01-31 | 2014-06-24 | The Mathworks, Inc. | Generating a report document from code |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
GB2451253A (en) * | 2007-07-24 | 2009-01-28 | Ezurio Ltd | Indicating the position of a next declaration statement in object code when declaring a variable object code |
US8381192B1 (en) * | 2007-08-03 | 2013-02-19 | Google Inc. | Software testing using taint analysis and execution path alteration |
US8589880B2 (en) * | 2009-02-17 | 2013-11-19 | International Business Machines Corporation | Identifying a software developer based on debugging information |
US8370354B2 (en) | 2010-06-30 | 2013-02-05 | International Business Machines Corporation | Acceleration of legacy to service oriented (L2SOA) architecture renovations |
US8978018B2 (en) | 2010-12-02 | 2015-03-10 | International Business Machines Corporation | Reversibly instrumenting a computer software application |
US20130179867A1 (en) * | 2012-01-11 | 2013-07-11 | International Business Machines Corporation | Program Code Analysis System |
US9274911B2 (en) | 2013-02-21 | 2016-03-01 | Advantest Corporation | Using shared pins in a concurrent test execution environment |
US9411708B2 (en) * | 2013-04-12 | 2016-08-09 | Wipro Limited | Systems and methods for log generation and log obfuscation using SDKs |
US9785542B2 (en) * | 2013-04-16 | 2017-10-10 | Advantest Corporation | Implementing edit and update functionality within a development environment used to compile test plans for automated semiconductor device testing |
US9785526B2 (en) | 2013-04-30 | 2017-10-10 | Advantest Corporation | Automated generation of a test class pre-header from an interactive graphical user interface |
US10269029B1 (en) | 2013-06-25 | 2019-04-23 | Amazon Technologies, Inc. | Application monetization based on application and lifestyle fingerprinting |
JP6481515B2 (ja) * | 2015-05-29 | 2019-03-13 | 富士通株式会社 | 情報処理装置、コンパイル方法、及びコンパイラプログラム |
US10558553B2 (en) * | 2016-11-30 | 2020-02-11 | International Business Machines Corporation | Enabling non-blocking runtime application debugging for a single threaded server environment |
US10346285B2 (en) * | 2017-06-09 | 2019-07-09 | Microsoft Technology Licensing, Llc | Instrumentation of user actions in software applications |
US10725894B2 (en) * | 2017-10-04 | 2020-07-28 | International Business Machines Corporation | Measuring and improving test coverage |
US20230229581A1 (en) * | 2022-01-18 | 2023-07-20 | International Business Machines Corporation | Identifying regression test failures |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4144493A (en) * | 1976-06-30 | 1979-03-13 | International Business Machines Corporation | Integrated circuit test structure |
US4445192A (en) * | 1980-11-25 | 1984-04-24 | Hewlett-Packard Company | Logic state analyzer with time and event count measurement between states |
US4590581A (en) * | 1983-05-09 | 1986-05-20 | Valid Logic Systems, Inc. | Method and apparatus for modeling systems of complex circuits |
US5103394A (en) * | 1984-04-30 | 1992-04-07 | Hewlett-Packard Company | Software performance analyzer |
US4845615A (en) * | 1984-04-30 | 1989-07-04 | Hewlett-Packard Company | Software performance analyzer |
US4720778A (en) * | 1985-01-31 | 1988-01-19 | Hewlett Packard Company | Software debugging analyzer |
US4937740A (en) * | 1985-09-18 | 1990-06-26 | Cadre Technologies, Inc. | Real time software analyzing system for storing selective m-bit addresses based upon correspondingly generated n-bit tags |
US5047919A (en) * | 1986-04-03 | 1991-09-10 | Harris Corporation | Method and apparatus for monitoring software execution in a parallel multiprocessor computer system |
US4849879A (en) * | 1986-09-02 | 1989-07-18 | Digital Equipment Corp | Data processor performance advisor |
US5062055A (en) * | 1986-09-02 | 1991-10-29 | Digital Equipment Corporation | Data processor performance advisor |
GB2197506A (en) * | 1986-10-27 | 1988-05-18 | Burr Brown Ltd | Providing and handling break points in a software monitor |
US4811345A (en) * | 1986-12-16 | 1989-03-07 | Advanced Micro Devices, Inc. | Methods and apparatus for providing a user oriented microprocessor test interface for a complex, single chip, general purpose central processing unit |
US4989134A (en) * | 1987-03-20 | 1991-01-29 | Hewlett-Packard Company | Method and apparatus for enhancing data storage efficiency |
US4819233A (en) * | 1987-04-08 | 1989-04-04 | Westinghouse Electric Corp. | Verification of computer software |
US5329471A (en) * | 1987-06-02 | 1994-07-12 | Texas Instruments Incorporated | Emulation devices, systems and methods utilizing state machines |
US5006992A (en) * | 1987-09-30 | 1991-04-09 | Du Pont De Nemours And Company | Process control system with reconfigurable expert rules and control modules |
US4864569A (en) * | 1987-11-25 | 1989-09-05 | Westinghouse Electric Corp. | Software verification and validation configuration management system |
US5121489A (en) * | 1988-08-02 | 1992-06-09 | International Business Machines Corporation | Tracing method for identifying program execution paths using a trace points bit map with one-to-one correspondence with embedded trace points |
CN1045655A (zh) * | 1988-11-23 | 1990-09-26 | 约翰弗兰克制造公司 | 系统自动诊断的内核测试接口和方法 |
US5134701A (en) * | 1989-02-10 | 1992-07-28 | Hewlett-Packard Co. | Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities |
CA1286803C (en) * | 1989-02-28 | 1991-07-23 | Benoit Nadeau-Dostie | Serial testing technique for embedded memories |
US5267277A (en) * | 1989-11-02 | 1993-11-30 | Combustion Engineering, Inc. | Indicator system for advanced nuclear plant control complex |
US5121501A (en) * | 1989-12-27 | 1992-06-09 | International Business Machines Corporation | First processor inserting hooks into software and sending unique identifications to output bus and second processor associating data frames and time with these unique identifications |
US5410685A (en) * | 1990-06-12 | 1995-04-25 | Regents Of The University Of Michigan | Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same |
US5361351A (en) * | 1990-09-21 | 1994-11-01 | Hewlett-Packard Company | System and method for supporting run-time data type identification of objects within a computer program |
AU8966391A (en) * | 1990-12-24 | 1992-06-25 | Ball Corporation | System for analysis of embedded computer systems |
US5355369A (en) * | 1991-04-26 | 1994-10-11 | At&T Bell Laboratories | High-speed integrated circuit testing with JTAG |
US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5265254A (en) * | 1991-08-14 | 1993-11-23 | Hewlett-Packard Company | System of debugging software through use of code markers inserted into spaces in the source code during and after compilation |
US5450586A (en) * | 1991-08-14 | 1995-09-12 | Hewlett-Packard Company | System for analyzing and debugging embedded software through dynamic and interactive use of code markers |
US5259766A (en) * | 1991-12-13 | 1993-11-09 | Educational Testing Service | Method and system for interactive computer science testing, anaylsis and feedback |
AU4598593A (en) * | 1992-06-05 | 1994-01-04 | Convex Computer Corporation | Computer program debugging in the presence of compiler synthesized variables |
US5367683A (en) * | 1992-06-26 | 1994-11-22 | Digital Equipment Corporation | Smart recompilation of performing matchup/difference after code generation |
US5307498A (en) * | 1992-12-04 | 1994-04-26 | International Business Machines Corporation | Automated method for adding hooks to software |
US5408650A (en) * | 1993-06-29 | 1995-04-18 | Digital Equipment Corporation | Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program |
US5539907A (en) * | 1994-03-01 | 1996-07-23 | Digital Equipment Corporation | System for monitoring computer system performance |
US5553286A (en) * | 1994-03-17 | 1996-09-03 | International Business Machines Corporation | System and method for preparing a computer program for execution |
US5533192A (en) * | 1994-04-21 | 1996-07-02 | Apple Computer, Inc. | Computer program debugging system and method |
US5828884A (en) * | 1996-05-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Method for compiling a software program and executing on a system which converts data between different endian formats |
-
1998
- 1998-01-29 US US09/015,256 patent/US6106571A/en not_active Expired - Fee Related
-
1999
- 1999-01-27 DE DE69932371T patent/DE69932371T2/de not_active Expired - Fee Related
- 1999-01-27 AT AT99101489T patent/ATE333677T1/de not_active IP Right Cessation
- 1999-01-27 EP EP99101489A patent/EP0933707B1/en not_active Expired - Lifetime
- 1999-01-29 JP JP02286099A patent/JP4249309B2/ja not_active Expired - Fee Related
-
2005
- 2005-09-07 JP JP2005259199A patent/JP2006012193A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US6106571A (en) | 2000-08-22 |
DE69932371T2 (de) | 2006-11-30 |
JPH11316696A (ja) | 1999-11-16 |
EP0933707A3 (en) | 2004-04-14 |
EP0933707A2 (en) | 1999-08-04 |
ATE333677T1 (de) | 2006-08-15 |
EP0933707B1 (en) | 2006-07-19 |
DE69932371D1 (de) | 2006-08-31 |
JP2006012193A (ja) | 2006-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4249309B2 (ja) | コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ | |
JP4204768B2 (ja) | ユーザに固有のインスツルメンテーションを支援する方法とシステム | |
US5956479A (en) | Demand based generation of symbolic information | |
US8676723B2 (en) | Automated test system based on three-dimensional application software framework and a method thereof | |
US7644394B2 (en) | Object-oriented creation breakpoints | |
US7500149B2 (en) | Generating finite state machines for software systems with asynchronous callbacks | |
US9183114B2 (en) | Error detection on the stack | |
CN101739339A (zh) | 一种基于程序动态依赖关系的软件故障定位方法 | |
JP3699154B2 (ja) | データを自己記述式に符号化するための方法および装置 | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
US7409677B1 (en) | Method and system for creation and use of embedded trace description | |
US20080127061A1 (en) | Method and system for editing code | |
Morgan et al. | Profiling large-scale lazy functional programs | |
US20100281240A1 (en) | Program Code Simulator | |
CN113742215A (zh) | 一种自动配置和调用测试工具进行测试分析的方法及系统 | |
KR20070055988A (ko) | 소프트웨어 프로그램, 그 생성 방법 및 한 쌍의 라이브러리 | |
US20020129336A1 (en) | Automatic symbol table selection in a multi-cell environment | |
JP5269450B2 (ja) | 試験システム及びバックアノテーション方法 | |
CN108614704B (zh) | 代码编译方法及装置 | |
JP2004287869A (ja) | プログラム実行監視装置および方法 | |
JP6812637B2 (ja) | プログラマブルコントローラシステム、その開発支援装置、ターゲット装置 | |
WO2000043886A1 (en) | Instrumentation of calls to routines for which source code is unavailable | |
JP3745968B2 (ja) | 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体 | |
US20040019885A1 (en) | Performance monitoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040720 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040803 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041104 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20041209 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20041209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20041209 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050510 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20050808 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050808 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050907 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050915 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050916 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20051111 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080827 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080901 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081201 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090115 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120123 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130123 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |