JPH11316696A - コンピュ―タプログラムをテストし、デバッグするための再配置可能計測タグ - Google Patents
コンピュ―タプログラムをテストし、デバッグするための再配置可能計測タグInfo
- Publication number
- JPH11316696A JPH11316696A JP11022860A JP2286099A JPH11316696A JP H11316696 A JPH11316696 A JP H11316696A JP 11022860 A JP11022860 A JP 11022860A JP 2286099 A JP2286099 A JP 2286099A JP H11316696 A JPH11316696 A JP H11316696A
- Authority
- JP
- Japan
- Prior art keywords
- tagging
- value
- source code
- variable
- computer program
- 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.)
- Granted
Links
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)
Abstract
グするための再配置可能計測タグを作成すること。 【解決手段】 タグはオフセットとベースを組み合わせ
たものに等しい値をもつ。タグオフセットの値が最初に
判断され、次にタグは計測されるソースコード内の関心
のあるエリアに挿入される。ベース値はコンピュータプ
ログラムのオブジェクトコードがリンクされて実行可能
コードが作られるときセットされる。ベース値は各タグ
が他のどのタグに対してもユニークな値をもつように解
決される。タグ付けステートメントで計測されるソース
コードは2つ以上のコンピュータに置いておくことが可
能である。計測されたソースコードは2つ以上のコンピ
ュータ上でコンパイルすることが可能である。各タグ付
けステートメントに関連づけられたユニークな値は計測
データベースに記録され、計測されたプログラムをその
実行中に容易に観察できる。
Description
ためにコンピュータプログラムを計測することに関し、
さらに具体的にはタグ付けステートメントを使用してコ
ンピュータプログラムを計測することに関する。
ースコード・モジュールが集まって完全なコンピュータ
プログラムを構成しているソースコード・モジュールを
独立に作成することからなっているのが代表的である。
そのあと、これらのソースコード・モジュールはコンパ
イルされ、1つにリンクされて実行可能なコンピュータ
プログラムが作られている。複数のソフトウェア開発者
はこれらのソースコード・モジュールの1つまたは2つ
以上を書いていることがあるので、ソースコード・モジ
ュールまたはそのコンパイル済みバージョンは単一のコ
ンピュータに転送されてからリンクされているのが代表
的である。実行可能コンピュータプログラムが生成され
ると、ソフトウェア開発者は標準のテストとデバッグ手
法を使用してコンピュータプログラムをテストし、デバ
ッグすることができる。
あるため、その結果のコンピュータプログラムは非常に
複雑化することがよくある。コンピュータプログラムを
テストしてからデバッグすることは、どのソフトウェア
開発プロセスにおいても重要なステップであり、これら
のステップは複雑なコンピュータプログラムではますま
す重要になっている。事実、このようにデバッグを行う
こと(つまり、エラーを見つけて訂正すること)はコン
ピュータプログラムの最終ユーザが受領する前の契約上
の要件となっている場合さえある。コンピュータプログ
ラムをテストし、デバッグする難しさは、プログラムが
複雑化すると共に増加するのが一般的であり、このこと
は驚く程のことではない。また、複雑なコンピュータプ
ログラムをテストするときの困難性はソフトウェア開発
者が多くなると増加することがよくある。
き、ソフトウェア開発者は各ソースコード・モジュール
が相互に独立して、その意図する機能を正しく実行する
かを確かめる共に、すべてのソースコード・モジュール
を含んでいるコンピュータプログラムもその意図する機
能を正しく実行するかを確かめる必要があるのが一般的
である。コンピュータプログラムを正しくデバッグする
ためには、ソフトウェア開発者はコンピュータプログラ
ムの実行をトレース(追跡)する必要があるのが代表的
である。実行をトレースすると、コンピュータプログラ
ムのどのステップが実行されたか、さらに、これらのス
テップが実行された順序を正確に知ることができる。
り当てステートメント、つまり、「タグ」を各所のタグ
付けポイントでコンピュータプログラムのソースコード
・モジュールの中に挿入してから、そのソースコード・
モジュールをコンパイルすることからなっているのが代
表的である。タグ付けポイントとは、機能への入口点や
出口点、選択ステートメントの代替ブランチ、およびル
ープ・ステートメントの実行といったように、ソフトウ
ェア開発者がその実行中にコンピュータプログラムのス
テート(状態)を知りたいと思っている、ソースコード
・モジュール内の関心のある場所のことである。各タグ
付けポイントで、タグ付け割り当てステートメントはタ
グ付け変数にユニークな値を割り当てているのが代表的
である。計測データベース (instrumentation database
- "IDB") は各タグ付けポイントでタグ付け変数に割り
当てられたタグ付け値のような、タグ付けポイントに関
するデータ、およびタグ付けポイントでのソースコード
・モジュールに関する情報を収めている。
れたコンピュータプログラムを実行し、タグ付け変数の
現在値をモニタしながらコンピュータプログラムの実行
をトレースすることができる。コンピュータプログラム
の実行中に得られたタグ付け値をセーブしておくと、コ
ンピュータプログラムの実行をトレースすることができ
る。コンピュータプログラムが実行されたあと、これら
のタグ付け値を参照すると、コンピュータプログラム内
のタグ付けポイントを知ることができる。従って、タグ
はコンピュータプログラムの特定のフラグメント(断
片)の実行を知る手段となっている。
「値別 (by value)」方式を使用して実行できるのが代
表的である。アドレス別計測方式では、ユニークなアド
レスをもつユニークなメモリ・ロケーションは各タグ付
けポイント用に予約されており、タグ付けステートメン
トはタグ付け値をそのユニークなロケーションにストア
している。例えば、単一のタグ付け値が使用でき、その
タグ付け値がユニークなロケーションに書かれていれ
ば、ソフトウェア開発者はコンピュータプログラム内の
対応するタグ付けポイントが実行されたと推量すること
ができる。値別計測方式では、異なるタグ付け値が単一
のメモリ・ロケーションに書かれ、そのロケーション自
体ではなく、そのロケーションに書かれたタグ付け値が
コンピュータプログラム内の特定のタグ付けポイントに
対応している。専用プローブはこれらのタグ付け値をイ
ンターセプトし、それらをファイルに書くのが一般であ
るので、ソフトウエア開発者はそれを調べて、コンピュ
ータプログラムをデバッグするときのツールとして使用
することができる。
・モジュールの例を示したものである。ソースコード・
モジュール1は、表1に示すように、変数”A”への2
つの変数割り当てステートメント(In.4 と In.8)、"Whi
le" ループ(In.5)、関数コール(In.7)、および "if-the
n-else" ステートメント(Ins.10-16) の擬似コードを含
んでいる。ソースコード・モジュール1はタグを含んで
いないので、その実行可能コードはタグ付け値を発行し
ない(つまり、タグ付け割り当てステートメントを実行
しない)。従って、ソフトウェア開発者はソースコード
・モジュール1の発行タグ付け値の参照テーブルにアク
セスできないので、例えば、"function!" (In.7) がこ
のソースコード・モジュールによって実行されたかどう
かを確かめることができない。
た後のソースコード・モジュール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"
がストアされていれば、ソフトウェア開発者は "functi
on 1" が実行されたと推量することができ、"0" がスト
アされていなければ、ソフトウェア開発者は "function
1" が実行されなかったと推量することができる。
される代表的なモニタリングシステムを示す図である。
コンピュータプログラムがタグ付け割り当てステートメ
ントで計測されると、専用テスト機器はコンピュータプ
ログラムの実行をモニタする。コンピュータプログラム
がCPU 100内で実行されているとき、専用ハード
ウェア103はメモリ102内の特定のロケーションへ
のライト(write) を検出する。値別計測方式では、この
専用ハードウェアはタグ付け変数のアドレスを知ってい
る。コンピュータプログラムが実行されているとき、デ
ータはアドレス・データバス101を通してCPUとメ
モリの間で受け渡しされる。プローブ105はアドレス
バスをモニタし、タグ付け変数のアドレス・ロケーショ
ンへのデータ・ライトを探し出す。プローブはタグ付け
変数へのライトを見つけると、プローブはデータバス・
コネクション104からタグ付け値をコピーする。その
あと、プローブはタイムスタンプをタグ付け値に付けて
から、タグ付け値をコネクション106経由でデータリ
ダクション・プロセッサ (data reduction processor)
107に渡す。データリダクション・プロセッサはどの
タグ付けポイントが追加処理が必要であるかを判断す
る。例えば、データリダクション・プロセッサは関数入
口と出口タグ付け変数をペアにし、タイムスタンプの差
を計算してそれぞれの関数の実行中に消費された時間量
を判断できるようにする。そのあと、データリダクショ
ン・プロセッサはレポートを作成するが、このレポート
には、タグ付け値とそれぞれのタイムスタンプのリス
ト、「パフォーマンス」統計と共にタグ付け値で示され
た実行済み関数のリストおよびその実行を示す実行済み
タグ付け値の圧縮リスト(例えば、「カバレッジマッ
プ」)を含めることが可能である。また、このレポート
には、他の情報を含めることもできる。データリダクシ
ョン・プロセッサはこのレポートをワークステーション
に転送し、そこからレポートはグラフィカルユーザイン
タフェース (graphical user interface - "GUI") 10
8に渡される。GUI 108はデータリダクション・
プロセッサからのレポートに入っている、タグ付け値に
対応するタグ付けポイントを、IDB 109にストア
されているデータを使用して判別する。そのあと、GU
I 108は実行のフローを示すタグ付けポイントの判
別のほかに、追加情報を含めることができる複数のレポ
ートのどれかを作成する。レポートされる各タグ付けポ
イントに頻繁に付加される追加情報としては、タグ付け
割り当てステートメントがそこから実行されたソースコ
ード・モジュールの名前、タグ付け割り当てステートメ
ントを含んでいる関数の開始と終了の行番号、およびタ
グ付けポイントの性質を示す他の情報がある。ソフトウ
ェア開発者はGUIからの実行トレースレポートをモニ
タして、コンピュータプログラムが期待パラメータの範
囲内で実行されているかどうかを判断する。
にタグ付け値を出すためには、そのコンピュータプログ
ラムは、まず、タグ付け割り当てステートメントを備え
ていなければならない。インスツルメンタはタグ付け割
り当てステートメントを、ソースコード・モジュールの
コンパイルに先立って行われる計測パス期間にコンピュ
ータプログラムのソースコード・モジュールに挿入する
のが普通である。値別タグ付け方式を使用するときは、
タグ付け割り当てステートメントは "AMC control port
= 0x12345678"のように単純形式になっているのが通常
で、そこでは、モニタされたタグ付け変数 "AMC contro
l port" はユニークなタグ付け値 "0x12345678" が割り
当てられている。図2はタグ付け値形式の例を示してい
る。この例では、値は32ビットの整数になっている。
計測パス期間に、インスツルメンタは挿入されたタグの
各々のロケーションに関する関係情報を記録し、この情
報は実行期間中のコンピュータプログラムの挙動を解釈
するためにあとで使用することができる。上述したよう
に、プローブはタグ付け変数が書かれるアドレスをモニ
タする。例えば、特定のタグが"read data" と名づけた
関数への入口を表しているとすると、実行時にコンピュ
ータプログラムがこのタグで割り当てられた特定のタグ
付け値を発行していれば、ソフトウェア開発者はコンピ
ュータプログラムが関数"read data" への入口にあるス
テートメントで実行されたものと推量することができ
る。
ラムを表すソースコード・モジュールは最初にコンパイ
ラのプリプロセッサによって前処理されている。このプ
リプロセッサはマクロを展開し、コメントを除去し、イ
ンクルードファイルを展開している。そのあと、インス
ツルメンタはこれらの前処理されたソースコート・モジ
ュールを受け取り、タグ付け割当ステートメントを追加
している。コンパイラは計測されたソースコード・モジ
ュールからオブジェクトコードを生成し、そのあとリン
カはオブジェクトコードを結合して実行可能コードを作
っている。
コード・モジュールが同時に計測されるときは、インス
ツルメンタは各タグ付けポイントにユニークなタグ付け
値を割り当てることができる。しかし、種々のソースコ
ード・モジュールが(例えば、異なるソフトウェア開発
者によって)異なる時間に計測され、コンパイルされる
場合は、問題が発生することになる。具体的には、イン
スツルメンタは2つの異なるタグ付けポイントで同じタ
グ付け値を割り当てることがある。その結果、コンパイ
ラがこのタグ付け値を出したとき、これはタグ付けポイ
ントをユニークに識別していないので、ソフトウェア開
発者は実行フローをトレースすることが困難になる場合
がある。
ド・モジュール1を示し、表4は計測されたソースコー
ド・モジュール2を示している。これらのソースコード
・モジュールはどちらも、異なる時間期間で計測を行う
と起こるように、他方に割り当てられたタグ付け値を無
視して計測されている。従って、これらのソースコード
・モジュールの両方を含んでいるコンピュータプログラ
ムが、例えば、実行中に値が"0" であるタグを出したと
すると、ソフトウェア開発者はプログラムがソースコー
ド・モジュール1の function 1 (In. 8) へのコールを
実行したのか、あるいはプログラムがソースコード・モ
ジュール2の "if" ステートメント(In.6) を実行した
のか分からないことになる。実際には、ソースコード・
モジュール1は10個のタグ付け値をソースコード・モ
ジュール2と共有している。従って、コンピュータプロ
グラムの実行中に出されたどのタグも、それがソースコ
ード・モジュール1で出されたものかを確認することが
できず、10番目のタグに続く、ソースコード・モジュ
ール2内のタグだけがユニークな値を出すことになる。
メンタは、これから生成されるコンピュータプログラム
のバージョンでも使用される、コンピュータプログラム
の以前バージョンからソースコード・モジュールに対し
て生成されたIDBを参照するためのメソッドを用意し
ている。ソースコード・モジュールがコンピュータプロ
グラムの以前バージョン以後に変更されていなければ、
計測プロセスは変更されなかったソースコード・モジュ
ールを再計測しないことで効率化されている。しかし、
コンピュータプログラムの新バージョンの計測プロシー
ジャで割り当てられたタグ付け値がそのコンピュータプ
ログラムの新バージョンでも使用される、コンピュータ
プログラムの以前バージョンで割り当てられたタグ付け
値と矛盾していないことを確かめる注意が必要である。
たこの効率化された増分計測プロシージャをサポートし
ている。このアプローチでは、変更されたソースコード
・モジュールが1つだけであれば、そのソースコード・
モジュールだけを再計測し、コンパイルするだけでコン
ピュータプログラム全体をリンクし直している。しか
し、これらの従来システムには、ソフトウェア開発者が
開発サイクルのその時点までに割り当てられたすべての
タグ付け値を含んでいるIDBのセットを、インスツル
メンタに指示しなければならないという制約がある。構
成マネージャがソフトウェア開発者と協力してソースコ
ード・モジュールの制御を調整しているような集中化コ
ンパイル環境では、この制約はそれほど制限的ではな
い。このような集中化環境のソフトウェア開発者は制御
化されたプロシージャでソースコード・モジュール、オ
ブジェクトコード・ファイル、およびIDBの特定バー
ジョンを見つけることができるので、コンピュータプロ
グラムの以前バージョンからのIDBを識別することは
比較的簡単であることが想像される。しかし、このメカ
ニズムは最近の多くのソフトウェア開発プロジェクトの
典型である、大規模な非集中化環境では挫折している。
ソフトウェア開発者グループが分散化すると、各グルー
プは多数のプロジェクトで、あるいは同一プロジェクト
に属する種々ソフトウェア開発者グループのために使用
されるオブジェクトコードのダイナミックリンクライブ
ラリまたはコンパイルライブラリの構築を担当すること
になる。コンピュータ・プログラムの新バージョンの作
成に対する制御が集中化されていないと、これらのライ
ブラリの各々は独立に計測されることになるので、イン
スツルメンタによって割り当てられたタグ付け値に矛盾
が起こることになる。実行時には、これらの矛盾するタ
グ付け値は、同一タグ付け値が複数のソースコード・モ
ジュールを指すことがあるため分析プロセスを混乱さ
せ、また、コンピュータプログラムのモニタリングツー
ルはどのタグ付け値がどのソースコード・モジュールを
表しているのかが分からなくなる。
ュータプログラムのバージョンのパラレル作成をサポー
トしていない。最近のソフトウェアプロジェクトは非常
に大規模であることが頻繁であるために、コンピュータ
プログラムのコンパイルとリンクを1台のマシンで行う
ことは実用目的に合っていない。ネットワーク環境で
は、コンパイルプロセスは多くのマシンに分散されてい
るので、これらのマシンがソースコード・モジュールを
パラレルにコンパイルすることが可能で、コンパイルは
全時間の数分の1で完了し、代表例として全時間の1/
n(ただし、nはコンパイルに関与するマシンの台数)
で完了している。従って、コンピュータプログラムのあ
るバージョンが1000個のソースコード・モジュール
からなり、ソースコード・モジュールの100個が10
台のマシンでコンパイルされるとすれば、開発者はコン
パイルが行われる10台のマシンの各々でも計測を行う
必要がある。タグ付け値の解決がこれらのマシン間で正
しく調整されていないと、その結果のコンピュータプロ
グラムは種々のソースコード・モジュールに挿入された
タグ付け値に無数の矛盾を含むことになる。
のソースコード・モジュールからなるコンピュータプロ
グラムを、タグ付け割り当てステートメントを使用して
計測する方法およびシステムを提供している。各タグ付
け割り当てステートメントにおけるタグ付け変数のユニ
ークな値は、オフセット値とベース値を組み合わせたも
のに等しい値をタグ付け変数に割り当てることによって
得られる。本発明のオフセット・タグ付けインスツルメ
ンタはタグ付け割り当てステートメントで計測しようと
する各ソースコード・モジュールごとにユニークなベー
ス変数を生成する。そのあと、オフセット・タグ付けイ
ンスツルメンタはソースコード・モジュールを調べ、計
測ポイントの個所にタグ付け割り当てステートメントを
挿入する。挿入されたタグ付け割り当てステートメント
はオフセット値と、そのソースコード・モジュールの生
成されたベース変数とを組み合わせたものに等しい値に
タグ付け変数をセットする。オフセット・タグ付けイン
スツルメンタは、ソースコード・モジュール内の各タグ
付け割り当てステートメントごとにユニークなオフセッ
ト値を生成する。コンパイラは計測されたソースコード
・モジュールからオブジェクトコードを生成する。ベー
ス値リゾルバは、生成されたオフセット値と生成された
ベース変数の値の各組み合わせが各計測ポイントをユニ
ークに識別するように、各生成されたベース変数ごとに
ユニークな値を割り当てるソースコード・ステートメン
トを生成する。コンパイラは生成されたソースコード・
ステートメントをコンパイルする。リンカはコンパイル
された計測済みソースコード・モジュールをコンパイル
された生成済みソースコード・ステートメントとリンク
し、リンクされたプログラムを作り、このリンクされた
プログラムの実行期間に、タグ付け変数が各計測ポイン
トでユニークな値にセットされるようにする。各生成済
みベース変数のベース値の判断はリンク時まで延期され
るので、ベース値リゾルバは各モジュール内の各タグ付
け割り当てステートメントがタグ付け変数を、リンクさ
れたすべてのモジュール間でユニークである値にセット
しているかを確かめることができる。
ンピュータでタグ付けによるパラレル計測をサポートす
る計測タグ付け方法および装置が提供されている。本発
明の実施例によれば、タグ付け値が以前に計測されたソ
ースコード・モジュールと、または異なるコンピュータ
システムで計測されたソースコード・モジュールと矛盾
することなく、1つまたは2つ以上の変更されたソース
コード・モジュールの計測を可能にするオフセット・タ
グ付けインスツルメンタが提供されている。従来のタグ
付け割り当てステートメントを修正すれば、これらの計
測機能を拡張することが可能である。
は、タグ付け値をタグ付けポイントに実際に関連づける
のを、計測されたプログラムが実行されるまで延期する
ことによって各タグ付けポイントにユニークなタグ付け
値が割り当てられることを確かめる。オフセット・タグ
付けインスツルメンタは、タグ付けベース変数とタグ付
けオフセットを組み合わせてタグ付け変数のタグ付け値
を作るようにするタグ付け割り当てステートメントを採
用している。各ソースコード・モジュールはユニークな
タグ付けベース変数をもち、各タグ付けポイントはソー
スコード・モジュール内でユニークであるタグ付けオフ
セット値をもっている。計測時に、オフセット・タグ付
けインスツルメンタは一定のタグ付けオフセット値をソ
ースコード・モジュールのベース変数と組み合わせるタ
グ付け割り当てステートメントを挿入する。リンク時
に、タグ付けベース値リゾルバは各タグ付けベース変数
ごとにユニークなベース値を生成し、各タグ付け割り当
てステートメントがユニークなタグ付け値を生成するよ
うにする。そのあと、タグ付けベース値リゾルバは各タ
グ付け変数をそのユニークな値に初期化することを実行
する。実行時に、タグ付け割り当てステートメントが実
行されると、ソースコード・モジュールのタグ付けベー
ス変数に割り当てられた値はタグ付け割り当てステート
メントに割り当てられた一定のタグ付けオフセット値と
組み合わされて、全モジュール間でユニークであるタグ
付け値が作られる。そのあと、タグ付け変数はユニーク
なタグ付け値に等しい値にセットされる。このようにす
ると、異なる時間に計測されるソースコード・モジュー
ルはタグ値に矛盾を引き起こすことなく、ひとつにリン
クすることができる。これらのタグ付け割り当てステー
トメントがリンク時「再配置可能」と呼ばれるのは、特
定のステートメントに割り当てられたタグ付け値の範囲
がリンク時に変化することがあるためである。
ト値とタグ付けベース変数の値を組み合わせたものであ
る。一実施例では、各ソースコード・モジュールのオフ
セット値は"0" の値で始まっている。そのあと、オフセ
ット・タグ付けインスツルメンタは、オフセット・タグ
付けインスツルメンタが新しいタグ付け割り当てステー
トメントをソースコード・モジュールに追加するたび
に、タグ付けオフセット値を1ずつインクリメントして
いく。従って、10個のタグ付け割り当てステートメン
トを含んでいるソースコード・モジュールは0から9ま
でのタグ付け値の範囲と次のタグ付けオフセット値10
をもつことになる。次のタグ付けオフセット値は別のタ
グ付け割り当てステートメントをソースコード・モジュ
ールに挿入する必要が起こったとき使用されるタグ付け
オフセット値を示している。各ソースコード・モジュー
ルはユニークなベース変数をもっている。一実施例で
は、リンク時に判断されるときの、第1モジュールのタ
グ付けベース変数の値は0になっている。第2モジュー
ルのタグ付けベース変数の値は第1モジュールの次のタ
グ付けオフセット値に第1モジュールのタグ付けベース
値を加えたものである。例えば、第1モジュールの次の
タグ付けオフセット値が10であれば、第2モジュール
のタグ付けベース値は10(つまり、10 + 0)の値をも
つことになる。第3モジュールのタグ付けベース変数の
値は第2モジュールの次のタグ付けオフセット値に第2
モジュールのタグ付けベース値を加えたものである。例
えば、第2モジュールの次のタグ付けオフセット値が1
2であれば、第3モジュールのタグ付けベース値は22
(つまり、12 + 10)である。それ以降のモジュールのタ
グ付けベース値は先行モジュールの次のタグ付けオフセ
ット値の和に等しく、これは先行モジュールのベース値
と次のタグ付けオフセット値の和と等価である。このよ
うにすると、結果のタグ付け値はタグ付けオフセット値
がタグ付けベース変数の値に加えられるとき、各タグ付
け割り当てステートメントごとにユニークになる。図3
はリンク時再配置可能タグ付け値の生成を示している。
サンプルを示す図である。これらのIDBはタグ付け値
および計測に必要な他の情報を収めている。各IDBは
1つのソースコード・モジュールを表すことができる。
IDB1 301は計測されたソースコード・モジュー
ルのタグ付けポイント0から9までを表すデータを収め
ている。IDB1はタグ付けベース変数をもち、その値
はタグ付けベース変数リゾルバによってリンク時に設定
され、0になっており、さらに次のタグ付けオフセット
値10をもっている。IDBはタグ付けベース変数の名
前を含んでいるので、タグ付けベース変数レゾルバはあ
るタグ付けベース変数に関連するIDBを見つけること
ができ、このタグ付けベース変数はIDBがリンク時再
配置可能タグを含むタイプであることを示すのに役立っ
ている。オフセット・タグ付けインスツルメンタはタグ
付けポイントのデータと次のタグ付けオフセット値をス
トアする。同様に、IDB2 302は12個のタグ付
けポイントを表すデータと次のタグ付けオフセット値1
2を収めている。IDB2は次のタグ付けオフセット値
10をもっているので、タグ付けベース値リゾルバによ
って最終的にIDB2に割り当てられたタグ付けベース
変数の値は10になっている。同様に、IDB3 30
3のタグ付けベース値が22であるのは、IDB1の次
のタグ付けオフセット値が10であり、IDB2の次の
タグ付けオフセット値が12であるためである(例え
ば、0から21までのユニークな値はIDB1とIDB
2ではすでに選択されている)。もちろん、前述したよ
うに、タグ付けベース値はそれぞれのオブジェクトコー
ド・モジュールがリンクされて実行可能コードが作られ
るまでは生成されず、ユニークなタグ付け値自体は各タ
グ付け割り当てステートメントが実行されるまでは実際
には生成されない。さらに、本発明のいくかの実施例で
は、2つ以上のタグ付けベース変数を任意のIDBにス
トアすることが可能であり、各タグ付けベース変数は異
なるタイプのタグ付けステートメントを示している。し
かし、このようなタグ付け方式はここで説明している方
式を単に拡張したものにすぎない。
スコード・モジュール1、2、および3を示しており、
これらはそれぞれ図4のIDB1、IDB2およびID
B3に対応している。表5において計測されたソースコ
ード・モジュールを表す擬似コードの先頭に示すよう
に、オフセット・タグ付けインスツルメンタはタグ付け
変数の宣言ステートメントを挿入しており、その宣言ス
テートメントは、この例では、"AMC control port" (I
n. 3)と名づけた external volatile unsigned long変
数になっている。オフセット・タグ付けインスツルメン
タはIDB1とソースコード・モジュール1に関連づけ
られたタグ付けベース変数である、"IDB1 base" (In.
4) の宣言も挿入している。そのあと、オフセット・タ
グ付けインスツルメンタはソースコード・モジュールを
調べ、9行目のように関心のあるポイントにタグ付け割
り当てステートメントを挿入する。この特定タグ付け割
り当てステートメントはfunction 1 (In. 10) へのコー
ルが実行されることをソフトウェア開発者に警告する。
オフセット・タグ付けインスルメンタによって挿入され
たタグ付け割り当てステートメントはタグ付けベース変
数値にタグ付けオフセット値を加えたものからなり、 "
AMC control port =タグ付けベース変数 + 0x1234567
8" と類似の形式になっている。オフセット・タグ付け
インスツルメンタはその終わりに到達するまで、このソ
ースコード・モジュール内の関心のあるタグ付けポイン
トを継続する。表5に示すように、ソースコード・モジ
ュール内の最後のタグ付けポイントはそのソースコード
・モジュールの終わりに置かれており、タグ付け値 UDB
1 baseにタグ付けオフセット値9 (In. 27)を加えた値
をもつタグ付け割り当てステートメントによって表され
ている。オフセット・タグ付けインスツルメンタはこれ
らのタグ付け割り当てステートメントに関係するデータ
も、前述したようにIDB1に挿入する。
ール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. 2
2) である。オフセット・タグ付けインスツルメンタ
は、ソースコード・モジュール2がタグ付け割り当てス
テートメント0から11までと次のタグ付けオフセット
値12をもつことを示すデータをIDB2にストアす
る。
メンタは表7に示すソースコード・モジュール3を調べ
る。前の2ソースコード・モジュールと同じように、オ
フセット・タグ付けインスツルメンタは"AMC control p
ort"変数 (In. 3) の宣言を挿入する。オフセット・タ
グ付けインスツルメンタはタグ付け変数 "IDB2 base"(I
n. 4) の宣言も挿入する。そのあと、オフセット・タグ
付けインスツルメンタはタグ付け割り当てステートメン
トの使用によって、このソースコード・モジュール内の
関心のあるタグ付けポイントを継続する。最後のタグ付
け割り当てステートメント "AMC control port = IDB3
base + 6"(In. 10) はソースコード・モジュール3の終
わりに置かれている。
・モジュールの計測のためのフローチャートを示してい
る。オフセット・タグ付けインスツルメンタは各ソース
コード・モジュールを選択し、宣言ステートメントとタ
グ付け割り当てステートメントを選択したモジュールに
挿入し、データをIDBにストアする。最初に、オフセ
ット・タグ付けインスツルメンタは計測を必要とするソ
ースコード・モジュールがまだ残っているかどうかを判
断する(ステップ401)。計測を必要とするソースコ
ード・モジュールが残っていなければ、オフセット・タ
グ付けインスツルメンタは終了する。しかし、計測を必
要とするソースコード・モジュールがまだ残っていれ
ば、オフセット・タグ付けインスツルメンタは次に計測
するソースコード・モジュールを選択する(ステップ4
02)。次に、オフセット・タグ付けインスツルメンタ
はタグ付けオフセット値を0にリセットする(ステップ
403)。オフセット・タグ付けインスツルメンタは新
しい計測データベースをオープンし、その新IDBの名
前を選択する(ステップ404)。また、オフセット・
タグ付けインスツルメンタはこの選択した名前を使用し
て、計測すべきソースコード・モジュールに挿入する新
しいタグ付けベース変数の名前を生成する。そのあと、
オフセット・タグ付けインスツルメンタはソースコード
・モジュールを調べることを開始する(ステップ405
〜411)。オフセット・タグ付けインスツルメンタは
タグ付変数の宣言をソースコード・モジュールに挿入し
(ステップ405)、そのあと、このソースコード・モ
ジュールのタグ付けベース変数の宣言を挿入する(ステ
ップ406)。これらの宣言はAMC control port、IDB1
ba se、IDB2 base 、およびIDB3 base の表5、表6、
および表7に示す宣言に似ている。そのあと、オフセッ
ト・タグ付けインスツルメンタはループし、タグ付け割
り当てステートメントを挿入する(ステップ407〜4
11)。オフセット・タグ付けインスツルメンタはタグ
付けポイントがソースコード・モジュールに残っている
かどうかを判断する(ステップ407)。タグ付けポイ
ントが残っていれば、オフセット・タグ付けインスツル
メンタはソースコード・モジュール内の次のタグ付けポ
イントを見つける(ステップ408)。次のタグ付けポ
イントを見つけると、オフセット・タグ付けインスツル
メンタはタグ付け割り当てステートメントを挿入する
(ステップ409)。このタグ付け割り当てステートメ
ントは前述したように、"AMC control base = タグ付け
ベース変数プラス現タグ付けオフセット値" の形式にな
っているのが代表的である。さらに、タグ付けエントリ
が該当のIDBに作られる(ステップ411)。このタ
グ付けエントリはそのタグ付けポイントのタグ付けオフ
セット値、タグ付けポイントでのソースコードの情報、
およびインクリメントされたオフセットへの次のタグ付
けオフセット値のセット状態を収めているのが普通であ
る。そのあと、オフセット・タグ付けインスツルメンタ
はループし(ステップ407へ)、次のタグ付けオフセ
ットを処理する。このソースコード・オブジェクトの計
測を終えると、このソースコード・モジュールのIDB
はクローズされる(ステップ412)。そのあと、オフ
セット・タグ付けインスツルメンタはループし(ステッ
プ401へ)、計測の必要があるソースコード・モジュ
ールがほかにあるかどうかを判断する。
測プロシージャ期間または計測されたソースコード・モ
ジュールのコンパイル時に値が割り当てられていない。
タグ付けベース変数の値はリンク時に割り当てられるの
で、リンク・プロシージャだけを集中化する必要があ
る。従って、このプロシージャはコンピュータプログラ
ムの新バージョンの代表的パラレルコンパイルをサポー
トしている。実行可能コンピュータプログラムをリンク
するのと同じように、一実施例における計測リンカはタ
グ付けベース値リゾルバを含んでおり、このリゾルバは
最終タグ付け値の間に矛盾が残らないように、各タグ付
けベース変数に必要な値と各オブジェクトコード・ファ
イルが必要とするタグ付け値範囲を解決する。このプロ
セスはパラレルにコンパイルできる数千のソースコード
・モジュールを含む巨大なコンピュータプログラムの計
測をサポートするので、大量の時間が節減される。オブ
ジェクトコード・ファイルのリンクが単一コンピュータ
で行われるときは、コンピュータプログラムの実行時に
割り当てられる実際のタグ付け値を最終化する計測リン
クプロセスも同じである。従って、変数 IDB1 base、ID
B2 base およびIDB3 base は、図4および表5、表6、
表7を参照して上述したように、コンピュータプログラ
ムを表すオブジェクトコード・ファイルのリンク前は固
定した値をもっていない。表8に示すように、計測リン
カは解決されたタグ付けベース変数のソースコード・ス
テートメントを準備し、これはそのあとコンパイルさ
れ、計測されたソースコード・モジュールのオブジェク
トコード・ファイルとリンクされる。表8に示すよう
に、計測リンカはIDB1のタグ付けベース変数 IDB1
baseを0の値(In. 3) にセットするソースコードを準備
する。同様に、IDB2のタグ付けベース変数 (IDB2 b
ase)は値が10 (In. 5) になり、IDB3のタグ付け
ベース変数 (IDB3 base)は値が22 (In. 7) になる。
グ付け値を回避することができる。この機能はそのいく
つかを以下で説明するが、さまざまな異なるコンテキス
トでソフトウェア開発者のために計測プロセスを単純化
する。
に変化しない多数のソースコード・モジュールを含むこ
とが可能であり、この中には、ソースコード・モジュー
ルライブラリなどの形態のレガシコードが含まれる。
(レガシコードには、タグ付け変数を定数値にセット
し、従ってリンク時再配置可能タグ付け値の使用と互換
性のないタグ付け割り当てステートメントで計測された
コードが含まれる。)計測プロシージャはソースコード
・モジュールが変更されない限り、ソフトウェア開発者
がそのモジュールを一度計測するだけで済むならば、よ
り効率的になることは明らかである。
・タグ付けインスツルメンタを使用して計測されていな
いソースコード・モジュールのためにある範囲のタグ付
け値を残しておきたい場合がある。例えば、ソフトウェ
ア開発者は特にエラーを起こしやすいソースコード・モ
ジュールを手作業で計測し、オフセット・タグ付けイン
スツルメンタで通常挿入されるよりも、はるかに多いタ
グ付け割り当てステートメントを挿入することを望んで
いる場合がある。そのような場合には、ソフトウェア開
発者は挿入されたタグ付け割り当てステートメントに値
を割り当てるだけにしておき、そのタグ付け値がそのコ
ンピュータプログラムの他のソースコード・モジュール
のために解決されるとき、その範囲のタグ付け値を避け
るようにタグ付けベース値リゾルバに指示することがで
きる。
ールはコンピュータプログラムのあるバージョンから次
のバージョンまでに変更されないことがある。これらの
ソースコード・モジュールは以前に計測されたことがあ
り、それぞれのタグ付け値はまだユニークである場合が
ある。従って、ソフトウェア開発者はこれらの以前に計
測され、現在未変更であるソースコード・モジュールに
割り当てられた範囲のタグ付け値を残しておき、変更さ
れた後でコンピュータプログラムの最新バージョンで再
計測されたソースコード・モジュールだけの新タグ付け
値を判断するようにタグ付けベース値リゾルバに指示す
るだけで、より効率的なアクションコースがとれること
を望んでいる場合がある。
ログラムのあるバージョンでの次のタグ付けオフセット
値を、追加のタグ付け割り当てステートメントがタグ付
けベース変数の再計算を必要としないで、コンピュータ
プログラムの以後のバージョンで挿入できるようにセッ
トするようにすると、さらに改善することができる。例
えば、表5を参照して上述したように、計測されたソー
スコード・モジュール1の次のタグ付けオフセット値は
10までの値にセットすると、ユニークなタグ付け値が
保証されることになる。しかし、計測されたソースコー
ド・モジュール1の次のタグ付けオフセット値が10で
なく、12にセットされていれば、2つの追加タグ付け
割り当てステートメントを、どのベース変数(例えば、
IDB2 base)の再計算も必要としないでコンピュータプロ
グラムの以後のバージョンでソースコード・モジュール
に追加することが可能になり、しかも、コンピュータプ
ログラムのユニークなタグ付け値が保証されることにな
る。
ンピュータプログラムの第1バージョンのときに、計測
リンカがコンピュータプログラムの計測されたソースコ
ード・モジュールのタグ付けベース変数を判断するだけ
でなく、各タグ付け割り当てステートメントの実際のタ
グ付け値も判断するように構成することができる。(前
述したように、実際のタグ付け値はコンピュータプログ
ラムの実行時に判断されるのが代表的である。)この実
施例では、そのあと計測リンカは、各計測されたソース
コード・モジュールのそれぞれのIDBにその値範囲を
保存しておくといったように、その実際のタグ付け値範
囲を保存しておく。コンピュータプログラムの以後のバ
ージョンの計測プロシージャでは、オフセット・タグ付
けイスツルメンタは各計測されたソースコード・モジュ
ールを調べて、その計測されたソースコード・モジュー
ルがコンピュータプログラムの以前バージョンから変更
されたかどうかを判断する。あるソースコード・モジュ
ールが変更されていなければ、オフセット・タグ付けイ
ンスツルメンタはそのソースコード・モジュールの実際
のタグ付け値範囲をリトリーブし、「タグ付け変数=ベ
ース変数およびタグ付けオフセット値」形式のタグ付け
割り当てステートメントを「タグ付け変数=実際のタグ
付け値」形式のタグ付け割り当てステートメントで置き
換える。未変更のソースコード・モジュールに対してこ
の単純化されたタグ付け割り当てステートメントを使用
すると、それぞれのタグ付け値範囲をコンピュータプロ
グラムの実行時にではなく、コンパイルプロセス時に割
り当てることが可能になる。もちろん、この実施例が正
しく動作するためには、タグ付けベース値リゾルバは予
約されたタグ付け値範囲を受け取って、それぞれのタグ
付け値範囲が予約タグ付け値にオーバラップしないよう
にタグ付けベース変数を解決できなければならない。
タグ付けベース変数値解決プロシージャのフローチャー
トを示す図である。このプロシージャは各モジュールを
選択し、予約値範囲が使用されないようにして、選択し
たモジュールのタグ付けベース変数の値を割り当てる。
最初のステップとして、プロシージャはコンピュータプ
ログラムのこのバージョンで旧IDBがリンクされるか
どうかをチェックする(ステップ501)。このような
旧IDBが存在することはそのタグ付け値がリンク時再
配置可能でない、計測されたソースコード・モジュール
であること表しているのが一般である。上述した理由に
より、これらの旧IDBはすでにタグ付け値が割り当て
られているので、必要なことはそのタグ付け値範囲用に
スペースが予約されることだけである。旧IDBが存在
していれば(ステップ502)、プロシージャはこれら
の旧IDBを選択する(ステップ503)。プロシージ
ャは各IDB用に予約するタグ付け値範囲のレコードを
作成する(ステップ504)。プロシージャは旧IDB
が存在すると、予約フラグ値を真にセットする(ステッ
プ505)。プロシージャはスペースを予約する必要の
ある旧IDBがなくなるまで続行する。必要なスペース
すべてが予約されると、プロシージャは累積タグ付けオ
フセット値をゼロにセットする(ステップ506)。そ
のあと、プロシージャはループして、リンク時再配置可
能タグ付け値を使用する各モジュールごとにタグ付けベ
ース値を割り当てる(ステップ507−516)。プロ
シージャは次の新IDBを選択する(ステップ50
7)。新IDBのすべてがすでに選択されていれば、プ
ロシージャは終了する(ステップ508)。そうでなけ
れば、プロシージャはタグ付けベース変数を累積タグ付
けオフセット値に等しい値セットする(ステップ50
9)。次に、プロシージャはこのIDBの次のタグ付け
オフセット値をリトリーブする(ステップ510)。そ
のあと、プロシージャはタグ付けベース変数の提案値と
このIDBの次のタグ付けオフセット値をチェックし、
その提案タグ付け値範囲が予約タグ付け値のどれかと矛
盾しているかどうかを判断する。もちろん、このステッ
プは予約値フラグが真にセットされたことがなければス
キップすることができる(ステップ511)。提案範囲
に矛盾がなければ、タグ付けベース値リゾルバは提案値
をタグ付けベース変数に割り当てるソースコード・ステ
ートメントを準備する(ステップ514)。タグ付けベ
ース変数のために提案値を使用すると矛盾が起こる場合
は、タグ付けベース値リゾルバはタグ付けベース変数用
に別の値を選択し、このIDB用のタグ付け値範囲が予
約されたタグ付け値範囲と矛盾しないようにする(ステ
ップ513)。タグ付けベース変数用の値が判断される
と、タグ付けベース値リゾルバはそのIDBのタグ付け
値をマスタIDBにストアし、このマスタIDBは最終
的にはコンピュータプログラムのすべてのタグ付け値を
収容することになり、プログラム実行時にワークステー
ションGUI(例えば、図1のワークステーションGU
I)によって参照することができる(ステップ51
5)。次に、プロシージャは累積タグ付けオフセット値
を最後にリトリーブした次のタグ付けオフセット値だけ
インクリメントする(ステップ516)。そのあと、プ
ロシージャはループし(ステップ507へ)次のIDB
を選択する。従って、タグ付けベース値リゾルバはID
Bのすべてからの情報を合体しているマスタIDBを作
成することも可能である。このマスタIDBは旧スタイ
ルのIDBのフォーマットになっている(例えば、タグ
付けベース変数の名前を収めていないIDB)。代替実
施例として、タグ付けベース値リゾルバは値がそのタグ
付けベース変数に割り当てられた後で、各IDB用に旧
スタイルのIDBを作成するが可能である。
す図である。4個のソースコード・モジュール600
a、600b、600c、および600dは計測前のコ
ンピュータプログラムを表している。ソースコード・プ
リプロセッサ601はコメントを取り除き、これらのソ
ースコード・モジュールからのマクロを展開する。オフ
セット・タグ付けインスツルメンタは、次に、ソースコ
ード・モジュールを検査し、図5に示すように該当のタ
グ付けポイントを探し出す。オフセット・タグ付けイン
スツルメンタはその検査プロシージャ期間にIDB 6
03a、603b、603c、および603dを作成す
る。代表例として、オフセット・タグ付けインスツルメ
ンタは図8に示すように、各ソースコード・モジュール
ごとに1つのIDBを作成する。別の例として、複数の
ソースコード・モジュールのデータを1つのIDBにス
トアすることも可能である。オフセット・タグ付けイン
スツルメンタは計測されたソースコード・モジュール6
04も作成する。代替実施例では、オフセット・タグ付
けインスツルメンタは検査された各ソースコード・モジ
ュールごとに計測済みソースコード・モジュールを作成
することもできる。コンパイラ605は計測されたソー
スコードからオブジェクトコードを生成する。リンカ6
06のタグ付けベース値リゾルバは図6および図7に示
すようにタグ付けベース変数の値を判断し、タグ付けベ
ース変数を初期化するソースコード・ステートメントを
生成する。生成されたソースコード・ステートメントは
コンパイルされ、コンパイル済みコードとリンクされて
実行可能コード610が作られる。その結果の実行可能
コード610はコンピュータプログラムをテストするた
めに使用できる。
上のコンピュータで計測され、コンパイルされるようし
た本発明の実施例を示す図である。第1ソースコード・
モジュール701aはコンピューティングマシン1上に
置かれている。オフセット・タグ付けインスツルメンタ
702aはこのソースコードを使用してIDB 704
aとコンパイル済みコード705aを作成する。同じよ
うに、コンピューティングマシン2には、2つのソース
コード・モジュール701bと701cが置かれてい
る。これらのソースコード・モジュールはオフセット・
タグ付けインスツルメンタ702a用に用意されたもの
で、IDB2 704bとIDB3 704cをコンパ
イル済みコード705cと一緒に作成する。同様に、コ
ンピューティングマシン3では、オフセット・タグ付け
インスツルメンタはソースコード・モジュール4 70
1dを使用してIDB4 704dとコンパイル済みコ
ード705cを作成する。コンパイル済みコードを表す
オブジェクトファイルの各々はコンピューティングマシ
ンNに渡される。このコンピューティングマシンNはど
の該当コンピューティングマシンにすることも可能であ
り、前述の3コンピューティングマシンの1つであって
も構わない。同様に、3コンピューティングマシンで作
成されたIDBのすべてはコンピューティングマシンN
に渡される。リンカ710は各コンピューティングマシ
ンで作成されたオブジェクトコードを使用して実行可能
コードを生成する。リンカのタグ付けベース値リゾルバ
は前述したように、IDBで表されたタグ付け値の各々
ごとにタグ付けベース変数の値を解決し、その結果の実
行可能コードがユニークなタグ付け値を含むようにす
る。最後に、図10は本発明の代替実施例を示す図であ
る。オフセット・タグ付けインスツルメンタがIDBを
作成するとき、あらかじめ決めたパッディング範囲を組
み込むことも可能である。IDB 800、801およ
び803は各々がそのようなパッディング範囲が組み込
まれている。このパッディング範囲を使用すると、追加
のタグ付け割り当てステートメントを、そのIDBで表
されたタグ付け値の最大範囲を変更することなく特定の
IDBに組み入れることが可能になる。大きなコンピュ
ータプログラムが以前に計測された種々のソースコード
・モジュールのすべてを含んでいて、ソフトウェア設計
者が最初のソースコード・モジュールに1行分のコード
だけを追加したため、タグ付け割り当てステートメント
が1つ追加されたときは、このIDBと他のすべてのI
DB用のタグ付けベース変数の値は、この新しいタグ付
け割り当てステートメントがパッディング値で与えられ
た範囲内にまだ収まっているので、変更されることがな
い。従って、このプロシージャを使用すると、計測・リ
ンクプロセスが高速化する。
け値の代替実施例を示し、タグ付けオフセット値と連結
されたタグ付けベース変数からなっている。上述したタ
グ付け値はタグ付けベース変数プラスタグ付けオフセッ
ト値を含んでいる。代替実施例では、タグ付け値はタグ
付けオフセット値に連結されたタグ付けベース変数を含
んでいる。例えば、タグ付け値は64ビットにすること
ができる。最初の32ビットはタグ付けオフセット値を
表し、次の32ビットはタグ付けベース変数を表すこと
ができる。この実施例でも、タグ付けオフセット値とタ
グ付けベース変数の値は前述したように判断することが
できる。しかし、前記実施例で上述したように2つの値
を加えるのではなく、2つの値は連結されるようになっ
ている。従って、リンカは各ソースコード・モジュール
にユニークなタグ付けベース値を割り当てるだけでよ
く、これらの値は各ソースコード・モジュール内のタグ
付け割り当てステートメントの数に基づく必要がない。
このようにして作成されたタグ付け値はユニークのまま
であるので、コンピュータプログラマはその結果のコン
ピュータプログラムの実行をトレースすることができ
る。
明の理解を容易にするために特定実施例を説明してきた
が、これらの実施例は本発明の精神と範囲を逸脱しない
限り種々態様に変更することが可能である。例えば、リ
ンカを変更すれば、タグ付け値をリンク時に計算させ、
タグ付け割り当てステートメントでタグ付け変数に割り
当てられるタグ付け値を定数としてストアすることが可
能になる。コンパイラはオブジェクトコード内の各タグ
付け割り当てステートメントのロケーションの標識を出
力することが可能になる。そのあと、リンカは各タグ付
け割り当てステートメント内のユニークな定数値をスト
アし、定数値とタグ付けポイントとのマッピングをID
Bにストアしておくことができる。また、ここで言うモ
ジュールという用語はコンピュータプログラムの任意の
部分を意味し、ここには、完全なソースコード・ファイ
ル、ソースコード・ファイルの一部、関数、プロシージ
ャまたはコンピュータプログラムを形成するその他のス
テートメントの集まりが含まれる。従って、本発明は特
許請求の範囲に記載されている事項にのみ限定されるも
のである。
タグ付け方式に関連する代表的なモニタリングシステム
を示す図である。
付け値を示す図である。
付け値を示す図であり、そこではタグ付け値はタグ付け
ベース変数プラスタグ付けオフセット値から構成されて
いる。
ベースを示す図である。
ルの計測フローチャートを示す図である。
値解決プロシージャのフローチャートである。
値解決プロシージャのフローチャートである。
例を示す図である。
ュータで計測されるようにした本発明の実施例による計
測プロシージャの例を示す図である。
す図である。
値の代替実施例を示す図であり、そこではタグ付け値は
タグ付けオフセットに連結されたタグ付けベース変数か
らなっている。
Claims (22)
- 【請求項1】 コンピュータシステムにおいて複数のソ
ースコード・モジュールからなるコンピュータプログラ
ムを計測する方法であって、該方法は、 各ソースコード・モジュールごとにソースコード・モジ
ュールにユニークである名前をもつベース変数を生成
し、 ソースコード・モジュール内の各計測ポイントごとに、 ソースコード・モジュール内で計測ポイントにユニーク
であるオフセット値を生成し、 タグ付け変数を生成されたオフセット値とベース変数の
値を組み合わせたものにセットするための、タグ付け割
り当てステートメントを計測ポイントの個所に挿入し、 計測されたソースコード・モジュールをコンパイルし、 各生成されたベース変数ごとに、生成されたオフセット
値とベース変数の値を組み合わせたものが各計測ポイン
トをユニークに識別するようにベース変数をユニークな
値にセットするソースコード・ステートメントを生成
し、 生成されたソースコード・ステートメントをコンパイル
し、 コンパイルされた計測済みソースコード・モジュールを
コンパイルされた生成済みソースコード・ステートメン
トとリンクしてリンク済みプログラムを作成し、リンク
済みプログラムの実行中にタグ付け変数が各計測ポイン
トでユニークな値にセットされるようにすることを特徴
とする方法。 - 【請求項2】 請求項1に記載の方法において、生成済
みベース変数のための宣言ステートメントを各ソースコ
ード・モジュール内に挿入することをさらに含み、前記
宣言ステートメントは生成済みベース変数がソースコー
ド・モジュールの外部に定義されていることを示してい
ることを特徴とする方法。 - 【請求項3】 請求項1に記載の方法において、タグ付
け変数のための宣言ステートメントを各ソースコード・
モジュール内に挿入することをさらに含み、前記宣言ス
テートメントはタグ付け変数がソースコード・モジュー
ルの外部に定義されていることを示していることを特徴
とする方法。 - 【請求項4】 請求項1に記載の方法において、生成済
みベース変数の名前を情報データリポジトリにストアす
ることをさらに含むことを特徴とする方法。 - 【請求項5】 請求項1に記載の方法において、ユニー
クな値をベース変数に割り当てることは、各計測ポイン
トでのタグ付け変数のユニークな値があらかじめ決めた
値範囲を回避するように値をベース変数に割り当てるこ
とを含むことを特徴とする方法。 - 【請求項6】 複数のソースコード・モジュールからな
るコンピュータプログラムを複数のタグ付け割り当てス
テートメントで計測するシステムであって、各タグ付け
割り当てステートメントはオフセット値をベース値と組
み合わせることによってタグ付け変数に対してユニーク
な値を指定するためのものであるものにおいて、該シス
テムは、 タグ付け割り当てステートメントをコンピュータプログ
ラムのソースコード・モジュールの中に挿入し、各タグ
付け割り当てステートメントごとにオフセット値を生成
するオフセット・タグ付けインスツルメンタと、 タグ付け変数の値が各タグ付けステートメントでユニー
クになるように、複数のソースコード・モジュールの各
ソースコード・モジュールごとにベース値を生成するベ
ース値リゾルバとを備えたことを特徴とするシステム。 - 【請求項7】 請求項6に記載のシステムにおいて、オ
フセット・タグ付けインスツルメンタは第1コンピュー
タ上に置かれているコンピュータプログラムの第1ソー
スコード・モジュールに少なくとも1つのタグ付け変数
割り当てステートメントを挿入し、第2コンピュータ上
に置かれているコンピュータプログラムの第2ソースコ
ード・モジュールに少なくとも1つの他のタグ付け変数
割り当てステートメントを挿入することを特徴とするシ
ステム。 - 【請求項8】 請求項6に記載のシステムにおいて、タ
グ付けオフセット・インスツルメンタは各タグ付け割り
当てステートメントを計測データレポジトリに格納する
ことを特徴とするシステム。 - 【請求項9】 請求項6に記載のシステムにおいて、ベ
ース値リゾルバはタグ付け変数のための以前に割り当て
られた値範囲をリトリーブし、各タグ付け変数割り当て
ステートメントでのタグ付け変数の値がタグ付け変数の
ための以前に割り当てられた値範囲を回避するようにベ
ース値を判断することを特徴とするシステム。 - 【請求項10】 コンピュータプログラムを計測するた
めに使用されるタグ付け変数のための複数のユニークな
値を生成する方法であって、該方法は、 コンピュータプログラム内の各計測ポイントごとに、タ
グ付け変数をある値にセットするタグ付け割り当てステ
ートメントを挿入し、 挿入されたタグ付け割り当てステートメントと共にコン
ピュータプログラムのオブジェクトコードを生成し、 コンピュータプログラムのオブジェクトコードがリンク
されて実行可能コードが作られたとき、各タグ付け割り
当てステートメントがタグ付け変数をユニークな値にセ
ットするようにコンピュータプログラムを調整すること
を特徴とする方法。 - 【請求項11】 請求項10に記載の方法において、タ
グ付け割り当てステートメントはタグ付けオフセット値
をタグ付けベース値と組み合わせることを特徴とする方
法。 - 【請求項12】 請求項10に記載の方法において、コ
ンピュータプログラムの調整はタグ付けベース値を設定
することを含むことを特徴とする方法。 - 【請求項13】 請求項10に記載の方法において、コ
ンピュータプログラムは複数のモジュールを含み、タグ
付け割り当てステートメントはタグ付けオフセット値を
タグ付けベース値と組み合わせて、その組み合わせが各
計測ポイントをユニークに識別するように値を生成し、
各モジュールのベース値はコンピュータプログラムが調
整されるとき設定されることを特徴とする方法。 - 【請求項14】 請求項10に記載の方法において、タ
グ付け割り当てステートメントはタグ付け変数を定数値
にセットし、コンピュータプログラムの調整は各タグ付
け割り当てステートメントの定数値をユニークな値にセ
ットすることを特徴とする方法。 - 【請求項15】 コンピュータプログラムの複数のソー
スコード・モジュールをタグ付け割り当てステートメン
トで計測し、コンピュータプログラムのテストをサポー
トする方法であって、該方法は、 タグ付け割り当てステートメントのオフセット値をセッ
トし、 セットされたオフセット値とベース値を組み合わせたも
のをタグ付け変数に割り当てるタグ付け割り当てステー
トメントをソースコード・モジュールの中に挿入し、 コンピュータプログラムを表すオブジェクトコードがリ
ンクされて実行可能コードが作られるときタグ付け割り
当てステートメントのベース値をセットすることからな
り、ベース値はタグ付け変数割り当てステートメントの
中のタグ付け変数の値がユニークになるように解決され
ることを特徴とする方法。 - 【請求項16】 請求項15に記載の方法において、各
ソースコード・モジュール内のオフセット値の最高値は
あらかじめ決めた数の新しいタグ付け割り当てステート
メントがあとで挿入できるように十分に大きくセットさ
れ、コンピュータプログラム内のすべてのタグ付け割り
当てステートメントの中のタグ付け変数の値がユニーク
に保たれるようにすることを特徴とする方法。 - 【請求項17】 請求項15に記載の方法において、タ
グ付け割り当てステートメントのオフセット値は計測デ
ータレポジトリに格納されることを特徴とする方法。 - 【請求項18】 コンピュータプログラムを計測するた
めに使用されるタグ付け変数のために複数のユニークな
値をコンピュータシステムに生成させるための命令を収
めているコンピュータ読み取り可能媒体であって、その
計測は、 コンピュータプログラム内の各計測ポイントごとに、タ
グ付け変数をある値にセットするタグ付け割り当てステ
ートメントを挿入し、 挿入されたタグ付け割り当てステートメントと共にコン
ピュータプログラムのオブジェクトコードを生成し、 コンピュータプログラムのオブジェクトコードがリンク
されて実行可能コードが作られるとき、各タグ付け割り
当てステートメントがタグ付け変数をユニークな値にセ
ットするようにコンピュータプログラムを調整すること
によって行われることを特徴とするコンピュータ読み取
り可能媒体。 - 【請求項19】 請求項18に記載のコンピュータ読み
取り可能媒体において、タグ付け割り当てステートメン
トはタグ付けオフセット値をタグ付けベース値と組み合
わせることを特徴とするコンピュータ読み取り可能媒
体。 - 【請求項20】 請求項18に記載のコンピュータ読み
取り可能媒体において、コンピュータプログラムの調整
はタグ付けベース値を設定することを含むことを特徴と
するコンピュータ読み取り可能媒体。 - 【請求項21】 請求項18に記載のコンピュータ読み
取り可能媒体において、コンピュータプログラムは複数
のモジュールを含み、タグ付け割り当てステートメント
はタグ付けオフセット値をタグ付けベース値と組み合わ
せて、その組み合わせが各計測ポイントをユニークに識
別するように値を生成し、各モジュールのベース値はコ
ンピュータプログラムが調整されるとき設定されること
を特徴とするコンピュータ読み取り可能媒体。 - 【請求項22】 請求項18に記載のコンピュータ読み
取り可能媒体において、タグ付け割り当てステートメン
トはタグ付け変数を定数値にセットし、コンピュータプ
ログラムの調整は各タグ付け割り当てステートメントの
定数値をユニークな値にセットすることを特徴とするコ
ンピュータ読み取り可能媒体。
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 true JPH11316696A (ja) | 1999-11-16 |
JP4249309B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877743B2 (en) | 2005-11-11 | 2011-01-25 | Panasonic Corporation | Program translation method and notifying instruction inserting method |
Families Citing this family (47)
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 |
AU2001234042A1 (en) * | 2000-02-14 | 2001-08-20 | Nextnine Ltd. | Support network |
US7409318B2 (en) * | 2000-02-14 | 2008-08-05 | Nextnine Ltd. | Support network |
US7076400B2 (en) * | 2000-02-14 | 2006-07-11 | Nextnine Ltd. | Support network |
US6715141B1 (en) | 2000-06-15 | 2004-03-30 | Bruce Hodge | Multiphase single pass interpreter |
WO2001097027A1 (en) * | 2000-06-15 | 2001-12-20 | 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 |
US7644409B2 (en) * | 2004-06-04 | 2010-01-05 | Sun Microsystems, Inc. | Techniques for accessing a shared resource using an improved synchronization mechanism |
US7594234B1 (en) | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
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 |
US20070250810A1 (en) * | 2006-04-20 | 2007-10-25 | Tittizer Abigail A | Systems and methods for managing data associated with computer code |
US8341604B2 (en) * | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
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 |
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 |
US5062055A (en) * | 1986-09-02 | 1991-10-29 | Digital Equipment Corporation | Data processor performance advisor |
US4849879A (en) * | 1986-09-02 | 1989-07-18 | Digital Equipment Corp | 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 |
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 |
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 |
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
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877743B2 (en) | 2005-11-11 | 2011-01-25 | Panasonic Corporation | Program translation method and notifying instruction inserting method |
US8402445B2 (en) | 2005-11-11 | 2013-03-19 | Panasonic Corporation | Program translation method and notifying instruction inserting method |
Also Published As
Publication number | Publication date |
---|---|
ATE333677T1 (de) | 2006-08-15 |
EP0933707A3 (en) | 2004-04-14 |
EP0933707B1 (en) | 2006-07-19 |
JP4249309B2 (ja) | 2009-04-02 |
US6106571A (en) | 2000-08-22 |
EP0933707A2 (en) | 1999-08-04 |
JP2006012193A (ja) | 2006-01-12 |
DE69932371D1 (de) | 2006-08-31 |
DE69932371T2 (de) | 2006-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4249309B2 (ja) | コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ | |
US6430741B1 (en) | System and method for data coverage analysis of a computer program | |
CN101739339B (zh) | 一种基于程序动态依赖关系的软件故障定位方法 | |
US5987250A (en) | Transparent instrumentation for computer program behavior analysis | |
US7661094B2 (en) | Real-time software diagnostic tracing | |
US5528753A (en) | System and method for enabling stripped object software monitoring in a computer system | |
US8924937B1 (en) | Method and system for generating verification information and tests for software | |
US8060869B1 (en) | Method and system for detecting memory problems in user programs | |
EP1130518A1 (en) | 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 | |
EP0753814A2 (en) | Determining dynamic properties of programs | |
US9183114B2 (en) | Error detection on the stack | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
JPH0855045A (ja) | データを自己記述式に符号化するための方法および装置 | |
US7409677B1 (en) | Method and system for creation and use of embedded trace description | |
US8949103B2 (en) | Program code simulator | |
US20080127061A1 (en) | Method and system for editing code | |
TWI402750B (zh) | 具有軟體程式儲存於其中之電腦可讀取媒體及用以產生軟體程式的方法 | |
CN113742215A (zh) | 一种自动配置和调用测试工具进行测试分析的方法及系统 | |
US20020129336A1 (en) | Automatic symbol table selection in a multi-cell environment | |
JP5269450B2 (ja) | 試験システム及びバックアノテーション方法 | |
CN108614704B (zh) | 代码编译方法及装置 | |
JP2004287869A (ja) | プログラム実行監視装置および方法 | |
EP1151382A1 (en) | Instrumentation of calls to routines for which source code is unavailable | |
JP3745968B2 (ja) | 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体 |
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 | Written amendment |
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 | Written amendment |
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 | Written amendment |
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 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050808 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050907 |
|
A521 | Written amendment |
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 | Written amendment |
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 |